男人插曲女人视频在线

    1. <form id=kyikljXVT><nobr id=kyikljXVT></nobr></form>
      <address id=kyikljXVT><nobr id=kyikljXVT><nobr id=kyikljXVT></nobr></nobr></address>

      Home Download FAQ / Knowledge Base Screenshots Documentation Support Roadmap
      APPLICATION LAYER PROTOCOL FOR THE CITADEL SYSTEM
      -------------------------------------------------
      
      (c) 1995-2025 by the citadel.org development team.    All Rights Reserved.
      This document is provided to you under the terms of the GNU General Public
      License.
      
      
      INTRODUCTION
      ------------
      
      This is a specification of the application layer protocol used by Citadel
      client software to connect to Citadel servers.  It is intended as a resource
      for programmers who intend to develop their own Citadel clients, but it may
      have other uses as well.
      
      Developers will find this protocol refreshingly simple to implement.  Unlike
      over-enginnered XML and IMAP technologies, there is no need to write a
      language parser in order to speak the Citadel protocol.  Data is transmitted
      back and forth in a delimited format that is easy to load into your program's
      own data structures using little more than a string tokenizer.
      
      
      IMPORTANT NOTES TO DEVELOPERS
      -----------------------------
      
      Developers who wish to extend this protocol are strongly encouraged to get in
      touch with the Citadel developers to bring useful changes upstream in a
      standard and published way.
      
      
      CONNECTING TO A SERVER
      ----------------------
      
      The protocols used below the application layer are beyond the scope of this
      document, but we will briefly cover the methodology employed by Citadel.
      
      Citadel offers its client protocol using TCP/IP. It does so via a multithreaded
      server listening on a TCP port. Local connections may also be made using the
      same protocol using Unix domain sockets via citadel.socket.
      
      The port number officially assigned to Citadel by the IANA is 504 / TCP. Since
      our application layer assumes a clean, reliable, sequenced connection, the use
      of UDP would render the server unstable and unusable, so we stick with TCP. 
      
      
      CHARACTER SET
      -------------
      
      The native character set for the Citadel system is UTF-8.  Unless otherwise
      specified, all data elements are expected to be in the UTF-8 character set.
      Specifically, all non-MIME messages should be assumed to be in UTF-8.  MIME
      messages may be in whatever character set is specified by the MIME header, of
      course; however, some clients (such as WebCit) will automatically convert
      messages from other character sets before displaying them.
      
      
      GENERAL INFORMATION ABOUT THE SERVER
      ------------------------------------
      
      The server is connection-oriented and stateful: each client requires its own
      connection to a server process, and when a command is sent, the client must
      read the response, and then transfer data or change modes if necessary.
      
      The application layer is very much like other Internet protocols such as SMTP
      or NNTP. A client program sends one-line commands to the server, and the server
      responds with a three-digit numeric result code followed by a message
      describing what happened. This cycle continues until the end of the session.
      
      Unlike protocols such as FTP, all data transfers occur in-band. This means that
      the same connection that is used for exchange of client/server messages, will
      also be used to transfer data back and forth. (FTP opens a separate connection
      for data transfers.) This keeps protocol administration straightforward, as it
      can traverse firewalls without any special protocol support on the firewall
      except for opening the port number.
      
      
      RESULT CODES
      ------------
      
      The server will respond to all commands with a 3-digit result code, which will
      be the first three characters on the line.  The rest of the line may contain a
      human-readable string explaining what happened.  (Some client software will
      display some of these strings to the user.)
      
      The first digit is the most important. The following codes are defined for this position:
      
        5 (ERROR) means the command did not complete.
        2 (OK) means the command executed successfully.
        3 (MORE_DATA) means the command executed partially.  Usually this means that
          another command needs to be executed to complete the operation.  For
          example, sending the USER command to log in a user usually results in a
          MORE_DATA result code, because the client needs to execute a PASS command
          to send the password and complete the login.
        1 (LISTING_FOLLOWS) means that after the server response, the server will
          output a listing of some sort.  The client **must** read the listing,
          whether it wants to or not.  The end of the listing is signified by the
          string "000" on a line by itself.
        4 (SEND_LISTING) is the opposite of LISTING_FOLLOWS.  It means that the
          client should begin sending a listing of some sort.  The client *must*
          send something, even if it is an empty listing.  Again, the listing ends
          with "000" on a line by itself.
        6 (BINARY_FOLLOWS) means that the client must immediately receive a block of
          binary data.  The first parameter will be the number of bytes to expect.
        7 (SEND_BINARY) means that the client must immediately send a block of
          binary data. The first parameter will always be the number of bytes.
        9 (ASYNC_MESSAGE_FOLLOWS) means that an asynchronous, or unsolicited,
          message follows.  The next line will be one of the above codes, and if a
          data transfer is involved it must be handled immediately.  Note that the
          client will not receive this type of response unless it indicates to the
          server that it is capable of handling them; see the writeup of the ASYN
          command later in this document.
      
      Some of the values which may be returned in the second and third digits are:
      
      02	ASYNC_GEXP		An instant message is waiting to be retrieved.
      10	INTERNAL_ERROR		An internal error occurred.
      11	TOO_BIG			The supplied data will not fit in the allocated
      				space.
      12	ILLEGAL_VALUE		One or more parameters supplied to a command are not
      				within the permitted ranges.
      20	NOT_LOGGED_IN		The client attempted to perform an operation which is only
      				permitted when a user is logged in.
      30	CMD_NOT_SUPPORTED	The client attempted to perform an operation which is
      				defined in the protocol, but not supported by this server instance.
      31	SERVER_SHUTTING_DOWN	A command failed because the server is in the process of shutting down.
      40	PASSWORD_REQUIRED	A command failed because a password is required.
      41	ALREADY_LOGGED_IN	Authentication failed because a user is already logged in.
      42	USERNAME_REQUIRED	The client attempted to perform an operation which requires the
      				specification of a user name.
      50	HIGHER_ACCESS_REQUIRED	The client attempted to perform an operation which requires
      				administrator privileges.
      51	MAX_SESSIONS_EXCEEDED	A login attempt failed because the server is operating at its
      				maximum number of connected sessions.
      52	RESOURCE_BUSY		The client attempted to perform an operation on a locked resource.
      53	RESOURCE_NOT_OPEN	The client attempted to access an object which is not locked yet.
      60	NOT_HERE		The specified command is valid, but is not permitted in the current
      				room.
      61	INVALID_FLOOR_OPERATION	The client attempted to manipulate rooms and/or floors in a way that
      				would break the data model.
      70	NO_SUCH_USER		The user name specified in a command does not exist.
      71	FILE_NOT_FOUND		The file name specified in a command does not exist.
      72	ROOM_NOT_FOUND		The room name specified in a command does not exist.
      73	NO_SUCH_SYSTEM		The network node specified in a command does not exist.
      74	ALREADY_EXISTS		The client attempted to create an object with a name that already
      				refers to an existing object on the system.
      75	MESSAGE_NOT_FOUND	The requested message does not exist in the current room.
      
      
      PARAMETERIZATION
      ----------------
      
      Zero or more parameters may be passed to a command.  When more than one
      parameter is passed to a command, they should be separated by the "|" symbol
      like this:
        SETU 80|24|260
      In this example, we're using the "SETU" command and passing three parameters.
      
      When the server spits out data that has parameters, if more than one parameter
      is returned, they will be separated by the "|" symbol like this:
        200 80|24|260
      In this example, we just executed the "GETU" command, and it returned us an OK
      result code (the '2' in the 200) and three parameters: 80, 24, and 260.
      
      Citadel's data model, and how it influences the protocol
      --------------------------------------------------------
      
      Citadel orders data into containers called Rooms. Its top level folders are
      called Floors, and they may just contain rooms.  Rooms may have a Description
      Text, and an Image file.  Users may invite other Users to view or view and
      create Messages in their Rooms. Citadel supports sharing of rooms between
      different nodes. A user always is known to be 'inside' a room, which is an
      implicit Parameter to most of the commands of the citadel protocol.
      
      
      COMMANDS
      --------
      
      This is a listing of all the commands that a Citadel server can execute.
      
      NOOP   (NO OPeration)
      
      This command does nothing.  It takes no arguments and always returns OK.  It
      is intended primarily for testing and development, but it might also be used
      as a "keep alive" command to prevent the server from timing out, if it's
      running over a transport that needs this type of thing.
      
      QNOP   (Quiet No OPeration)
      
      This command does nothing, similar to the NOOP command.  However, unlike the
      NOOP command, it returns **absolutely no response** at all.  The client has no
      way of knowing that the command executed.  It is intended for sending
      "keepalives" in situations where a full NOOP would cause the client protocol
      to get out of sync.
      
      Naturally, sending this command to a server that doesn't support it is an easy
      way to mess things up.  Therefore, client software should first check the
      output of an INFO command to ensure that the server supports quiet NOOPs.
      
      ECHO   (ECHO something)
      
      This command also does nothing. It simply returns OK followed by whatever its
      arguments are.
      
      TIME	(get server local TIME)
      
      TIME returns OK followed by four parameters:
      
       * The current time measured in seconds since 00:00:00 GMT, Jan 1, 1970
         (standard Unix format).
      
       * The server's time zone offset from UTC
      
       * 1 or 0 to indicate whether Daylight Savings Time is in effect in the
         server's time zone
      
       * The date/time (again in Unix timestamp format) when the server was started.
      
      This is used in allowing a client to calculate idle times, server uptime, etc.
      
      
      MESG    (read system MESsaGe)
      
      This command is used to display system messages and/or help files.  The single
      argument it accepts is the name of the file to display.  IT IS CASE SENSITIVE.
      Citadel looks for these files first in the "messages" subdirectory and then in
      the "help" subdirectory.
      
      If the file is found, LISTING_FOLLOWS is returned, followed by a pathname to
      the file being displayed.  Then the message is printed, in format type 0 (see
      MSG0 command for more information on this).  If the file is not found, ERROR
      is returned.
      
      There are some "well known" names of system messages which client software may
      expect most servers to carry:
      
      hello        | Welcome message, to be displayed before the user logs in.
      changepw     | To be displayed whenever the user is prompted for a new
                     password.  Warns about picking guessable passwords and such.
      register     | Should be displayed prior to the user entering registration.
                     Warnings about not getting access if not registered, etc.
      help         | Main system help file.
      goodbye      | System logoff banner; display when user logs off.
      roomaccess   | Information about how public rooms and different types of
                     private rooms function with regards to access.
      unlisted     | Tells users not to choose to be unlisted unless they're really
                     paranoid, and warns that administrators can still see unlisted
                     user list entries.
      
      Citadel provides these for the Citadel Unix text client.  They are probably
      not very useful for other clients:
      
      mainmenu     | Main menu (when in idiot mode).
      aideopt      | .A?
      readopt      | .R?
      entopt       | .E?
      dotopt       | .?
      saveopt      | Options to save a message, abort, etc.
      entermsg     | Displayed just before a message is entered, when in idiot mode.
      
      Several values are replaced into these helpfiles:
      
      Token         | Value
       ^nodename    | The node name of your system on a Citadel network
       ^humannode   | Human-readable node name
       ^fqdn        | Your system's fully-qualified domain name 
       ^username    | The name of the user reading the help file 
       ^usernum     | The user number of the user reading the help file 
       ^sysadm      | The name of the system administraor (i.e., you) 
       ^variantname | The name of the software you're running 
       ^bbsdir      | The directory on the host system in which you have installed
                      the Citadel system.
       ^maxsessions | The mamximum number of allowed simultaneous sessions
      
      
      SESSION AUTHENTICATION
      ----------------------
      
      
      Citadel knows several states of a connection. There can be an authenticated
      user, (which will involve a user being the base of rights to list for example
      folders) or being authenticated as an internal programm, which will give the
      full access to all Rooms on the Server.
      
      
      USER   (send USER name)
      
      The first step in logging in a user. This command takes one argument: the name
      of the user to be logged in. If the user exists, a MORE_DATA return code will
      be sent, which means the client should execute PASS as the next command. If
      the user does not exist, ERROR+NO_SUCH_USER is returned.
      
      The USER command will also accept a user's Internet e-mail address as the
      login name.
      
      
      PASS   (send PASSword)
      
      The second step in logging in a user.  This command takes one argument: the
      password for the user we are attempting to log in.  If the password doesn't
      match the correct password for the user we specified for the USER command,
      ERROR+PASSWORD_REQUIRED is returned.  If a USER command has not been
      executed yet, ERROR+USERNAME_REQUIRED is returned.  If a user is already
      logged in, ERROR+ALREADY_LOGGED_IN is returned.  If the password is correct,
      OK is returned and the user is now logged in... and most of the other server
      commands can now be executed.  Along with OK, the following parameters are
      returned:
      
      0 The user's name
        ** Note: client software should always set the display name of the user
           to this value, instead of what the user entered.  Citadel tolerates a
           number of variants of the user's name when logging in, but this function
           will tell the client software how it *should* look.
      1 The user's current access level
      2 (empty field)
      3 (empty field)
      4 Various flags (see citadel.h)
      5 User number
      6 Time of last call (UNIX timestamp)
      
      
      LOUT   (LogOUT)
      
      Log out the user without closing the server connection.  It always returns OK
      even if no user is logged in.
      
      
      IDEN (IDENtify the client software)
      
      The client software has the option to identify itself to the server.
      Currently, the server does nothing with this information except to write it
      to the syslog to satisfy the system administrator's curiosity.  Other uses
      might become apparent in the future.
      
      The IDEN command should contain five fields (and the first three are unused)
      
      0|0|0|IDstring|Hostname
      
      Client IDString - a free-form text string describing the client
      Remote Hostname - the name of the host the user is located at.
      
      It is up to the server to determine whether to accept the host name or to
      use the host name it has detected itself. Generally, if the client is
      running on a trusted host (either localhost or a well-known publically
      accessible client) it should use the host name transmitted by IDEN,
      otherwise it should use the host name it has detected itself.
      
      IDEN always returns OK, but since that's the only way it ever returns there's
      no point in checking the result code.
      
      
      QUIT   (QUIT)
      
      Terminate the server connection.  This command takes no arguments.  It
      returns OK and closes the connection immediately.
      
      
      BIFF   (check for new mail)
      
      This command returns the number of new messages which have arrived in the current
      user's inbox while they were logged in.  This count will begin at zero when the user
      initially logs in, even if they have new mail.  It also resets to zero when this
      command is called.  This makes the BIFF command useful only for delivering real-time
      alerts.
      
      
      RWHO   (Read WHO's online)
      
      Displays a list of all users connected to the server.  No error codes are ever
      returned.  LISTING_FOLLOWS will be returned, followed by zero or more lines
      containing the following three fields:
      
      0  | Session ID.  Citadel fills this with the pid of a server program.
      1  | User name.
      2  | The name of the room the user is currently in.  This field might not be
           displayed (for example, if the user is in a private room) or it might
           contain other information (such as the name of a file the user is
           downloading).
      3  | The name of the host the client is connecting from, or "localhost" if the
           client is local.
      4  | Description of the client software being used
      5  | The last time, locally to the server, that a command was received from
           this client (Note: NOOP's don't count)
      6  | The last command received from a client. (NOOP's don't count)
      7  | Session flags.  These are:
      	- (STEALTH mode)
      	* (posting) 
      	. (idle)
      8  | (no longer used)
      9  | (no longer used)
      10 | (no longer used)
      11 | Nonzero if the session is a logged-in user, zero otherwise.
      12 | Session state (idle, bound, executing, etc.)
      
      The listing is terminated, as always, with the string "000" on a line by
      itself.
      
      
      QDIR   (Query global DIRectory)
      
      Look up an internet address in the global directory.  Any logged-in user may
      call QDIR with one parameter, the Internet e-mail address to look up.  QDIR
      returns OK followed by a Citadel address if there is a match, otherwise it
      returns ERROR+NOT_LOGGED_IN.
      
      
      RBDI   (ReBuild Directory Index)
      
      This command creates, or re-creates, the index of Internet email addresses using
      information from all user records.  This procedure is normally run internally
      when the server determines it necessary, but is also provided as a server
      command to be used as a troubleshooting/maintenance tool.  Only a system
      administrator can run the command.  It returns OK on success or ERROR on failure.
      
      
      AUTO   (AUTOcompletion of email addresses)
      
      The AUTO command is used by clients which want to request a list of email
      recipients whose names or email addresses match a partial string supplied by
      the client.  This string is the only parameter passed to this command.  The
      command will return ERROR if no user is logged in or if no address book could
      be found; otherwise, it returns LISTING_FOLLOWS followed by zero or more
      candidate recipients.
      
      
      ISME   (find out if an e-mail address IS ME)
      
      This is a quickie shortcut command to find out if a given e-mail address
      belongs to the user currently logged in.  Its sole argument is an address to
      parse.  The supplied address may be in any format (local, IGnet, or Internet).
      The command returns OK if the address belongs to the user, ERROR otherwise.
      
      
      INFO   (get server INFO)
      
      This command will **always** return LISTING_FOLLOWS and then print out a
      listing of zero or more strings.  Client software should be written to expect
      anywhere from a null listing to an infinite number of lines, to allow later
      backward compatibility.  The current implementation defines the following
      parts of the listing:
      
       0     | Your unique session ID on the server
       1     | The node name of the Citadel server
       2     | Human-readable node name of the Citadel server
       3     | The fully-qualified domain name (FQDN) of the server
       4     | The name of the server software, i.e. "Citadel 4.00"
       5     | The revision level of the server code
       6     | The geographical location of the site (city and state if in the US)
       7     | The name of the system administrator
       8     | A number identifying the server type (see below)
       9     | The text of the system's paginator prompt
       10    | Floor Flag.  1 if the system supports floors, 0 otherwise.
       11    | Paging level.  0 if the system only supports inline paging, 1 if the
               system supports "extended" paging (check-only and multiline modes).
               See the SEXP command for further information.
       12    | (empty field - no longer in use)
       13    | Set to nonzero if this server supports the QNOP command.
       14    | Set to nonzero if this server is capable of connecting to a directory
               service using LDAP.
       15    | Set to nonzero if this server does **not** allow self-service creation
               of new user accounts.
       16    | The default timezone for calendar items which do not have any timezone
               specified and are not flagged as UTC.  This will be a zone name from
               the Olsen database.
       17    | (empty field - no longer in use)
       18    | (empty field - no longer in use)
       19    | (empty field - no longer in use)
       20    | (empty field - no longer in use)
       21    | Nonzero if the server's full text index is enabled.
       22    | Build ID of this version of Citadel Server.
       23    | OpenID version supported by the server (always 0 because support for OpenID has ended)
       24    | Nonzero if the server supports anonymous guest logins
      
      
      Notes for anyone developing third party client software:
        * Your client programs should still be able to utilize servers other than
          your own.
        * Clients other than your own should still be able to utilize your server,
          even if your extensions aren't supported.
        * Please contact the citadel.org project and obtain a unique server type
          code, which can be assigned to your server program.
        * If you document what you did in detail, perhaps it can be added to a future
          release of the Citadel program, so everyone can enjoy it.  Better yet, just
          work with the Citadel development team on the main source tree.
      
      If everyone follows this scheme, we can avoid a chaotic situation with lots of
      confusion about which client program works with which server, etc.  Client
      software can simply check the server type (and perhaps the revision level) to
      determine ahead of time what commands may be utilized.
      
      
      TERM   (TERMinate another session)
      
      This command administratively terminates another running Citadel Server
      session.  The TERM command performs this task.  Naturally, only administrators
      can execute TERM.  The command should be called with a single argument: the
      session ID (obtained from an RWHO command) of the session to be terminated.
      
      TERM returns OK if the session was terminated, or ERROR otherwise.  Note that a
      client program is prohibited from terminating its own session.
      
      See also: REQT
      
      
      REQT   (REQuest client Termination)
      
      Request that the specified client (or all clients) log off.  Admin level access
      is required to run this command, otherwise ERROR+HIGHER_ACCESS_REQUIRED is
      returned.
      
      The REQT command accepts one parameter: the session ID of the client which
      should be terminated, or 0 for all clients. When successful, the REQT command
      returns OK.
      
      It should be noted that the REQT command simply transmits an instant message
      to the specified client(s) with the EM_GO_AWAY flag set.  It is the client's
      responsibility to honor this flag and log off.  Clients which do not honor
      this flag, and clients running other protocols, will not respond.  Therefore
      the effects of the REQT command should be considered advisory only.  The
      recommended implementation practice is to first issue a REQT command, then wait
      a little while (from 30 seconds up to a few minutes) for well-behaved clients
      to voluntarily terminate, and then issue a TERM command to forcibly disconnect
      the client (or perhaps a DOWN command, if you are logging off users for the
      purpose of shutting down the server).
      
      
      STLS   (Start Transport Layer Security)
      
      This command starts TLS on the current connection.  The current implementation
      uses OpenSSL on both the client and server end.  For future compatibility all
      clients must support at least TLSv1, and servers are guaranteed to support
      TLSv1.  During TLS negotiation (see below) the server and client may agree to
      use a different protocol.
      
      The server returns ERROR if it does not support SSL or SSL initialization
      failed on the server; otherwise it returns OK.  Once the server returns OK and
      the client has read the response, the server and client immediately negotiate
      TLS (in OpenSSL, using SSL_connect() on the client and SSL_accept() on the
      server).  If negotiation fails, the server and client should attempt to resume
      the session unencrypted.  If either end is unable to resume the session, the
      connection should be closed.
      
      This command may be run at any time.
      
      
      GTLS   (Get Transport Layer Security Status)
      
      This command returns information about the current connection.  The server
      returns OK plus several parameters if the connection is encrypted, and ERROR
      if the connection is not encrypted.  It is primarily used for debugging.  The
      command may be run at any time.
      
      0 | Protocol name, e.g. "SSLv3"
      1 | Cipher suite name, e.g. "ADH-RC4-MD5"
      2 | Cipher strength bits, e.g. 128
      3 | Cipher strength bits actually in use, e.g. 128
      
      
      ICAL   (Internet CALendaring commands)
      
      This command supports a number of subcommands which are used to process the
      calendaring/scheduling support in Citadel.  Here are the subcommands which may
      be issued:
      
      
      ICAL test
      
      Test server for calendaring support.  Always returns OK unless the server has
      disabled the calendar functions.
      
      
      ICAL respond|msgnum|partnum|action
      
      Respond to a meeting request.  'msgnum' and 'partnum' refer to a MIME-encoded
      meeting invitation in the current room.  'action' must be set to either
      "accept" or "decline" to determine the action to take.  This subcommand will
      return either OK or ERROR.
      
      
      ICAL conflicts|msgnum|partnum
      
      Determine whether an incoming VEVENT will fit in the user's calendar by
      checking it against the existing VEVENTs.  'msgnum' and 'partnum' refer to a
      MIME-encoded meeting invitation in the current room (usually the inbox). This
      command may return ERROR if something went wrong, but usually it will return
      LISTING_FOLLOWS followed by a list of zero or more conflicting events.  A
      zero-length list means that there were no conflicts.
      
      
      ICAL handle_rsvp|msgnum|partnum
      
      Handle an incoming "reply" (or RSVP) to a meeting request you sent out.
      'msgnum' and 'partnum' refer to a MIME-encoded reply in the current room.
      'action' must be set to either "update" or "ignore" to determine the action to
      take.  If the action is "update" then the server will hunt for the meeting in
      the user's Calendar> room, and update the status for this attendee.  Either
      way, the reply message is deleted from the current room.  This subcommand will
      return either OK or ERROR.
      
      
      ICAL freebusy|username
      
      Output the free/busy times for the requested user.  If the user specified has a
      calendar available, this command will return LISTING_FOLLOWS and a compound
      VCALENDAR object.  That object, in turn, will contain VEVENT objects that have
      been stripped of all properties except for the bare minimum needed to learn
      free/busy times (such as DTSTART, DTEND, and TRANSP).  If there is no such
      user, or no calendar available, the usual ERROR codes will be returned.
      
      
      ICAL sgi|(bool)
      
      Readers who are paying attention will notice that there is no subcommand to
      send out meeting invitations.  This is because that task can be handled
      automatically by the Citadel server.  Issue this command with (bool) set to 1
      to enable Server Generated Invitations.  In this mode, when an event is saved
      to the user's Calendar> room and it contains attendees, Citadel will
      automatically turn the event into calendar REQUEST messages and mail them out
      to all listed attendees.  If for some reason the client needs to disable Server
      Generated Invitations, the command may be sent again with (bool) = 0.
      
      
      ICAL getics
      
      Output the contents of the entire calendar (assuming we are in a calendar room)
      as one big data stream.  All of the events (or tasks, etc.) in the room are
      combined into a single VCALENDAR object, which is then serialized and
      transmitted to the client.  This is suitable for subscribing to a calendar in
      third-party software.  This command will output LISTING_FOLLOWS followed by the
      calendar data stream, or ERROR if the requested operation is not permitted.
      
      
      ICAL putics
      
      Delete the entire contents of a calendar room and replace it with the calendar
      supplied by a client-input data stream.  This is suitable for publishing a
      calendar from third-party software.  This command will output SEND_LISTING and
      then expect the client to transmit the calendar data stream.  Alternatively,
      it will return ERROR if the requested operation is not permitted.
      
      
      SEXP   (Send instant message)
      
      This is one of two commands which implement instant messages (also known as
      "paging").  Commands ending in "...EXP" are so-named because we called them
      "express messages" before the industry standardized on the term "instant
      messages."  When an instant message is sent, it will be logged in user to
      another.  When an instant message is sent, it will be displayed the next time
      the target user executes a PEXP or GEXP command.
      
      The SEXP command accepts two arguments: the name of the user to send the
      message to, and the text of the message.  If the message is successfully
      transmitted, OK is returned.  If the target user is not logged in or if
      anything else goes wrong, ERROR is returned.
      
      If the server supports extended paging, sending a zero-length message merely
      checks for the presence of the requested user without actually sending a
      message. Sending a message consisting solely of a "-" (hyphen) will cause the
      server to return SEND_LISTING if the requested user is logged in, and the
      client can then transmit a multi-line page.
      
      The reserved name "broadcast" may be used instead of a user name, to broadcast
      an instant message to all users currently connected to the server.
      
      Do be aware that if an instant message is transmitted to a user who is logged
      in using a client that does not check for instant messages, the message will
      never be received.  Also, instant messages are NOT sent to sessions running a
      protocol which does not support them, such as SMTP, POP3, and IMAP.
      
      
      GEXP   (Get instant messages)
      
      This is a more sophisticated way of retrieving instant messages than the old
      PEXP method.  If there are no instant messages waiting, PEXP returns ERROR;
      otherwise, it returns LISTING_FOLLOWS and the following arguments:
      
      0 - a boolean value telling the client whether there are any additional instant
          messages waiting following this one
      1 - a Unix-style timestamp
      2 - flags (see server.h for more info)
      3 - the name of the sender
      4 - the node this message originated on (deprecated, do not use)
      5 - the email address or XMPP JID of the sender
      
      The text sent to the client will be the body of the instant message.
      
      So how does the client know there are instant messages waiting?  It could
      execute a random GEXP every now and then.  Or, it can check the byte in server
      return code messages, between the return code and the parameters.  In much the
      same way as FTP uses "-" to signify a continuation, Citadel uses an "*" in this
      position to signify the presence of waiting instant messages.
      
      
      DEXP   (Disable receiving instant messages)
      
      DEXP sets or clears the "disable instant messages" flag.  Pass this command a 1
      or 0 to respectively set or clear the flag.  When the "disable instant
      messages" flag is set, no one except administrators may send the user instant messages.
      Any value other than 0 or 1 will not change the flag, only report its state.
      The command returns ERROR if it fails; otherwise, it returns OK followed by a
      number representing the current state of the flag.
      
      
      ASYN   (ASYNchronous message support)
      
      Negotiate the use of asynchronous, or unsolicited, protocol messages.  The
      only parameter specified should be 1 or 0 to indicate that the client can or
      cannot handle this type of messages.  The server will reply OK followed by
      a 1 or 0 to tell the client which mode it is now operating in.
      
      If the command is not available on the server (i.e. it returns ERROR), or if
      the command has not been executed by the client, it should be assumed that
      this mode of operation is NOT in effect.
      
      The client may also send any value other than 0 or 1 to simply cause the
      server to output its current state without changing it.
      
      When asynchronous protocol mode is in effect, the client MUST handle any
      asynchronous messages as they arrive, before doing anything else.
      
      
      ASYNCHRONOUS MESSAGES
      ---------------------
      
      When the client protocol is operating in asynchronous mode (please refer to the
      writeup of the ASYN command above), the following messages may arrive at any
      time:
      
      
      902  (instant message arriving)
      
      One or more instant messages have arrived for this client.
      
      
      Room and Message Commands
      -------------------------
      
      
      Manipulate data in the current room
      -----------------------------------
      
      As previously noted, many commands implicitly reference the room the user is
      in. Here is how to move to another room:
      
      
      GOTO   (GOTO a room)
      
      This command is used to goto a new room.  When the user first logs in (login is
      completed after execution of the PASS command) this command is automatically
      and silently executed to take the user to the first room in the system (usually
      called the Lobby).
      
      This command can be passed one or two parameters. The first parameter is, of
      course, the name of the room. Although it is not case sensitive, the full name
      of the room must be used. Wildcard matching or unique string matching of room
      names should be the responsibility of the client.
      
      Note that the reserved room name "_BASEROOM_" can be passed to the server to
      cause the goto command to take the user to the first room in the system,
      traditionally known as the Lobby. As long as a user is logged in, a GOTO
      command to _BASEROOM_ is guaranteed to succeed. This is useful to allow client
      software to return to the base room when it doesn't know where else to go.
      
      There are also several additional reserved room names:
      
      _MAIL_		goes to the user's inbox (i.e. the Mail> room).
      _TRASH_		goes to the user's personal trashcan room (trash folder).
      _BITBUCKET_	goes to a room that has been chosen for messages without a home.
      _CALENDAR_	goes to the user's primary personal calendar.
      _CONTACTS_	goes to the user's primary personal address book.
      _NOTES_		goes to the user's primary personal notes room.
      _TASKS_		goes to the user's primary personal task list.
      
      The second (and optional) parameter is a password, if one is required for
      access to the room.  This allows for all types of rooms to be accessed via this
      command: for public rooms, invitation-only rooms to which the user has access,
      and preferred users only rooms to which the user has access, the room will
      appear in a room listing.  For guess-name rooms, this command will work
      transparently, adding the room to the user's known room list when it completes.
      For passworded rooms, access will be denied if the password is not supplied or
      is incorrect, or the command will complete successfully if the password is
      correct.
      
      The third (and also) optional parameter is a "transient" flag. Normally, when a
      user enters a private and/or zapped room, the room is added to the user's known
      rooms list. If the transient flag is set to non-zero, this is called a
      "transient goto" which causes the user to enter the room without adding the
      room to the known rooms list.
      
      The possible result codes are:
      
      OK                The command completed successfully.  User is now in the room.
                        (See the list of returned parameters below)
      ERROR             The command did not complete successfully.  Check the second
                        and third positions of the result code to find out what
                        happened:
      NOT_LOGGED_IN     Of course you can't go there.  You didn't log in.
      PASSWORD_REQUIRED Either a password was not supplied, or the supplied password
                        was incorrect.
      ROOM_NOT_FOUND    The requested room does not exist.
      
      The typical procedure for entering a passworded room would be:
      
        - Execute a GOTO command without supplying any password.
        - ERROR+PASSWORD_REQUIRED will be returned.  The client now knows that the
          room is passworded, and prompts the user for a password.
        - Execute a GOTO command, supplying both the room name and the password.
        - If OK is returned, the command is complete.  If, however,
          ERROR+PASSWORD_REQUIRED is still returned, tell the user that the supplied
          password was incorrect.  The user remains in the room he/she was previously in.
      
      When the command succeeds, these parameters are returned:
       0    | The name of the room
       1    | Number of unread messages in this room
       2    | Total number of messages in this room
       3    | Info flag: set to nonzero if the user needs to read this room's info
              file (see RINF command below)
       4    | Various flags associated with this room.  (See LKRN cmd above)
       5    | The highest message number present in this room
       6    | The highest message number the user has read in this room
       7    | Boolean flag: 1 if this is a Mail> room, 0 otherwise
       8    | Administrator flag: 1 if the user has admin rights to either the current
              room or the entire site.
       9    | (this position is no longer used)
       10   | The floor number this room resides on
       11   | The **current**"view" for this room (see views.txt for more info)
       12   | The **default**"view" for this room
       13   | Boolean flag: 1 if this is the user's Trash folder, 0 otherwise.
       14   | More flags associated with this room
       15   | Timestamp of the last write activity in this room (addition or deletion
              of messages, reconfiguration of room, etc)
      
      The default view gives the client a hint as to what views the user should be
      allowed to select.  For example, it would be confusing to allow messages in a
      room intended for calendar items.  The server does not enforce these
      restrictions, though.
      
      
      STAT   (retrieve name and modification time of current room)
      
      This is a lightweight command which may be used by a client to quickly determine
      whether there has been any activity in the current room (added or deleted
      messages, modification of the room's configuration, etc).  It is called with no
      parameters, and returns OK followed by two parameters: the name of the room, and
      the modification timestamp.
      
      
      Commands manipulating Message Index Lists
      -----------------------------------------
      
      
      MSGS   (get pointers to MeSsaGeS in this room)
      
      This command obtains a listing of all the messages in the current room which the
      client may request. This command may be passed a single parameter: either "all",
      "old", or "new" to request all messages, only old messages, or new messages. Or
      it may be passed two parameters: "last" plus a number, in which case that many
      message pointers will be returned; "first" plus a number, for the corresponding
      effect; or "gt" plus a number, to list all messages in the current room with a
      message number greater than the one specified; or "lt" plus a number, to list
      all messages in the current room with a message number less than the one
      specified. If no parameters are specified, "all" is assumed.
      
      In addition, the first parameter may be set to "search", in which case the third
      parameter must be a search string.  This will request all messages in the
      current room whose text contains the search string.
      
      The third argument, may be either 0 or 1. If it is 1, this command behaves
      differently: before a listing is returned, the client must transmit a list of
      fields to search for. The field headers are message type values listed below
      in the writeup for the "MSG0" command.
      
      The optional fourth argument may also be either 0 or 9. If it is 9, the output
      of this command will include not only a list of message numbers, but a simple
      header summary of each message as well. This is somewhat resource intensive so
      you shouldn't do this unless you absolutely need all the headers immediately.
      The fields which are output (in the usual delimited fashion, of course) are:
      message number, timestamp, display name, node name, Internet email address
      (if present), subject (if present), hash of message-id (if present),
      comma-separated hashes of message thread references (if present).
      
      This command can return three possible results. ERROR+NOT_LOGGED_IN will be
      returned if no user is currently logged in. Otherwise, LISTING_FOLLOWS will be
      returned, and the listing will consist of zero or more message numbers, one per
      line. The listing ends, as always, with the string "000" alone on a line by
      itself. The listed message numbers can be used to request messages from the
      system. If "search mode" is being used, the server will return START_CHAT_MODE,
      and the client is expected to transmit the search criteria, and then read the
      message list.
      
      Since this is somewhat complex, here are some examples:
      
      Example 1: Read all new messages
      
        Client:   MSGS NEW
        Server:   100 Message list...
        523218
        523293
        523295
        000
      
      Example 2: Read the last five messages
      
        Client:   MSGS LAST|5
        Server:   100 Message list...
        523190
        523211
        523218
        523293
        523295
        000
      
      Example 3: Read all messages written by "IGnatius T Foobar"
      
        Client:   MSGS ALL|0|1
        Server:   800 Send template then receive message list
        Client:   from|IGnatius T Foobar
        000
        Server:   518604
        519366
        519801
        520201
        520268
        520805
        520852
        521579
        521720
        522571
        000
      
      Note that in "search mode" the client may specify any number of search criteria.
      These criteria are applied with an AND logic.
      
      Another note: anyone reading through the code may observe that there are other
      undocumented parameters which may be supplied to this command.  These are
      deprecated and should not be used.
      
      
      SEEN   (set or clear the SEEN flag for a message)
      
      Citadel supports the concept of setting or clearing the "seen" flag for each
      individual message, instead of only allowing a "last seen" pointer.  In fact,
      the old semantics are implemented in terms of the new semantics.  This command
      requires two arguments: the number of the message to be set, and a 1 or 0 to
      set or clear the "seen" bit.
      
      This command returns OK, unless the user is not logged in or a usage error
      occurred, in which case it returns ERROR.  Please note that no checking is done
      on the supplied data; if the requested message does not exist, the SEEN command
      simply returns OK without doing anything.
      
      
      GTSN   (GeT the list of SeeN messages)
      
      This command retrieves the list of "seen" (as opposed to unread) messages for
      the current room.  It returns OK followed by an IMAP-format message list.
      
      
      VIEW   (set the VIEW for a room)
      
      Set the preferred view for the current user in the current room.  Please see
      views.txt for more information on views.  The sole parameter for this command
      is the type of view requested.  VIEW returns OK on success or ERROR on failure.
      
      
      SRCH   (SeaRCH the message base)
      
      Please do not use this command.  It is not intended to remain in the protocol
      in its current form.  If you want to perform a full text search, use the MSGS
      command with the 'search' subcommand instead.
      
      The current implementation accepts a search string as its sole argument, and
      will respond with LISTING_FOLLOWS followed by a list of messages (globally, not
      just in the current room) which contain ALL of the words in the search string.
      If the client desires an "exact phrase" match, it must then slow-search the text
      of each returned message for the exact string.  The client should also compare
      the returned message numbers against those which actually exist in the room or
      rooms being searched.  In particular, clients should avoid telling the user
      about messages which exist only in rooms to which the user does not have access.
      
      
      EUID   (get message number using an EUID)
      
      Returns the message number, if present, of the message in the current room which
      is indexed using the supplied EUID (exclusive message ID).  There can be only
      one message in a room with any given EUID; if another message arrives with the
      same EUID, the existing one is replaced.  This makes it possible to reference
      things like calendar items using an immutable URL that does not change even when
      the message number changes due to an update.
      
      The format of this command is:  EUID (euid)
      
      If successful, EUID returns OK followed by a message number.
      If no message exists in the current room with the supplied EUID, the command
      returns ERROR+MESSAGE_NOT_FOUND.
      
      
      Commands manipulating One Message
      ---------------------------------
      
      DELE   (DELEte a message)
      
      Delete one or more messages from the current room.  The one argument that should
      be passed to this command is a message number, or a list of message numbers
      separated by commas, to be deleted.
      
      The return value will be OK if one or more messages were deleted, or an ERROR code.
      
      Please note that is operation only deletes the message pointer from the room.
      The actual "delete from disk" operation will take place during the next database
      purge, provided that the message is not also present in one or more additional
      rooms.
      
      
      MOVE   (MOVE or copy a message to a different room)
      
      Move or copy a message to a different room.  This command expects to be passed
      three arguments:
      
      0  the message number(s) of the message to be moved or copied.
      1  the name of the target room.
      2  flag: 0 to move the message, 1 to copy it without deleting from the source room.
      
      This command never creates or deletes copies of a message; it merely moves
      around links.  When a message is moved, its reference count remains the same.
      When a message is copied, its reference count is incremented.
      
      You can move/copy multiple messages with a single command by separating the
      message numbers with commas; for example:  
        MOVE 112,113,114|Trash|0
      
      
      EMSG   (Enter a system MeSsaGe)
      
      This is the opposite of the MESG command - it allows the creation and editing
      of system messages.  The only argument passed to EMSG is the name of the file
      being transmitted.  If the file exists in any system message directory on the
      server it will be overwritten, otherwise a new file is created.  EMSG returns
      SEND_LISTING on success or ERROR+HIGHER_ACCESS_REQUIRED if the user is not an
      administrator.
      
      Typical client software would use MESG to retrieve any existing message into an
      edit buffer, then present an editor to the user and run EMSG if the changes are
      to be saved.
      
      
      ENT0   (ENTer message, mode 0)
      
      This command is used to enter messages into the system.  It accepts the
      following parameters:
      
       0	Post flag.  This should be set to 1 to post a message.  If it is set to 0,
              the server only returns OK or ERROR (plus any flags describing the error)
              without reading in a message.  Client software should, in fact, perform
              this operation at the beginning of an "enter message" command **before**
              starting up its editor, so the user does not end up typing a message in
              vain that will not be permitted to be saved.
       1	Recipient (To: field).  This argument is utilized only for private mail.
              It is ignored for public messages.  It contains, of course, the name of
              the recipient(s) of the message.
       2	Anonymous flag.  This argument is ignored unless the room allows anonymous
              messages.  In such rooms, this flag may be set to 1 to flag a message as
              anonymous, otherwise 0 for a normal message.
       3	Format type. Any valid Citadel format type may be used (this will typically
              be 0; see the MSG0 command below).
       4	Subject.  If present, this argument will be used as the subject of the
              message.
       5	Post name.  This is the 'display name' or 'screen name' to be used as the
              author of the message.  It is permissible to leave this field blank to
              allow the server to select a suitable default.  The supplied name must
              be one of the names returned by a GVSN command, unless the user is an
              administrator.
       6	Do Confirmation.  NOTE: this changes the protocol semantics!  When you set
              this to nonzero, ENT0 will reply with a confirmation message after you
              submit the message text.  The reply code for the ENT0 command will be
              START_CHAT_MODE instead of SEND_LISTING.
       7	Recipient (Cc: field).  This argument is utilized only for private mail.  It
              is ignored for public messages.  It contains, of course, the name(s) of the
              recipient(s) of the message.
       8	Recipient (Bcc: field).  This argument is utilized only for private mail.
              It is ignored for public messages.  It contains, of course, the name(s) of
              the recipient(s) of the message.
       9	Exclusive message ID.  When a message is submitted with an Exclusive message
              ID, any existing messages with the same ID will automatically be deleted.
              This is only applicable for Wiki rooms; other types of rooms either
              ignore the supplied ID (such as message boards and mailboxes) or derive
              the ID from a UUID native to the objects stored in them (such as
              calendars and address books).
      10	Email address.  This is the Internet email address to be used as the author
              of the message.  It is permissible to leave this field blank to allow
              the server to select a suitable default.  The supplied name must be one
              of the names returned by a GVEA command.
      11	If this is a reply to another message, supply a delimiter-separated list of
              message ID's for the thread, starting with the message being replied to,
              and ending with the thread root.  Note that the delimiter is "!"
              (exclamation point) rather than the vertical bar, because we are already
              using the vertical bar delimiter here.
      
      Possible result codes:
      
      OK	The request is valid.  (Client did not set the "post" flag, so the server
              will not read in message text.)   If the message is an e-mail with a
              recipient, the text that follows the OK code will contain the exact name
              to which mail is being sent.  The client can display this to the user.
              The implication here is that the name that the server returns will contain
              the correct upper and lower case characters.  In addition, if the
              recipient is having his/her mail forwarded, the forwarding address will be
              returned.  In newer Citadel versions its followed by a "|0" or "|1"
              that indicates whether the client should force the user to set a message
              subject.
      SEND_LISTING	The request is valid.  The client should now transmit the text of
      		the message (ending with a 000 on a line by itself, as usual).
      START_CHAT_MODE	The request is valid.  The client should now transmit the text of
      		the message, ending with a 000 on a line by itself.  After
      		transmitting the 000 terminator, the client MUST read in the
      		confirmation from the server, which will also end with 000 on a
      		line by itself.  The format of the confirmation appears below.
      ERROR+NOT_LOGGED_IN		Not logged in.
      ERROR+HIGHER_ACCESS_REQUIRED  Higher access is required.  An explanation follows,
      				worded in a form that can be displayed to the user.
      ERROR+NO_SUCH_USER		One or more specified recipients do not exist.
      
      The format of the confirmation message, if requested, is as follows:
      
      Line 1:	The new message number on the server for the message.  It will be
      	positive for a real message number, or negative to denote that an
      	error occurred.  If an error occurred, the message was not saved.
      Line 2:	A human-readable confirmation or error message.
      Line 3:	The resulting Exclusive UID of the message, if present. (More may
      	be added to this in the future, so do not assume that there will
      	only be these lines output.  Keep reading until 000 is received.)
      
      
      GVSN    (Get Valid Screen Names)
      
      Returns LISTING_FOLLOWS followed by a list of one or more "screen names" which
      the user may use to post messages (argument 5 to an ENT0 command).  The user
      must be logged in or the command will return ERROR+NOT_LOGGED_IN.
      
      
      GVEA    (Get Valid Email Addresses)
      
      Returns LISTING_FOLLOWS followed by a list of one or more Internet email
      addresses which the user may use to post messages (argument 10 to an ENT0
      command).  The user must be logged in or the command will return
      ERROR+NOT_LOGGED_IN.
      
      
      DVCA    (Dump VCard Addresses)
      
      Returns LISTING_FOLLOWS followed by a list of zero or more contacts (display
      name plus email address in RFC822 format) found in any vCards in the current
      room.  This command is used to rapidly output the list of contacts in an
      address book room.  The user must be logged in or the command will return
      ERROR+NOT_LOGGED_IN.
      
      
      Reading a single message
      ------------------------
      
      Due to the several needs of clients to get preformated messages, citadel offers
      several modes to clients to display a message (or parts of it) 
      
      
      MSG0   (read MeSsaGe, mode 0)
      
      This is a command used to read the text of a message.  "Mode 0" implies that
      other MSG commands (MSG1, MSG2, etc.) exist to read messages in more robust
      formats.  This command should be passed two arguments. The first is the message
      number of the message being requested.  The second argument specifies whether
      the client wants headers and/or message body:
      
      0	Headers and body
      1	Headers only
      2	Body only
      3	Headers only, with MIME information suppressed (this runs faster)
      
      If the request is denied, ERROR+NOT_LOGGED_IN or ERROR+MESSAGE_NOT_FOUND
      will be returned.  Otherwise, LISTING_FOLLOWS will be returned, followed by the
      contents of the message.  The following fields may be sent:
      Field	Value
      type=	Formatting type.  see the next table for the currently defined types
      msgn=	The message ID of this message on the system it originated on.
      path=	An e-mailable path back to the user who wrote the message.
      time=	The date and time of the message, in Unix format (the number of seconds
      	since midnight on January 1, 1970, GMT).
      from=	The name of the author of the message.
      rcpt=	If the message is a private e-mail, this is the recipient.
      room=	The name of the room the message originated in.
      node=	The short node name of the system this message originated on.
      hnod=	The long node name of the system this message originated on.
      zaps=	The id/node of a message which this one zaps (supersedes).
      part=	Information about a MIME part embedded in this message.
      pref=	formation about a multipart MIME prefix such as "multipart/mixed" or
      	"multipart/alternative". This will be output immediately prior to the
      	various "part=" lines which make up the multipart section.
      suff=	Information about a multipart MIME suffix.  This will be output
      	immediately following the various "part=" lines which make up the
      	multipart section.
      text	Note that there is no "=" after the word "text".  This string signifies
      	that the message text begins on the next line.
      
      
      Message Type Values
      
      0 (FMT_CITADEL) - "traditional" Citadel formatting.  This means that newlines
      	should be treated as spaces UNLESS the first character on the next
      	line is a space.  In other words, only indented lines should generate
      	a newline on the user's screen when the message is being displayed.
      	This allows a message to be formatted to the reader's screen width.
      	It also allows the use of proportional fonts.
      1 (FMT_FIXED) - a simple fixed-format message.  The message should be displayed
      	to the user's screen as is, preferably in a fixed-width font that will
      	fit 80 columns on a screen.
      4 (FMT_RFC822) - MIME format message.  The message text is expected to contain a
      	header with the "Content-type:" directive (and possibly others).
      
      
      MSG2   (read MeSsaGe, mode 2)
      
      MSG2 follows the same calling convention as MSG0.
      
      This command will output the raw RFC822 message source.  If the message on disk
      is not in RFC822 format, it will be converted into RFC822 format.  MSG2 may be
      used by clients which prefer to perform the full RFC822/MIME decode on the
      client side.
      
      
      MSG4   (read MeSsaGe, mode 4 -- output in preferred MIME format)
      
      This is the equivalent of MSG0, except it's a bit smarter about messages in
      rich text formats.  Immediately following the "text" directive, the server
      will output RFC822-like MIME part headers such as "Content-type:" and
      "Content-length:".  MIME formats are chosen and/or converted based on the
      client's preferred format settings, which are set using the MSGP command,
      described below.
      
      The MSG4 command also accepts an optional second argument, which may be the
      MIME part specifier of an encapsulated message/rfc822 message.  This is useful
      for fetching the encapsulated message instead of the top-level message, for
      example, when someone has forwarded a message as an attachment.  Note that the
      only way for the client to know the part specifier is to fetch the top-level
      message and then look for attachments of type message/rfc822, and then call
      MSG4 again with that part specifier.
      
      
      MIME RELATED COMMANDS
      ---------------------
      
      These commands manipulate parts of messages, available in Multipart-MIME Format
      as specified in RFC822.
      
      
      MSGP   (set MeSsaGe Preferred MIME format)
      
      Client tells the server what MIME content types it knows how to handle, and the
      order in which it prefers them.  This is similar to an HTTP "Accept:" header.
      
      The parameters to a MSGP command are the client's acceptable MIME content types,
      in the order it prefers them (from most preferred to least preferred). For
      example:
      
      MSGP text/html|text/plain
      
      There is also a special form of this command, which may be used for the client
      to indicate to the server that it prefers to decode Base64 and quoted-printable
      on the client side.  If this command is issued, these encodings will **not** be
      decoded prior to transmitting messages to the client.  This is done with the
      following form:
      
      MSGP dont_decode
      
      
      The MSGP command always returns OK.
      
      
      OPNA   (OPeN Attachment)
      
      (Note: this command is deprecated.  Use DLAT instead.)
      
      Opens, as a download file, a component of a MIME-encoded message.  The two
      parameters which must be passed to this command are the message number and the
      name of the desired section.  If the message or section does not exist, an
      appropriate ERROR code will be returned; otherwise, if the open is successful,
      this command will succeed returning the same information as an OPEN command.
      
      The desired section may be specified using either its part number or its
      content-id.
      
      
      DLAT   (DownLoad ATtachment)
      
      Similar to OPNA, and with the same calling syntax.  The difference is that
      instead of opening a download file for block transfer, this command outputs the
      entire decoded MIME section at once, using a BINARY_FOLLOWS response.  This is
      useful for outputting small objects such as calendar items.
      
      The desired section may be specified using either its part number or its
      content-id.
      
      
      Wiki room commands
      ------------------
      
      These commands are usable in Citadel Wiki rooms only.
      
      
      WIKI   (perform operations on WIKI pages)
      
        WIKI history|(pagename)
      
      Displays the edit history for the specified page.  Returns LISTING_FOLLOWS and
      a delimited list of edits.  The fields of each line are: 
      
      position 0:	The version number of the edit
      position 1:	Timestamp of the edit
      position 2:	Name of the user who performed the edit
      
        WIKI rev|(pagename)|(version_number)|(operation)
      
      Performs an operation on a specific revision (whose version number has been
      learned from a "history" command) of a specific page.  Valid operations are:
      
      "fetch" - returns OK followed by a message number which must then immediately
      be retrieved with one of the MSGx commands.  This is an ephemeral message
      number in a hidden room in an invalid namespace, so it will be gone the next
      time the auto-purger runs.  (This subcommand is deprecated; use "showrev".)
      
      "showrev" - fetches the specified version of the specified message.  Its
      output wll be identical to that of a MSG2 command.
      
      "revert" - actually makes that revision the current one.  It returns OK
      OK followed by a message number.
      
      
      
      Rooms and Floor Directory Commands
      ----------------------------------
      
      Floor Commands
      --------------
      
      Floors are a loosely organized way to organize rooms into groups or categories.
      
      
      LFLR   (List all known FLooRs)
      
      On systems supporting floors, this command lists all known floors.  The command
      accepts no parameters.  It will return ERROR+NOT_LOGGED_IN if no user is logged
      in.  Otherwise it returns LISTING_FOLLOWS and a list of the available floors,
      each line consisting of three fields:
      
        * The floor number associated with the floor
        * The name of the floor
        * Reference count (number of rooms on this floor)
      
      
      CFLR   (Create a new FLooR)
      
      This command is used to create a new floor.  It should be passed two arguments:
      the name of the new floor to be created, and a 1 or 0 depending on whether the
      client is actually creating a floor or merely checking to see if it has
      permission to create the floor.   The user must be logged in and have
      administrator privileges to create a floor.
      
      If the command succeeds, it will return OK followed by the floor number
      associated with the new floor.  Otherwise, it will return ERROR (plus perhaps
      HIGHER_ACCESS_REQUIRED, ALREADY_EXISTS, or INVALID_FLOOR_OPERATION) followed by
      a description of why the command failed.
      
      
      KFLR   (Kill a FLooR)
      
      This command deletes a floor.  It should be passed two argument: the **number**
      of the floor to be deleted, and a 1 or 0 depending on whether the client is
      actually deleting the floor or merely checking to see if it has permission to
      delete the floor.  The user must be logged in and have administrator privileges
      to delete a floor.
      
      Floors that contain rooms may not be deleted. If there are rooms on a floor,
      they must be either deleted or moved to different floors first. This implies
      that the Main Floor (floor 0) can never be deleted, since Lobby>, Mail>, and
      Aide> all reside on the Main Floor and cannot be deleted.
      
      If the command succeeds, it will return OK.  Otherwise it will return ERROR
      (plus perhaps HIGHER_ACCESS_REQUIRED or INVALID_FLOOR_OPERATION) followed by a
      description of why the command failed.
      
      
      EFLR   (Edit a FLooR)
      
      Edit the parameters of a floor.  The client may pass one or more parameters to
      this command:
      
        * The number of the floor to be edited
        * The desired new name
      
      More parameters may be added in the future.  Any parameters not passed to the
      server will remain unchanged.  A minimal command would be EFLR and a floor
      number -- which would do nothing.  EFLR plus the floor number plus a floor name
      would change the floor's name.
      
      If the command succeeds, it will return OK.  Otherwise it will return ERROR
      (plus perhaps HIGHER_ACCESS_REQUIRED or INVALID_FLOOR_OPERATION).
      
      
      ROOM LIST COMMANDS
      ------------------
      
      The various "list rooms" commands all return lists of rooms in the same format.
      The fields in the delimited list are as follows:
      
      0	NAME		Actual name of this room; may include '\' to separate trese
      1	FLAG		Flags for this room (one per bit, from the QR_ flags listed below)
      2	FLOOR		The number of the floor on which this room resides.
      3	LISTORDER	Listing order (the client can voluntarily sort the list this way)
      4	ACL		Flags for this room (one per bit, from the QR2_ flags listed below)
      5	CURVIEW		the currently configured "view" for this room
      6	DEFVIEW		the default "view" for this room
      7	LASTCHANGE	date/time stamp of the last write to this room
      
      
      LKRN   (List Known Rooms with New messages)
      -------------------------------------------
      
      List known rooms with new messages. If the client is not logged in,
      ERROR+NOT_LOGGED_IN is returned. Otherwise, LISTING_FOLLOWS is returned,
      followed by the room listing. Each line in the listing contains the full name
      of a room, followed by the '|' symbol, and then a number that may contain the
      following bits:
      
      Flag Name	integer value	Description
      --------------	--------------	-------------------------------------
      QR_PERMANENT	1		Room is protected from auto-deletion
      QR_PRIVATE	4		Set for any type of private room
      QR_PASSWORDED	8		Set if there's a password too
      QR_GUESSNAME	16		Set if this room can be accessed to anyone who knows its name
      QR_DIRECTORY	32		Directory room
      QR_UPLOAD	64		Allowed to upload
      QR_DOWNLOAD	128		Allowed to download
      QR_VISDIR	256		Visible directory
      QR_ANONONLY	512		Anonymous-Only room
      QR_ANONOPT	1024		Anonymous-Option room
      QR_NETWORK	2048		Shared network room
      QR_PREFONLY	4096		Preferred status needed to enter
      QR_READONLY	8192		administrator status required to post
      QR_MAILBOX	16384		Is this room a private mailbox
      
      Then it returns another '|' symbol, followed by a second set of bits comprised
      of the following:
      
      Flag Name	integer Value	Description
      --------------	--------------	-------------------------------------
      QR2_SYSTEM	1		System room; hide by default
      QR2_SELFLIST	2		Self-service mailing list mgmt
      
      Other bits may be defined in the future. The listing terminates, as with all
      listings, with "000" on a line by itself.
      
      The caller can request the listing to be filtered by floor.  The first argument
      to LKRN should be the number of the floor to list rooms from. Only rooms from
      this floor will be listed. If no arguments are passed to LKRN, or if the floor
      number requested is (-1), rooms on all floors will be listed.
      
      The third field displayed on each line is the number of the floor the room is
      on.  The LFLR command should be used to associate floor numbers with floor names.
      
      The fourth field displayed on each line is a "room listing order."  Unless there
      is a compelling reason not to, clients should sort any received room listings
      by this value.
      
      The fifth field is a special bit bucket containing fields which pertain to room
      access controls:
      
      Flag Name      Value	Description
      UA_KNOWN       2	Known room
      UA_GOTOALLOWED 4	Access will be granted to this room if the user calls it up by name
      UA_HASNEWMSGS  8	Unread messages exist in room
      UA_ZAPPED      16	Zapped from known rooms list
      
      The sixth field is the user's current view for the room. (See VIEW command).
      
      The seventh field is the **default** view for the room. (See VIEW command).
      
      The eigth field is a unix timestamp which reflects the last time the room was
      modified (created, edited, posted in, deleted from, etc.)
      
      
      LKRO   (List Known Rooms with Old [no new] messages)
      
      This follows the same usage and format as LKRN.
      
      
      LZRM   (List Zapped RooMs)
      
      This follows the same usage and format as LKRN and LKRO.
      
      
      LKRA   (List All Known Rooms)
      
      Same format.  Lists all known rooms, with or without new messages.
      
      
      LRMS   (List all accessible RooMS)
      
      Again, same format.  This command lists all accessible rooms, known and
      forgotten, with and without new messages.  It does not, however, list
      inaccessible private rooms.
      
      
      LPRM   (List all Public RooMs)
      
      Again, same format. This command lists all public rooms, and nothing else.
      Unlike the other list rooms commands, this one can be executed without logging
      in.
      
      
      COMMANDS WHICH MANIPULATE ONE ROOM
      ----------------------------------
      
      
      RDIR   (Read room DIRectory)
      
      Use this command to read the directory of a directory room.  ERROR+NOT_HERE
      will be returned if the room has no directory, ERROR+HIGHER_ACCESS_REQUIRED
      will be returned if the room's directory is not visible and the user does not
      have administrator or Room administrator privileges, ERROR+NOT_LOGGED_IN will
      be returned if the user is not logged in; otherwise LISTING_FOLLOWS will be
      returned, followed by the room's directory.  Each line of the directory listing
      will contain three fields: a filename, the length of the file, and a description.
      
      The server message contained on the same line with LISTING_FOLLOWS will contain
      the name of the system and the name of the directory, such as:
      
        filez.tgz|2345678|application/x-tar|Hey all, have a look at that cool stuff
      
      
      SLRP   (Set Last-message-Read Pointer)
      
      This command marks all messages in the current room as read (seen) up to and
      including the specified number.  Its sole parameter is the number of the last
      message that has been read.  This allows the pointer to be set at any arbitrary
      point in the room.  Optionally, the parameter "highest" may be used instead of
      a message number, to set the pointer to the number of the highest message in
      the room, effectively marking all messages in the room as having been read (ala
      the Citadel "G"oto command).
      
      The command will return OK if the pointer was set, or ERROR+NOT_LOGGED_IN if
      the user is not logged in.  If OK is returned, it will be followed by a single
      argument containing the message number the last-read-pointer was set to.
      
      
      GETR   (GET Room attributes)
      
      This command is used for editing the various attributes associated with a room.
      A typical "edit room" command would work like this:
      
        * Use the GETR command to get the current attributes
        * Change some of them around
        * Use SETR (see below) to save the changes
        * Possibly also change the room administrator using the GETA and SETA commands
      
      GETR takes no arguments.  It will only return OK if the SETR command will also
      return OK.  This allows client software to tell the user that he/she can't edit
      the room **before** going through the trouble of actually doing the editing.
      Possible return codes are:
      
      ERROR+NOT_LOGGED_IN		No user is logged in.
      ERROR+HIGHER_ACCESS_REQUIRED	Not enough access.  Typically, only administrators and the
      				room administrator associated with the current room, can
      				access this command.
      OK				Command succeeded.  Parameters are returned.
      
      If OK is returned, the following parameters will be returned as well:
      
        - The name of the room
        - The room's password (if it's a passworded room)
        - The name of the room's directory (if it's a directory room)
        - Various flags (bits) associated with the room (see LKRN cmd above)
        - The floor number on which the room resides
        - The room listing order
        - The default view for the room (see views.txt)
        - A second set of flags (bits) associated with the room
      
      
      SETR   (SET Room attributes)
      
      This command sets various attributes associated with the current room.  It
      should be passed the following arguments:
      
        - The name of the room
        - The room's password (if it's a passworded room)
        - The name of the room's directory (if it's a directory room)
        - Various flags (bits) associated with the room (see LKRN cmd above)
        - "Bump" flag (see below)
        - The floor number on which the room should reside
        - The room listing order
        - The default view for the room (see views.txt)
        - A second set of flags (bits) associated with the room
      
      **Important: You should always use GETR to retrieve the current attributes of
      the room, then change what you want to change, and then use SETR to write it
      all back.  This is particularly important with respect to the flags: if a
      particular bit is set, and you don't know what it means, LEAVE IT ALONE and
      only toggle the bits you want to toggle.  This will allow for upward
      compatibility.**
      
      The _BASEROOM_, user's Mail> and Aide> rooms can only be partially edited. Any
      changes which cannot be made will be silently ignored.
      
      If the room is a private room, you have the option of causing all users who
      currently have access, to forget the room.  If you want to do this, set the
      "bump" flag to 1, otherwise set it to 0.
      
      
      RINF   (read Room INFormation file)
      
      Each room has associated with it a text file containing a description of the
      room, perhaps containing its intended purpose or other important information.
      The info file for the Lobby> (the system's base room) is often used as a
      repository for system bulletins and the like.
      
      This command, which accepts no arguments, is simply used to read the info file
      for the current room.  It will return LISTING_FOLLOWS followed by the text of
      the message (always in format type 0) if the request can be honored, or ERROR
      if no info file exists for the current room (which is often the case).  Other
      error description codes may accompany this result.
      
      When should this command be used?  This is, of course, up to the discretion of
      client software authors, but in Citadel it is executed in two situations: the
      first time the user ever enters a room; and whenever the contents of the file
      change.  The latter can be determined from the result of a GOTO command, which
      will tell the client whether the file needs to be read (see GOTO above).
      
      
      GETA
      
      This command is used to get the name of the Room administrator for the current
      room. It will return ERROR+NOT_LOGGED_IN if no user is logged in, or OK if
      the command succeeded.  Along with OK there will be returned one parameter: the
      name of the Room administrator.  A conforming server must guarantee that the
      user is always in some room.
      
      
      SETA
      
      The opposite of GETA, used to set the Room administrator for the current room.
      One parameter should be passed, which is the name of the user who is to be the
      new room administrator.  Under Citadel, this command may only be executed by
      administrators and by the **current** Room administrator for the room.  Return
      codes possible are:
      
      ERROR+NOT_LOGGED_IN          	Not logged in.
      ERROR+HIGHER_ACCESS_REQUIRED 	Higher access required.
      ERROR+NOT_HERE               	Room cannot be edited.
      OK                             	Command succeeded.
      
      
      KILL   (KILL current room)
      
      This command deletes the current room.  It accepts a single argument, which
      should be nonzero to actually delete the room, or zero to merely check whether
      the room can be deleted.
      
      Once the room is deleted, the current room is undefined.  It is suggested that
      client software immediately GOTO another room (usually _BASEROOM_) after this
      command completes.
      
      Possible return codes:
      
      |OK  |  room has been deleted (or, if checking only, request is valid).|
      |ERROR+NOT_LOGGED_IN  |  no user is logged in.|
      |ERROR+HIGHER_ACCESS_REQUIRED  |  not enough access to delete rooms.|
      |ERROR+NOT_HERE  |  this room can not be deleted.|
      
      
      
      
      CRE8   (CRE[ate] a new room)
      
      This command is used to create a new room.  Like some of the other commands, it
      provides a mechanism to first check to see if a room can be created before
      actually executing the command.  CRE8 accepts the following arguments:
      
      0	Create flag.  Set this to 1 to actually create the room.  If it is set to 0,
      	the server merely checks that there is a free slot in which to create a new
      	room, and that the user has enough access to create a room.  It returns OK
      	if the client should go ahead and prompt the user for more info, or ERROR or
      	ERROR+HIGHER_ACCESS_REQUIRED if the command will not succeed.
      1	Name for new room.
      2	Access type for new room:
      	0	Public
      	1	Private; can be entered by guessing the room's name
      	2	Private; can be entered by knowing the name **and** password
      	3	Private; invitation only (sometimes called "exclusive")
      	4	Personal (mailbox for this user only)
      3	Password for new room (if it is a type * 2 room)
      4	Floor number on which the room should reside (optional)
      5	Set to 1 to avoid automatically gaining access to the created room.
      6	The default "view" for the room.
      
      If the create flag is set to 1, the room is created (unless something went wrong
      and an ERROR return is sent), and the server returns OK, but the session is
      **not** automatically sent to that room.  The client still must perform a GOTO
      command to go to the new rooml must perform a GOTO command to go to the new room.
      
      
      FORG   (FORGet the current room)
      
      This command is used to forget (zap) the current room.  For those not familiar
      with Citadel, this terminology refers to removing the room from a user's own
      known rooms list, **not** removing the room itself.  After a room is forgotten,
      it no longer shows up in the user's known room list, but it will exist in the
      user's forgotten room list, and will return to the known room list if the user
      explicity requests the room by its exact name.
      
      The command takes no arguments.  If the command cannot execute for any reason,
      ERROR will be returned.  ERROR+NOT_LOGGED_IN or ERROR+NOT_HERE may be returned
      as they apply.
      
      If the command succeeds, OK will be returned.  At this point, the current room
      is **undefined**, and the client software is responsible for taking the user to
      another room before executing any other room commands (usually this will be
      _BASEROOM_ since it is always there).
      
      
      EINF   (Enter INFo file for room)
      
      Transmit the info file for the current room with this command.  EINF uses a
      boolean flag (1 or 0 as the first and only argument to the command) to determine
      whether the client actually wishes to transmit a new info file, or is merely
      checking to see if it has permission to do so.
      
      If the command cannot succeed, it returns ERROR.
      
      If the client is only checking for permission, and permission will be granted,
      OK is returned.
      
      If the client wishes to transmit the new info file, SEND_LISTING is returned,
      and the client should transmit the text of the info file, ended by the usual
      000 on a line by itself.
      
      
      INVT   (INViTe a user to a room)
      
      This command may only be executed by administrators, or by the room
      administrator for the current room.  It is used primarily to add users to
      invitation-only rooms, but it may also be used in other types of private rooms
      as well.  Its sole parameter is the name of the user to invite.
      
      The command will return OK if the operation succeeded. ERROR+NO_SUCH_USER
      will be returned if the user does not exist, ERROR+HIGHER_ACCESS_REQUIRED
      will be returned if the operation would have been possible if the user had
      higher access, and ERROR+NOT_HERE may be returned if the room is not a
      private room.
      
      
      WHOK   (WHO Knows room)
      
      This command is available only to administrators.
      ERROR+HIGHER_ACCESS_REQUIRED will be returned if the user is not an
      administrator.  Otherwise, it returns LISTING_FOLLOWS and then lists, one user
      per line, every user who has access to the current room.
      
      This command also accepts an optional argument "all" which will modify the
      output.  When this calling syntax is used, the output will consist of a listing
      of ALL users, one per line.  The first field in the output will be the user
      name, and the second will be a 1 or 0 to indicate whether the user does or does
      not have access to the current room.
      
      
      KICK   (KICK a user out of a room)
      
      This is the opposite of INVT: it is used to kick a user out of a private room.
      It can also be used to kick a user out of a public room, but the effect will
      only be the same as if the user [Z]apped the room - a non-stupid user can
      simply un-zap the room to get back in.
      
      
      Commands related to a room's file directory
      -------------------------------------------
      
      DELF   (DELete a File)
      
      This command deletes a file from the room's directory, if there is one.  The
      name of the file to delete is the only parameter to be supplied.  Wildcards are
      not acceptable, and any slashes in the filename will be converted to
      underscores, to prevent unauthorized access to neighboring directories.  The
      possible return codes are:
      
      OK                            Command succeeded.  The file was deleted.
      ERROR+NOT_LOGGED_IN           Not logged in.
      ERROR+HIGHER_ACCESS_REQUIRED  Not an administrator or Room administrator.
      ERROR+NOT_HERE                There is no directory in this room.
      ERROR+FILE_NOT_FOUND          Requested file was not found.
      
      
      MOVF   (MOVe a File)
      
      This command is similar to DELF, except that it moves a file (and its associated
      file description) to another room.  It should be passed two parameters: the name
      of the file to move, and the name of the room to move the file to.  All of the
      same return codes as DELF may be returned, and also one additional one:
      ERROR+NO_SUCH_ROOM, which means that the target room does not exist.
      ERROR+NOT_HERE could also mean that the target room does not have a directory.
      
      
      OPEN   (OPEN a file for download)
      
      This command is used to open a file for downloading.  Only one download file may
      be open at a time.  The only argument to this command is the name of the file to
      be opened.  The user should already be in the room where the file resides.
      Possible return codes are:
      
      ERROR+NOT_LOGGED_IN           
      ERROR+NOT_HERE               no directory in this room
      ERROR+FILE_NOT_FOUND         could not open the file
      ERROR                        misc errors
      OK                           file is open
      
      If the file is successfully opened, OK will be returned, along with the size (in
      bytes) of the file, the time of last modification (if applicable), the filename
      (if known), and the MIME type of the file (if known).
      
      
      CLOS   (CLOSe the download file)
      
      This command is used to close the download file.  It returns OK if the file was
      successfully closed, or ERROR if there wasn't any file open in the first place.
      
      
      READ   (READ from the download file)
      
      Two arguments are passed to this command.  The first is the starting position in
      the download file, and the second is the total number of bytes to be read.  If
      the operation can be performed, BINARY_FOLLOWS will be returned, along with the
      number of bytes to follow.  Then, immediately following the newline, will be
      that many bytes of binary data.  The client **must** read exactly that number of
      bytes, otherwise the client and server will get out of sync.
      
      If the operation cannot be performed, any of the usual error codes will be returned.
      
      
      UOPN   (OPeN a file for Uploading)
      
      This command is similar to OPEN, except that this one is used when the client
      wishes to upload a file to the server.  The first argument is the name of the
      file to create, the second argument is the MimmeType of the file and the third
      argument is a one-line comment describing the contents of the file.  Only one
      upload file may be open at a time.  Possible return codes are:
      
      |ERROR+NOT_LOGGED_IN         | |
      |ERROR+NOT_HERE              |no directory in this room|
      |ERROR+FILE_NOT_FOUND        |a name must be specified|
      |ERROR                       |miscellaneous errors|
      |ERROR+ALREADY_EXISTS        |a file with the same name already exists|
      |OK                          | |
      
      If OK is returned, the command has succeeded and writes may be performed.
      
      
      UCLS   (CLoSe the Upload file)
      
      Close the file opened with UOPN.  An argument of "1" should be passed to this
      command to close and save the file; otherwise, the transfer will be considered
      aborted and the file will be deleted.  This command returns OK if the operation
      succeeded or ERROR if it did not.
      
      
      WRIT   (WRITe to the upload file)
      
      If an upload file is open, this command may be used to write to it.  The
      argument passed to this command is the number of bytes the client wishes to
      transmit.  An ERROR code will be returned if the operation cannot be performed.
      
      If the operation can be performed, SEND_BINARY will be returned, followed by the
      number of bytes the server is expecting.  The client must then transmit exactly
      that number of bytes.  Note that in the current implementation, the number of
      bytes the server is expecting will always be the number of bytes the client
      requested to transmit, but the client software should never assume this.
      
      
      UIMG   (Upload an IMaGe file)
      
      UIMG is complemenary to OIMG; it is used to upload an image to the server. The
      first parameter supplied to UIMG should be 0 if the client is only checking for
      permission to upload, or 1 if the client is actually attempting to begin the
      upload operation.  The second argument should specify the MIME type of the
      image.  The third argument is the name of the file to be transmitted.  The
      filename is converted to all lower case and stored in the "images" directory.
      
      UIMG returns OK if the client has permission to perform the requested upload, or
      ERROR+HIGHER_ACCESS_REQUIRED otherwise.  If the client requested to begin the
      operation (first parameter set to 1), an upload file is opened, and the client
      should begin writing to it with WRIT commands, then close it with a UCLS command.
      
      The supplied filename should be one of the "well known" filenames described in
      the writeup for the OIMG command.
      
      
      OIMG   (Open an IMaGe file)
      
      Open an image (graphics) file for downloading.  Once opened, the file can be
      read as if it were a download file.  This implies that an image and a download
      cannot be opened at the same time.  OIMG returns the same result codes as OPEN.
      
      In the case of Citadel, the server will convert the supplied filename to all
      lower case and look for it in the "images" subdirectory.  As with the MESG
      command, there are several "well known" images which are likely to exist on
      most servers:
      
      hello        "Welcome" graphics to be displayed alongside MESG "hello"
      goodbye      Logoff banner graphics to be displayed alongside MESG "goodbye"
      background   Background image (usually tiled) for graphical clients
      
      
      DLRI   (DownLoad Room Image)
      
      Download the image (photo, icon, etc.) associated with the current room.  If
      successful, DLRI returns data in the same format as the DLAT (DownLoad
      ATtachment) command: a BINARY_FOLLOWS code followed by three parameters - the
      number of bytes in the data, a filename (always empty), the MIME type of the
      image (such as image/gif), and the character set (always empty).
      
      
      ULRI   (UpLoad Room Image)
      
      Upload the image (photo, icon, etc.) associated with the current room.  This
      command should be passed two parameters:
      
      0    Data length to be transmitted (in bytes)
      1    MIME Content-Type of the data to be transmitted
      
      An error will occur if a user without administrative privileges attempts to
      change a room image.
      
      If successful, a SEND_BINARY response will be delivered, along with the number
      of bytes expected.  The client MUST then transmit a binary blob containing that
      number of bytes.
      
      
       
      
      
      
      Commands that change the behavior of this Citadel System
      --------------------------------------------------------
      
      
      Overall Configuration
      ---------------------
      
      
      CONF   (get or set global CONFiguration options)
      
      Retrieves or sets various system-wide configuration and policy options.  This
      command is only available to Admins.
      
      The six forms of this command are:
        CONF GETVAL|name
        CONF PUTVAL|name|value
        CONF LISTVAL
        CONF GET
        CONF SET
        CONF GETSYS|name
        CONF PUTSYS|name
      
      Each configuration variable has a name (see below) which can be read or set.
        CONF GETVAL will read the value of a configuration variable by name.
        CONF PUTVAL will set the value of a configuration variable by name.
        CONF LISTVAL will list all configuration variable names and values.
      
      There is also a legacy mode (CONF GET and CONF SET) available.  These
      subcommands are deprecated and should not be used in new implementations.
      If the GET command succeeds, CONF will return LISTING_FOLLOWS followed by the
      fields described below, one line at a time.  If the SET command succeeds, CONF
      will return SEND_LISTING and expect the fields described below, one line at a
      time (don't worry about other fields being added in the future; if a 'short'
      configuration list is sent, the missing values at the end will be left unchanged
      on the system).  If either command fails for any reason, ERROR is returned.
      
      The configuration lines are as follows:
      Line	Variable name		Value
      ------	--------------------	-----------------------------------------------
      0	c_nodename		Node name
      1	c_fqdn			Fully qualified domain name
      2	c_humannode		Human-readable node name
      3	c_phonenum		Land line telephone number of this system
      4	c_creataide		Flag (0 or 1) - creator of private room
      				automatically becomes room administrator
      5	c_sleeping		Server connection idle timeout (in seconds)
      6	c_initax		Initial access level for new users
      7	c_regiscall		Flag (0 or 1) - require registration for new users
      8	c_twitdetect		Flag (0 or 1) - automatically move Problem User messages to twit room
      9	c_twitroom		Name of twit room
      10	c_moreprompt		Text of paginator prompt for console-based clients (for example, "[more]")
      11	c_restrict		Flag (0 or 1) - restrict access to Internet mail
      12	c_bbs_city		Geographic location of this system
      13	c_sysadm		Name of the system administrator
      14	c_maxsessions		Number of maximum concurrent sessions allowed on the server
      15				(placeholder -- this field is no longer in use)
      16	c_userpurge		Default purge time (in days) for users
      17	c_roompurge		Default purge time (in days) for rooms
      18	c_logpages		Name of room to log instant messages to (or a zero-length name for none)
      19	c_createax		Access level required to create rooms
      20	c_maxmsglen		Maximum message length which may be entered into the system
      21	c_min_workers		Minimum number of worker threads
      22	c_max_workers		Maximum number of worker threads
      23	c_pop3_port		Port number for POP3 service
      24	c_smtp_port		Port number for SMTP service
      25	c_rfc822_strict_from	Flag (0-3) - strict RFC822 adherence
      				0: no from: headers altered
      				1: only if not a valid email alias of the user
      				2: always the users primary email address
      				3: Reject the mail if its not a valid alias
      26	c_aide_zap		Flag (0 or 1) - allow administrators to zap (forget) rooms
      27	c_imap_port		Port number for IMAP service
      28	c_net_freq		How often (in seconds) to run network processing jobs
      29	c_disable_newu		Flag (0 or 1) - disable self-service new user registration
      30				(placeholder -- this field is no longer in use)
      31	c_purge_hour		Hour (0 through 23) during which database auto-purge jobs are run
      32	c_ldap_host		Name of host where an LDAP service may be found
      33	c_ldap_port		Port number of LDAP service on above host
      34	c_ldap_base_dn		LDAP Base DN
      35	c_ldap_bind_dn		LDAP Bind DN
      36	c_ldap_bind_pw		Password for LDAP Bind DN
      37	c_ip_addr		Server IP address to listen on (or "0.0.0.0" for all addresses)
      38	c_msa_port		Port number for SMTP MSA service
      39	c_imaps_port		Port number for IMAPS (SSL-encrypted IMAP)
      40	c_pop3s_port		Port number for POP3S (SSL-encrypted POP3)
      41	c_smtps_port		Port number for SMTPS (SSL-encrypted SMTP)
      42	c_enable_fulltext	Flag (0 or 1) - enable full text search index
      43	c_auto_cull		Flag (0 or 1) - automatically cull database log files
      44	c_instant_expunge	Flag (0 or 1) - enable IMAP"instant expunge" of deleted messages
      45	c_allow_spoofing	Flag (0 or 1) - allow unauthenticated SMTP clients to spoof my domains
      46	c_journal_email		Flag (0 or 1) - perform journaling of email messages
      47	c_journal_pubmsgs	Flag (0 or 1) - perform journaling of non-email messages
      48	c_journal_dest		Address to which journalized messages are to be sent
      49	c_default_cal_zone	Default time zone (Olsen database name) for unzoned calendar items
      50	c_pftcpdict_port	Port number for Postfix TCP Dict
      51				(placeholder - no longer in use)
      52	c_auth_mode		Authentication mode:
      				0 for native, 1 for host (PAM) auth,
      				2 LDAP with POSIX schema, 3 LDAP with MS AD schema
      53				(placeholder -- this field is no longer in use)
      54				(placeholder -- this field is no longer in use)
      55				(placeholder -- this field is no longer in use)
      56				(placeholder -- this field is no longer in use)
      57	c_rbl_at_greeting	Flag (0 or 1) - perform RBL checks before SMTP greeting
      				instead of after RCPT command
      58				(placeholder - no longer in use)
      59				(placeholder - no longer in use)
      60	c_pager_program		External pager command
      61	c_imap_keep_from	IMAP keep original from header in msgs
      62	c_xmpp_c2s_port		XMPP client-to-server port (usually 5222)
      63	c_xmpp_s2s_port		XMPP server-to-server port (usually 5269)
      64	c_pop3_fetch		POP3 Aggregator System Default Frequency
      65	c_pop3_fastest		POP3 Aggregator minimum poll Frequency
      66	c_spam_flag_only	set to 1 to flag spam instead of rejecting it
      67	c_guest_logins		set to 1 to allow anonymous guest logins
      68	c_port_number		Listening port number for Citadel client protocol
      69	c_ctdluid		User id (uid) under which Citadel server will run
      70	c_nntp_port		Port number for NNTP service
      71	c_nntps_port		Port number for NNTPS (SSL-encrypted NNTP)
      72	smtp_advertise_starttls	Set to 1 to offer STARTTLS in the SMTP server
      
      CONF also accepts two additional commands: GETSYS and PUTSYS followed by an
      arbitrary MIME type (such as application/x-citadel-internet-config) which
      provides a means of storing generic configuration data in the Global System
      Configuration room without the need to add extra get/set commands to the server.
      
      Some of these configuration variables will have no effect depending on how the server
      is configured.  For example, the LDAP-specific configs have no effect on Citadel
      servers in which LDAP support is not enabled.
      
      
      Commands related to the auto-purger
      -----------------------------------
      
      The citadel system is designed to let messages vanish once they've been a
      certain time on the system, and are no longer of interest to user. These
      commands configure the global configuration. This is available on a per room
      basis too.  For a technical discussion of how this works internally, read the
      documentation article on deferred processing.
      
      
      GPEX   (Get Policy for message EXpiration)
      
      Returns the policy of the current room, floor, or site regarding the automatic
      purging (expiration) of messages.  The following policies are available:
      
      0	EXPIRE_NEXTLEVEL	Inherit the policy of the next higher
      				level.  If this is a room, use the floor's default
      				policy.  If this is a floor, use the system
      				default policy.  This is an invalid value for the
      				system policy.
      1	EXPIRE_MANUAL		Do not purge messages automatically.
      2	EXPIRE_NUMMSGS		Purge by message count.
      				(Requires a value: number of messages)
      3	EXPIRE_AGE		Purge by message age.
      				(Requires a value: number of days)
      
      The format of this command is:  
        GPEX [which]
      The value of [which] must be one of:
      	"roompolicy" "floorpolicy" "sitepolicy" "mailboxespolicy"
      
      If successful, GPEX returns OK followed by [policy]|[value].
      
      
      SPEX   (Set Policy for message EXpiration)
      
      Sets the policy of the current room, floor, or site regarding the automatic
      purging (expiration) of messages.  See the writeup for the GPEX command for the
      list of available policies.
      
      The format of this command is:  SPEX which|policy|value The value of
      [which] must be one of: "room" "floor" "site" "mailboxes"
      
      If successful, GPEX returns OK; otherwise, an ERROR code is returned.
      
      
      TDAP   (manually initate The Dreaded Auto Purger)
      
      Nearly all database maintenance involving the removal of deleted or expired
      items from the database is deferred until off-hours in order to improve the
      interactive performance of the system.  This nightly job is affectionately
      known as The Dreaded Auto-Purger, and it runs at an hour which is specified in
      the global system configuration.
      
      If for some reason you want to manually initiate a run of the purger, the TDAP
      command can be issued.  This command will ignore any parameters passed to it,
      and of course it will fail if the user is not an administrator.  If the command
      is accepted, OK is returned, and the purger will begin running within one minute.
      If the command is not accepted, ERROR is returned.
      
      
      Server Maintenance Commands
      ---------------------------
      
      SMTP   (utility commands for the SMTP gateway)
      
      This command, accessible only by administrators, supports several utility operations
      which examine or manipulate Citadel's SMTP support. The first command argument
      is a subcommand telling the server what to do. The following subcommands are supported:
      
      SMTP mx|hostname	(display all MX hosts for 'hostname')
      SMTP runqueue		(attempt immediate delivery of all messages in the outbound
      			SMTP queue, ignoring any retry times stored there)
      
      
      DOWN   (shut DOWN the server)
      
      This command, which may only be executed by an administrator, immediately shuts
      down the server.  The server will disconnect all active client sessions and
      closes its databases as quickly as possible.  It then exits with exit code 0.
      
      OK is returned if the user is allowed to shut down the server, in which case the
      client program should expect the connection to be immediately broken.
      
      
      SCDN   (Schedule or Cancel a shutDowN)
      
      SCDN sets or clears the "scheduled shutdown" flag.  Pass this command a 1 or 0
      to respectively set or clear the flag.  When the "scheduled
      shutdown" flag is set, the server will be shut down when there are no longer any
      users logged in. Any value other than 0 or 1 will not change the flag,
      only report its state. No users will be kicked off the system, and in fact the
      server is still available for new connections.  The command returns ERROR if it
      fails; otherwise, it returns OK followed by a number representing the current state of the flag.
      
      
      HALT   (HALT the server without shutting it down)
      
      Identical to the DOWN command, except instead of exiting, the server process
      cleans up and then suspends indefinitely.  This could potentially be useful for
      shutdown scripts that don't want init to automatically respawn another citserver
      process.
      
      
      User Related Commands
      ---------------------
      
      
      Session authentication
      ----------------------
      
      NEWU   (create NEW User account)
      
      This command creates a new user account **AND LOGS IT IN**. The argument to this
      command will be the name of the account. No case conversion is done on the name.
      Note that the new account is installed with a default configuration, and no
      password, so the client should immediately prompt the user for a password and
      install it with the SETP command as soon as this command completes. This command
      returns OK if the account was created and logged in, ERROR+ALREADY_EXISTS if
      another user already exists with this name, ERROR+NOT_HERE if self-service
      account creation is disabled, ERROR+MAX_SESSIONS_EXCEEDED if too many users are
      logged in, ERROR+USERNAME_REQUIRED if a username was not provided, or
      ERROR+ILLEGAL_VALUE if the username provided is invalid. If OK, it will also
      return the same parameters that PASS returns.
      
      Please note that the NEWU command should only be used for self-service user
      account creation.  For administratively creating user accounts, please use the
      CREU command.
      
      
      CREU   (CREate new User account)
      
      This command creates a new user account **AND DOES NOT LOG IT IN**. The first
      argument to this command will be the name of the account. No case conversion
      is done on the name. Note that the new account is installed with a default
      configuration, and no password. The second argument is optional, and will be an
      initial password for the user. This command returns OK if the account was
      created, ERROR+HIGHER_ACCESS_REQUIRED if the user is not an administrator,
      ERROR+USERNAME_REQUIRED if no username was specified, or ERROR+ALREADY_EXISTS
      if another user already exists with this name.
      
      Please note that CREU is intended to be used for activities in which a system
      administrator is creating user accounts. For self-service user account creation,
      use the NEWU command.
      
      
      VALI   (VALIdate user)
      
      This command is used to validate users.  Obviously, it can only be executed by
      users with administrator level access.  It should be passed two parameters: the
      name of the user to validate, and the desired access level
      
      If the command succeeds, OK is returned.  The user's access level is changed and
      the "need validation" bit is cleared.  If the command fails for any reason,
      ERROR, ERROR+NO_SUCH_USER, or ERROR+HIGHER_ACCESS_REQUIRED will be returned.
      
      
      QUSR   (Query for a USeR)
      This command is used to check to see if a particular user exists.  The only
      argument to this command is the name of the user being searched for.  If the
      user exists, OK is returned, along with the name of the user in the userlog (so
      the client software can learn the correct upper/lower casing of the name if
      necessary).  If the user does not exist, ERROR+NO_SUCH_USER is returned. No
      login or current room is required to utilize this command.
      
      
      LIST   (user LISTing)
      
      This is a simple user listing.  It always succeeds, returning LISTING_FOLLOWS
      followed by zero or more user records, 000 terminated.  The fields on each line
      are as follows:
      
        - User display name
        - Access level
        - User number
        - Date/time of last login (Unix timestamp format)
        - (empty field)
        - (empty field)
        - Password (listed only if the user requesting the list is an administrator)
      
      Unlisted entries will also be listed to administrators logged into the server,
      but not to ordinary users.
      
      The LIST command accepts an optional single argument, which is a simple,
      case-insensitive search string. If this argument is present, only usernames in
      which the search string is present will be returned. It is a simple substring
      search, not a regular expression search. If this string is empty
      or not present, all users will be returned.
      
      
      Commands which manipulate user records
      --------------------------------------
      
      SETP   (SET new Password)
      
      This command sets a new password for the currently logged in user. The argument
      to this command will be the new password. The command always returns OK, unless
      the client is not logged in, in which case it will return ERROR+NOT_LOGGED_IN,
      or if the user is an auto-login user, in which case it will return
      ERROR+NOT_HERE.
      
      If the specified password is the string "GENERATE_RANDOM_PASSWORD", then a
      random password will be generated, and returned to the client immediately after
      the OK success code.  This might be useful for hosting systems which provide a
      way for a user to administratively reset a password via email, for example.
      
      
      GETU   (GET User configuration)
      
      This command retrieves the configuration options for the currently logged in
      account.  ERROR+NOT_LOGGED_IN will be returned if no user is logged in, of
      course.  Otherwise, OK will be returned, followed by four parameters.
      
      The first two parameters in the past conveyed the stored screen dimensions for
      the user, but since modern displays are able to communicate their screen
      dimensions back to the system this is no longer needed, so the server always
      returns 80x24 as a placeholder.
      
      The third parameter is a bag of bits with the following meanings:
      
      US_LASTOLD	16		Print last old message with new
      US_EXPERT	32		Experienced user (suppress some of the help blurbs)
      US_UNLISTED	64		Unlisted userlog entry
      US_NOPROMPT	128		Don't prompt after each message
      US_DISAPPEAR	512		Use "disappearing msg prompts"
      US_PAGINATOR	2048		Pause after each screen of text
        
      There are other bits, too, but they can't be changed by the user (see below).
      
      
      SETU   (SET User configuration)
      
      This command does the opposite of GETU: it takes the screen dimensions and user
      options (which were probably obtained with a GETU command, and perhaps modified
      by the user) and writes them to the user account.  This command should be passed
      three parameters: the screen width, the screen height, and the option bits (see
      above).  It returns ERROR+NOT_LOGGED_IN if no user is logged in, and
      ERROR+ILLEGAL_VALUE if the parameters are incorrect.
      
      Note that there exist bits here which are not listed in this document. Some are
      flags that can only be set by administrators. SETU will ignore attempts to
      toggle these bits. There also may be more user settable bits added at a later
      date. To maintain later downward compatibility, the following procedure is suggested:
      
        * Execute GETU to read the current flags
        * Toggle the bits that we know we can toggle
        * Execute SETU to write the flags
      
      If we are passed a bit whose meaning we don't know, it's best to leave it
      alone, and pass it right back to the server.  That way we can use an old client
      on a server that uses an unknown bit without accidentally clearing it every
      time we set the user's configuration.
      
      As noted above, we no longer store per-user screen dimensions, so any value supplied will be ignored.
      
      
      EBIO   (Enter BIOgraphy)
      
      Transmit to the server a free-form text file containing a little bit of
      information about the user for other users to browse.  This is typically
      referred to as a 'bio' online.  EBIO returns SEND_LISTING if it succeeds, after
      which the client is expected to transmit the file, or any of the usual ERROR
      codes if it fails.
      
      
      RBIO   (Read BIOgraphy)
      
      Receive from the server a named user's bio.  This command should be passed a
      single argument - the name of the user whose bio is requested.  RBIO returns
      LISTING_FOLLOWS plus the bio file if the user exists and has a bio on file. The
      return has the following parameters:  the user name, user number, access level,
      date of last call, (empty field), and (empty field).  This command returns
      ERROR+NO_SUCH_USER if the named user does not exist.
      
      RBIO no longer considers a user with no bio on file to be an error condition.
      It now returns a message saying the user has no bio on file as the text of the
      bio. This allows newer servers to operate with older clients.
      
      
      DLUI   (DownLoad User Image)
      
      Download the image (photo, icon, avatar, etc.) associated with a user account.
      This command should be passed a single argument - the name of the user whose
      photo is requested.   If successful, DLUI returns data in the same format as the
      DLAT (DownLoad ATtachment) command: a BINARY_FOLLOWS code followed by three
      parameters - the number of bytes in the data, a filename (always empty), the
      Content-Type (such as image/gif), and the character set (always empty).
      
      
      ULUI   (UpLoad User Image)
      
      Upload the image (photo, icon, avatar, etc.) associated with a user account.
      This command may be passed either two or three parameters:
      
      0	Data length to be transmitted (in bytes)
      1	MIME Content-Type of the data to be transmitted
      2	(Optional) name of the user whose image is being uploaded.
      	If empty, assumes the currently logged in user.
      
      An error will occur if a user without administrative privileges attempts to
      change another user's photo, or if a nonexistent user is specified.
      
      If successful, a SEND_BINARY response will be delivered, along with the number
      of bytes expected.  The client MUST then transmit a binary blob containing that
      number of bytes.
      
      
      AGUP | ASUP   (Administrative Get / Set User Parameters)
      
      These commands are only executable by administrators.  They are used to get/set
      any and all parameters relating to a user account.  AGUP requires only one
      argument: the name of the user in question.  ASUP requires all of the parameters
      to be set.  The parameters are as follows, and are common to both commands:
      
      0	User name
      1	Password
      2	Flags (see libcitadel.h; US_*)
      3	(empty field)
      4	(empty field)
      5	Access level
      6	User number
      7	Timestamp of last call
      8	Purge time (in days) for this user (or 0 to use system default)
      
      Upon success, AGUP returns OK followed by all these parameters, and ASUP simply
      returns OK.  If the client has insufficient access to perform the requested
      operation, ERROR+HIGHER_ACCESS_REQUIRED is returned.  If the requested user does
      not exist, ERROR+NO_SUCH_USER is returned.
      
      If 1 to 8 are 0, the user will be scheduled for deletion; he will be unable to
      log in or send/receive email; His data will be removed on the next run of the
      auto-purger; Until then, you won't be able to re-create a similar user.
      
      
      AGEA (Administrative Get Email Addresses)
      
      This command is only executable by administrators.  It is used to retrieve a
      list of Internet email addresses associated with a user account.  The sole
      parameter to be passed is the name of the user being queried.
      
      If the current user is an administrator and the requested user account exists,
      AGEA will return OK followed by a delimited list of email addresses; otherwise
      an appropriate error code is returned.
      
      
      ASEA (Administrative Set Email Addresses)
      
      This command is only executable by administrators.  It is used to set the list
      of Internet email addresses associated with a user account.  If the current
      user is an administrator and the requested user account exists, ASEA will return
      SEND_LISTING, at which time the client is expected to transmit a list of all
      Internet email addresses to be associated with the account.  This list *replaces*
      any existing email addresses associated with the account.  Any addresses
      that are invalid, or belong to domains not associated with the Citadel server,
      or belong to other users, will be silently discarded.
      
      If the current user is not an administrator or if the requested user account
      does not exist, an appropriate error code is returned.
      
      
      RENU   (REName a User)
      
      Because the Citadel system uses the display name of a user as the primary
      database key for the account, changing the display name requires a separate
      operation.   RENU renames a user.  It must be supplied with two parameters: the
      old (existing) and new (desired) user account names.
      
      RENU will return one of the following codes:
      
      OK				Operation succeeded; the user has been renamed.
      ERROR+ALREADY_LOGGED_IN		The user cannot be renamed because the account
      				is currently logged in.
      ERROR+NO_SUCH_USER		The specified user does not exist.
      ERROR+ALREADY_EXISTS		An account with the requested new name already exists.
      
      
      GNUR   (Get Next Unvalidated User)
      
      This command shows the name of a user that needs to be validated.  If there are
      no unvalidated users, OK is returned.  Otherwise, MORE_DATA is returned along
      with the name of the first unvalidated user the server finds.  All of the usual
      ERROR codes may be returned as well (for example, if the user is not an
      administrator and cannot validate users).
      
      A typical "Validate New Users" command would keep executing this command, and
      then validating each user it returns, until it returns OK when all new users
      have been validated.
      
      
      GREG   (Get REGistration for user)
      
      This command retrieves the registration info for a user, whose name is the
      command's sole argument.  All the usual error messages can be returned.  If the
      command succeeds, LISTING_FOLLOWS is returned, followed by the user's name
      (retrieved from the userlog, with the right upper and lower case etc.)  The
      contents of the listing contains one field per line, followed by the usual 000
      on the last line.
      
      The following lines are defined.  Others WILL be added in the futre, so all
      software should be written to read the lines it knows about and then ignore all
      remaining lines:
      
      1	User number
      2	Password
      3	Real name
      4	Street address or PO Box
      5	City/town/village/etc.
      6	State/province/etc.
      7	ZIP or Postal Code
      8	Telephone number
      9	Access level
      10	Internet e-mail address
      11	Country
      
      Users without administrator privileges may retrieve their own registration
      using this command.  This can be accomplished either by passing the user's own
      name as the argument, or the string "_SELF_".  The command will always succeed
      when used in this manner, unless no user is logged in.
      
      
      REGI   (send REGIstration)
      
      Clients will use this command to transmit a user's registration info.  If no
      user is logged in, ERROR+NOT_LOGGED_IN is returned.  Otherwise, SEND_LISTING is
      returned, and the server will expect the following information (terminated by
      000 on a line by itself):
      
      1	Real name
      2	Street address or PO Box
      3	City/town/village/etc.
      4	State/province/etc.
      5	ZIP or postal code
      6	Telephone number
      7	email address
      8	Country
      
      Please note that this command is deprecated.  The preferred way to transmit
      this information is to submit it as a vCard (with MIME type "text/x-vcard") to
      the user's "My Citadel Config" room.
      
      
      CHEK   (CHEcK various things)
      
      When logging in, there are various things that need to be checked.   This
      command will return ERROR+NOT_LOGGED_IN if no user is logged in.  Otherwise it
      returns OK and the following parameters:
      
      0	Number of new private messages in Mail>
      1	Nonzero if the user needs to register
      2	(Relevant to administrators only) Nonzero if new users require validation
      3	The user's preferred Internet e-mail address
      
      
      
      Runtime Attribute Manipulation
      ------------------------------
      
      Users can modify the way they are anounced to others using these commands. This
      data is shown for example in the "who is online" list
      
      
      STEL   (enter STEaLth mode)
      
      When in "stealth mode," a user will not show up in the "Who is online" listing
      (the RWHO server command).  Only administrators may use stealth mode.  The STEL
      command accepts one argument: a 1 indicating that the user wishes to enter
      stealth mode, or a 0 indicating that the user wishes to exit stealth mode.
      STEL returns OK if the command succeeded, ERROR+NOT_LOGGED_IN if no user is
      logged in, or ERROR+HIGHER_ACCESS_REQUIRED if the user is not an
      administrator; followed by a 1 or 0 indicating the new state.
      
      If any value other than 1 or 0 is sent by the client, the server simply replies
      with 1 or 0 to indicate the current state without changing it.
      
      The STEL command also hides a user's presence from chat rooms.
      
      
      There are no social media links here. Enjoy a friendly Citadel community instead. Or go outside.
      It seemed quite as undeniable, as we stood there, that Ned Ferry owed Cécile a better acquaintance. Every new hour enhanced her graces, and were I, here, less engrossed with her companion, I could pitch the praises of Cécile upon almost as high and brilliant a key--there may be room for that yet. Ferry moved on at her side. Charlotte stayed a moment to laugh at a squirrel, and then turned to walk, saying with eyes on the earth-- "You have overdone yourself," he said with his cool hand on the fevered pulse. "Few men could stand the strain of your present life. You must go away at once to some very quiet place and be in the open air all day----" He was quite upset, and evidently thought that the best plan was to muzzle me by taking me away from the others as quickly as possible. trunk unpacked and Florence (the little one) already struggling that before. an old dear! “There’s a big, closed can for waste and oily rags,” he commented, “but anyone would suffocate who hid in that!” “But it was locked and all doors down,” Jeff grunted. “Why waste time there?” “That seems to be the fact,” Mr. Whiteside admitted. “Before the arrival of the yacht I had no inkling that this fellow had come over; but Mrs. Everdail was so nervous and worried, we decided to fly out to meet the yacht, just as Jeff, who had been retained before Everdail found me, decided to do.” "No," he agreed, "it doesn't matter. And I shall do well enough." Then the three went out, and she finished her breakfast alone. He had no idea what had happened to him: and that added to his fright and to his fear of a recurrence. Chapter 18 Chapter 2 It is almost useless to add, that the charters were soon after revoked, and thus failed the first struggle of the British helots. HoME男人插曲女人视频在线 ENTER NUMBET 0018whhkys.com.cn
      www.hfxaty.com.cn
      gdio.org.cn
      www.svux.com.cn
      yqto.com.cn
      www.sshlt.com.cn
      www.whssxk.com.cn
      datamen.com.cn
      henganda.com.cn
      www.kmpaige.com.cn
      妈咪大肥穴 人体艺术之巨乳美女 荡妇撸吧 99xoy 图片色姐妹 妓女的体会 换妻先锋影音 苍井空超过激交大乱 姥姥视频2014国语版 鸡巴操逼故事 日本人妻性交集中营 欧洲妈妈与儿子16p 少妇日本干 WWW.A1J3.COM WWW.BBB030.COM WWW.KK147.COM WWW.765T.COM WWW.NUMC.KIM WWW.BT633.COM WWW.AJJMW.COM WWW.ABC15.COM WWW.DSO9.COM WWW.952ZY.COM WWW.ZGFSEP.COM WWW.LU2GE1.COM WWW.PAIDAI.COM WWW.LQBJL.COM WWW.FHXS.COM WWW.WBC0.COM WWW.99RE6A.COM WWW.NBSESE1.COM WWW.TANGRT.COM WWW.BBB916.COM WWW.EEEE72.COM WWW.3KVCD.COM WWW.PK659.COM WWW.TTGMM.COM WWW.HNQXDB.COM WWW.ERM-SMG.COM WWW.METESHOW.COM WWW.KING22PT.COM WWW.DX6X.COM WWW.YY0806.COM WWW.90SSSS.COM WWW.BCEDU.COM WWW.DLKOO.COM WWW.GXTCHINA.COM WWW.KXS777.COM WWW.ZPJX168.COM WWW.FQ48.COM WWW.BBB286.COM WWW.J607.COM WWW.AAA27.COM WWW.AVVTTCC.NET WWW.BJCXJYBJGS.COM WWW.TSS79.COM WWW.Q.COM.CN WWW.AAA885.COM WWW.DAKCN.COM WWW.LUDIJT.COM WWW.AOAOLU6.COM WWW.ADY67.COM WWW.HFWANHE.COM WWW.HNHYJS.COM WWW.CARBAZE.COM WWW.DAPU.COM WWW.96RTYS.COM WWW.491R.COM WWW.CECRYP.COM WWW.XXOO99.COM WWW.COINSKY.COM WWW.234YAO.COM WWW.KI93.COM WWW.1QAF.COM WWW.TOM365S.COM WWW.FZXINQI.COM WWW.77XOY.COM WWW.XX5432.COM WWW.SSEE22.COM WWW.PAO14.COM WWW.HFTZDK.COM WWW.WLFFC.COM WWW.HAOFEET.COM WWW.7TGOU.COM WWW.AIERCC.COM WWW.HJ5200.COM WWW.K02U.COM WWW.65JM.COM WWW.I-AB.COM WWW.HEN19494.NET WWW.LULUSEQING.COM 操妹妹a片96shshxxcomwww78p78info 骚小妹电话号码 苍井空多大排的黄片mlaijiemicom 芳汤 九九视频九九热视频在线wap993aacomwwwjiujiurespnet 七次郎少女 yy88免费电影 搜索恰红院成人 美女交配做爱片 avlu2828 gogo人体摄影总库 在线骚逼视频 第四色先锋视频 国产自拍剧情在线 限制级乙女漫画 哺乳的激情小说 狂干姐姐屁眼 乱伦校园网 亚洲色无码在线观看 图图成人资源网站 琪琪日逼网 伦理片好色小姨百度 酒色网女色网 90后香港非主流黑丝袜美女 神马老子伦理电影 京香在线视频 原杏 丝袜制服偷拍自拍亚洲色图 亚洲色图-百度-百度 htppg234g 色qing小说 妹子自慰无码视频 鸡巴好大啪啪 81av·在线视频o191com www775qqcom 欧美男女av影片 爱情电影网欧美性爱 成人做爱有哪些影院 嫂嫂大骚逼 日本工口小说 番号大全 干妞91视频 巨乳Av导航 色米奇奇米影视 强奸岳母 五月花婷婷激情小说 国内成人免费黄片 色色色色爸酒吧影院 Av大逼 欧美2015超碰在线视频 激情五天色播 爆乳美女无码15p 卡通动漫成人动漫校园春色蜜穴肉棒大量精液 咪咪色站 有声书收听 swwwporndigcom 欠草在线播放 kin8tengoku首页官网 www欧美淫com 成仁片免费网 强奸乱伦手机网站 乱伦孙婆在线97 tube妈妈阴部 人妻激情小 女人与狗在线磁力 在线观看亚洲黄色网站 姐妹花(又名幼交四部曲) 成人电映 2222luco 影音先锋lu资源 乱鬼龙图解重口味吧 妻子被人妖强 少女粉嫩穴图片写真 爰看AV电影 玫瑰女主播在线完整 舔插我bb的动态图 亚洲色图区大色小色 黄色录像番金莲 bbee9966com 快撸网87 女同用丝袜脚趾互插 徐莹人体欣赏27p 三级成人在线视频网站 我的疯狂露出全文阅读 亚洲图片偷拍自怕区 自拍偷拍推女郎 哪里有A片 欧美我爱色AV 久久女人喷射 少妇诱惑舞蹈 奇米网777姐姐骚网 超碰xxoo视频 不卡的avav12日本在线 WWWSEMEIMEI8COM 小黄书AV对话 风间由美熟母影音先锋 免费色免费 妻子的密爱图片 青青草社区手机视频 恋色剧场 日本免费AV毛片在线看1314zbcom 最新手机在线成人电影 狂干丝袜母女 青娱乐色在线 成人啪啪啪免费视频 偷窥自拍亚洲色图欧美图片变态另类 不用播放器就能看的一级片 乡镇黄色小说 www30avscom 幼女性交网络升级版 黄色电影三级片电影在线观看 lululuAV 三级片南京大屠杀电影完整版 人性图图 欧美深候射精av 99涩在线视频 鹿城啪啪图片 免费手机av皇帝 人体艺术网色中阁 成人视频aaa www400500ocm 挡不住的风情云盘资源 www0z819f4tgk63ecn 秋岛枫 开放性直播间 775jj 大机巴操了我吧视频 vr性爱网站在线 wwwjapan520avcom 女人口爆15P 123aaaa查询 深喉群交 亚洲天堂成人电影 射她的阴bb网 黄色网站wwwsehutongcom 在线视频AV网 舔姐姐的逼 日本大胆图片动态图 yazhougseqiing www122kkcom 黄色激情乱伦AV东方 人人色hentai 可乐啪mp4 涩涩的爱中文字幕 各国美女鲍美优优 东方AV在线狠狠撸亚州无码 www48kcon haodiaose动漫 在线av免费中文字幕 大爷射夜夜撸 免费嘿咻网站 性感小说姐姐梅 ppp10cpm 成人夜色激情裸聊最新最全 影音先锋免费操逼网址 校园播播 兽兽自慰照片全集 粉鲍欧美人体 大鸡巴操人妻小说 本网站受美国法律保护狠狠撸 超碰欧美大屁股视频XXX 欧美亚洲激情小说色图另类 妈妈被我t 搜索www76vrcom 激情综合网激情五月俺去也淫淫网狠狠撸色播五月色五月开心五月丁香五 都市校园家庭人妻另类 奇米无码人气女尤 丝袜视频网 16p泰妖操撸艺术 漫画AⅤ免费 yyxf九草 看中国老太太激情 69黑几把 肉丝黄色小说 灰灰影院 wwwnncao5com 97色色wwwg9u1com 久久热在线视频精品店7 极品老板娘的权色撩人 日韩大片avwwwyy6bcom 丁香的bb好看又好鲁 啊啊啊哦哦快点 wwgaosecom 淫老婆电影在线观看在 17n17奔雷手 有基zz在线视频 卿卿雪儿最新 服装类淫妻小说 yazhouqingseav 激情图片丁香五月 555xx 不知火舞黄色图片 性吧春暖花开无码亚洲 欧美穿刺色图 亚洲偷拍自拍丝袜美女 卡通动漫第1页人妻 男生殖器图片自拍图片 最新俄罗斯三级片视频 叉教师妈妈小说 唯美欧美内射magnet 插吧插吧插吧成人网 草莓社区2016新地址 66631314kmcn 天堂AY免费网 制服丝袜高跟鞋人妻图 淫乱日本动漫 古典武侠迅雷专区 av一本道手在线观看 wwwhehe678 公公夜草儿媳 先锋2018资源 日本女人色中色35wwwwcom hd在线福利视频 KK秀色 我给公公按摩 www222ph 亚洲电影50p 最原始的欲望暴力 wwwshihuavcom kk原创yumi 一本道资源站电影在 3344VB 黄色影院狠狠撸撸吧 我与美女楔做爱的故事 欲女自拍10p图片 先锋另类1024 夜啪啪影青青草 男人不识本站看尽av也枉然的网站 老年女同网 www980m WWW95AYCOM 哥哥来射色的球有一个来电显示号码fuck吗 热颜射国产 国际成人综合网wwwgao771com 最新亚洲性交色图片 最新超碰视频上传视频www123caobbcom 先锋制服亚洲自拍 欧美性交成人网站 看看女人男人肛交口交性交 愉拍自拍网 淫妻动漫强奸乱伦 激情网址乱伦 姐脱色脱 噜噜哭 av小四次手册 神马性爱交易 wwwbooezicom 开心狠撸五月 91牛奶哥系列解压密码 四房色播网色色五月天 狠狠射大力操 干日本少妇av激情 www秀女25com WWWBB251con 色狱淫夜物语动态图 小妹香淫网 皇瑟luan lun 李宗瑞种子下载谁有 偷拍大学生美术课上裸体写真图 色一代 换妻5p 大黄的图人妖有jj真的假的 日本家庭自拍视频 日本人体艺术模特名单 美眉bitu 港台三级片有逼吗 gif激情性爱动态 日本成年人电影种子 炮图18p 李宗瑞迷奸门快播全集 国外人体艺术黄色 齐天大性迅雷 亚洲妈色图 风骚的三舅妈 动做爱图 bb操肥妇 偷拍自拍插美女穴 色黄朝 性感的美少妇肏屄 亚州x图 风骚丝袜女仆和主人肛交颜射吞精 老头视频free 搜狗大胆人体图片 成人大尺度超清套图 人体艺术图片22美女阴部制服 邻家小妹的大奶子 全亚洲最大的在线免费 淫 女 撸 ady图霸 先锋影音成人动漫 密桃东方亚州色图 少妇打炮真爽呀 2020jiba o2kkk色洛洛 动漫avdiany 婷婷妞基地 插入熟女 717免费看av 阳精 波多 淫水 影音国产乱伦射嫂嫂 姐弟偷偷做事情下性爱 我老婆帮我上了她 shaonuyijihuangse 日本女人与狗种子 96av成人视频 风骚熟妇合集 sex asia japan rbd217种子 高清人体艺术ccrtcc 韩国女主播夏娃哪一部露点 女人操逼在线直播 快播女性图片 武藤兰丝袜图片 美女阿姨自慰 套图 黑木麻衣无码ed2k 好6人体艺术 日本叼嗨邪恶漫画 7777vvcom 强奸苍井空 动态图成人 射在女主丝袜脚上 熟女做爱快播 美女激情图片网站 母女自慰 古典武侠狠狠操 干 av图天堂网 亚洲se吧 姐妹淫荡图片 狠狠撸吃鸡巴 6666aaa 操逼姿势大片 欧美大胸炉体 色网址导航1234 xxoous你懂的小说 经典三级片亚洲色图 我的性交网在线视频 色酷s诶 梁婖婷被干 女人被操完 媳妇 公公 做爱 都市激情强干别人女友 ly 农夫不准打灰机地址 德徳爱136xxx 欧美成人比 韩国色资源 人体高清艺术摄影 我迷奸了老师和姑姑 骚妇炮图 众少年想操逼怎么办 缺金的男孩名字大全 实况足球8补丁 圣斗士星矢之天界篇 拾金不昧锦旗内容 star395 无处安放 不可开交的意思 中国多人操逼吧 母子交媾 邻居5月天 深爱激情网成人图片 av自拍偷拍在线视频 黄网址大全 成人揉奶小说 美国十啦2014俺去乜最新地址 亚洲禽兽网 淫淫护士妹妹 医生黄色电影 骚娘网站 日本偷拍自拍人体艺术照片 大便系列种子 午夜影院免费观看 黄昏操逼在线播放 76啪啪com 美腿大胸亚洲色图 qvod度巴斯电影 伊人~在线视频 操女人逼逼图片 父女乱伦全集免费在线成人视频 青青草在线观看视频手机 李宗瑞偷拍自拍在线播放 春色校园短小说 淫妖人体人体 WWWSEXIU143COM 日本爽图片 taohuanse 人体艺术泽井真帆 肏大肥逼 欧美色图狠狠操狠狠射大色网 美女玩大逼 黄色小说激情小说成人小说网 爆操骚岳母网站 大鸡巴肏屄图片 阴户湿湿的老想男人 性爱色色色图 小说日本换妻 看着老婆和别人操逼 成人极品小说合集 影院座椅哪家的好 成人有毛图片 亚洲无毛穴 日本亚洲欧美图片小说 母骚女浪小说之啊郑 饭岛奈津美快播地址 影院上映最新电影 玛雅网小说作品 美直播 色老哥26咪咪 我要看美女性交片 偷拍摄观看快播 曰逼小哾 骚逼淫曲 美女劈叉露视频 av东京热成人视频 成龙插b 另类图片紫蜜桃 成人综合撸图 杰才杰色 欧美美女爱黑鬼 色哥色天使在线视频 影音先锋能看的人与动物黄片 野战人人碰 鸡巴操淫妇 相田纱耶香daisy07サヤカ 白俄罗斯狠狠撸激情图 hanguorentiyishu之美女私密处 风骚美女爱爱 少妇美乳人体术我要看新闻 颜射口爆美女1 少妇撸撸夜 叔母偷情 tpimage久草 美女个人艺术照 日本美女奶子艺术照 丝袜高跟色图 90后裸人体艺术 男女做一次爱视频经典 社区影院宣传海报 kancaobipian 国产a片李宗瑞 女人的大逼性吧 东京热美少女二穴bt迅雷 日韩男同性恋gay片 WWW163VIPNET 人妻绢绢小穴小说 熟女外阴图片 万绮雯做爱 动漫美少女小说 33链最新导航 欧美女人穿裤袜性交图 播音员钟瑞 日本大奶浮汁 骚逼露阴色图 好看的日本爱爱电影 男动物色平色 性感人体艺术西西人体艺术 大咪眯快播 小男孩肏熟女的屄免费视频 经典有码丝袜美腿 欧美熟妇的屄厕所视频 非洲黑人哥哥插逼片 S就去爱孙倩高义 生精汤生蚝 一字马xe 哥哥干好看云 车上操嫂嫂五月天 大奶母女和狗 人体艺术大鸡吧网 2014狠狠插 www黄色学生com 干姐姐亚洲综合 3p性交表演 日本黄色偷拍自拍 成人漫画无播放器视频福利 邪恶少女漫画恋奸 开心激情网五月天magnet 大香蕉伊人av日本 相原美咲迅雷种子 4488色百度 美国教育av电 性福五月天亚洲色图 大肛门欧美 爱爱番号 普通话操屄 mm自卫直播 亚洲三级影视 亚洲热土偷拍自拍 黄色片十二岁小女孩和父亲做爱情片 金瓶梅第二部快播电影 大鸡巴插肉便器资源网 美国A片乱伦在线观看 欧洲人做太国在线Av 狂上师母 迷奸关晓彤 日韩欧美性爱magnet 咸湿尼姑 黄色啪啪啪啪日b小说 激情乱伦动漫电影 巨乳乱伦内射视频 伦理片在线无需安装插件 服务华人超碰 小学生妹人体大胆展示 av骨 动漫另类亚洲色图 深淫乱色图l 圣阴沟 淫香淫色亚洲网 百度影音bt下载17p 肥佬外传 欧美丝袜足交电影快播 晋城美女人体艺术 东南亚老母猪15p 操法国女人穴 两个男的同性恋sm的av 色色幼幼magnet 激情熟妇15p 台湾成人论坛网站 撸哥在线男人站 摸十一岁幼女 早熟电影 水岛津实丝袜ed2k av全色做爱不给钱 五月天瑟 美国成人aa大片小说 父女乱伦变态短篇小说 12p黄色 haofulitop 青青草成人免费视频手机版 制服丝袜强奸乱伦AV 战争的黄色小说网站 chenren黄se 日本美女色色色 美女露小穴逼逼图片 国产自拍亚洲AV怡红院 澳门新葡京国外在线视频 nuxingau 王者荣耀成人mp4 武侠古典在线理论三级欧美激情 乱伦图片综合区狠狠射激情套图 我的女朋友叫我搞她妈妈 熟女母子系列 移动Av在线先锋影音 邵氏风月吉吉影音 拍揄自揄网 WWW87bbeeC0mmagnet 求动漫无毒黄色链接网站 好吊日在线电影 国产成人综合成人社区 WWWCHINAMOBILECOM wwwAADD 最新里番成人卡通 丈母娘喜欢我操她视屏 强奸系列成人小说 知名狗 图集 法老的宠妃有声小说 遮天 有声小说 春色诗歌 樱井莉亚电影美愚 樱井莉亚女孩吉祥物 波多野结衣迅雷 能用快播的h网 h网分享 h网上不去 有没有外国的h网 h网是什么意思 电脑h网 清色黄网 www.唯品会 www油区二中com www访问速度快 开心刺激五月天 东京热导航 东京热厨房 俺去啦酒色网 在哪能看黄片 vagaa看黄片 usee看黄片 想看黄色小说 七色影院 淫骚电影 KTV导航 操妹妹AV 东京熟影院 少妇集中营 性乐汇影视 37xxbb 爱插妹妹影院 厕所高清偷拍 性乐汇色电影 色妹妹激情小说 porntv兽交 花和尚信息G谁有E xxxymovies 她也色 俺去啦图片 色人格阁姐妹爱 蝴蝶谷中文网 第一会所综合社区 日日日日 七色成人漫画 铃原爱蜜莉在线mp4 宅宅网李宗瑞3131电影网 魔镜号中出在线播放 蕾丝边综合五月 av波波软件下载ios官网 sihu255 色妹1978 香山圣无码磁力 magnet xo网站 殇情影院yy413影院 吉吉奥分享 青青青综合 a片带 北野望无码 abp-513下载 在线wwwffff15con wwexxxwww 393影院天天色 北条麻纪av链接 magnet 色欲色综合 人人拍人人操 女同天天啪 在线无码私人影院 国内网友自拍最新视频 狼人宝鸟视频下载 就去干 福利小视频 宅男丸 97AV视频在线播放 大胸少妇在线免费观看 色站导航自拍偷拍 神马电影网亚洲无码 迅雷链接直播间做爱 日本东京热一本道无码视频dvd欧美下载 夜色影院! 天天射天天日把b视频 下载 青青草免费捆绑自拍视频 人妻人免费谢 强奸高清无码下载 秋霞 伦理 小黄瓜华人最强综合资源 轩辕大宝txt迅雷链接 亚洲 欧美 自拍 托派 青鱼吧在线视频 日本一本道无码在线观看 日本影院真人操逼视频 尤物蜜雪儿完整版影音先锋 在线视频自拍另类 日本女优国产自拍 在线内射大奶小穴 诱う女-レイプ- 电影西瓜、影视 日本十八禁啪啦啪视频 影音先锋网红福利视频 日本人六九视频jllzz 日本少妇内射在线视频 日本我不卡a片 在线毛片s免费观看 日本热妇HD视频xxx 午夜天使在手机观看 蹂躏迅雷在线观看 日本巨乳电影 国产在线视频观看视频 蝌蝌窝云播福利版app 猫狗影视 黄色成人啪啪日本影院 父亲出门两秒中文 老司机网址导航 小武妈妈 在线看福利云点播 白色色网址 一本道色综合mp4 七色色导航 服务器美国成人视频 yy4480――80s www,390983,ocm 午夜福利在线的a站 伦理片eessues天堂影院 亚洲做好爱免费视频 情欲市哈尔滨小说网 国产直播小视频 久久热免费福利视频 原味小辣椒vip收费视频29 在线影院 日韩 日本美女写真视频 胶衣 猎奇 里番 大型宾馆的日子两根黄色视频的电话 偷拍自拍 磁力 香蕉无码视频中文字 美巨乳女子校生懲姦孕汁江藤つかさ 丝袜人妻遭两男疯狂玩弄16P 国内唯一禾秀惑视频秀站 免费在线做爱 JUFD-868 在线 2246 thunder 国产vip视频在线 快播揉搓乳房 东方伊利园东方az在线 黄色网站美女脱内衣直播 亚洲美女被欧洲伦奸磁力链接 在线欧美国产自拍 强奸乱伦av毛片欧美 黑鬼大战日本女人AV 另类小说福利视频 91金龙鱼 日本AV室内偷情大片 下载 XBXB222 av欧美深喉口爆视频 国产偷窥自拍在线观看混血哥 午马影院午夜 操逼直播现场。我要插呀,我要看中国操逼现场。 影音先锋街拍视频在线观看 bbogf 磁力 日本操B大片视频 学生倩侣做爱视频 嗯啊 影院 国产自拍偷拍45 汤姆影院网址在线播放 现在的小视频网址 红楼78电影网 龙缚奴隶新妻花嫁 在线白嫩小姐福利 绝地中出影院 最新成人网站韩国 废柴兄弟2在线观看免费 赤井美月 大喷水无码种子 ssni081 在线 丁香五月中文字幕 midd565图解 丁香五月天的小说全集 成人亚洲区 欲色影视天天播视频 椎名美优 dgs29磁力链接 无他成人网 免费任你日 SANJIQIAN 2b综合影院 百度 男女约炮总群 magnet 欧美毛片基地 youbbb/cm 巨乳 美女迅雷链接 在线porn网站 欧美啄木鸟黑腿丝袜系列下载 自拍av国产 宅男亚洲福利在线无插件 sdde388 小湿妹字幕组 吉泽明步催眠 mp4 五月天色婷丁香五月亚洲 国产av另类剧情 Caoporon最新视频ss 全国最大成人网坫 ai宅男影院 av丝袜番号 av在线百度一下 秋霞170 十六夜清心百合 saoyi8 福利微拍 福利上瘾怎么播不了 XXCOOO做爱视频 电脑播放伦俚片 大香蕉丝袜亚洲国产 youbbb自拍视 大香蕉久免费视频黄色 yukun瑟妃 福利视频直播 yes4444手机天堂 欧美三级无码伦理 pornhd日本苍井空 9岁超嫩校花美女偷偷和闺蜜的男友到宾馆偷情,超嫩超紧, 国产阿姨在线自拍 一道本在緌免賛福利 王薄团在线观看 97涩涩爱爱涩涩涩涩涩影院 欧美自慰 qvod 第一影院a片 青娱乐偷拍情侣在线 黄色网站448 玉女情爱 好吊色视频在线 x0168 国产野战av 免费观看任你干 www4455dpcom 国外AV 久久爱精品800av东方红 好了AV0O1 成人影片人人看人人操人人摸 日韩亚洲主播在线 2018 成人网站无码 av直播 ed2k 风吹裙子微拍视频 秋野早苗视频 成人片视频网址 美女狂打男奴耳光视频 美女被鸡巴插得嗷嗷叫 俄罗斯a片伦理免费观看 色戒av电影 啪啪无码网站 avttt天堂2004 日本狼拍屋 爱爱午夜tv 国产无码 在线 偷拍视频在线观看直播 JApANHDAC0M 国内自拍肛交视频在线播放 美女KTV喝醉前口后入式疯狂3P短视频曝光 美国一级毛片免费在线播放 三级片福利电影 360水滴摄像头偷拍021-情趣酒店很会玩的眼镜情侣各种姿势有点重温玉蒲团的感觉 在线 偷拍 自拍网站 15x社区在线视频5sq 84清新影院 xxxx日本免费视频高清无码 av剃天堂 silk 028在线av 4483x成人网丁香五月 五福影院av地址在线观看 长泽梓所有无码高清在线 十七中教室门 郭美美 欧美喷潮中文字幕 背窝电影网 三上悠亚东京热 看片猎人宝盒 四虎黄片影院 亚洲阿v天堂一本道2017 wwwjjkk66com orgtv福利视频 西条玻璃 国产女医生 正在播放 丁度 风吟鸟唱曼苏 有声 日本av兔费看 大香蕉在线资源网 韩国女主播19tvclub在线 晚上硬碰视频 无毛少女大乱交 prf999原创视频在播放 黑蝙蝠中队柳州版 87一本道福利高清 xoxo视频小时的免费的 一级做爱a片免费播放 鲤鱼乡调教抽臀缝 韩国美女主播19韩宝宝 东京热,一本道免费无码 【劲爆!浙江少妇被黑人老板直接口暴!】 国产自拍日欧美 乱伦淫乱电影影音 群交短片 快播三级黄色电影 yy6080秋空 pgd605 mp4 爱泽花梨在线影院 3D精油按摩中文字幕电影 亚洲丝袜资源 理论 无码 在线 任你爽起碰视频精品播放 扒猪成人短视频 pddd 399西瓜影音 成人色色v 伊网综合影院 在线视频免赞观看人人 小女孩福利视频 71pao 飘零影院理论电影 蜜桃q妹风油精视频直播 大桥未久恸哭女在线 有点婴儿肥的清纯巨乳小学妹 一本道dvd不卡国产在线 我妻如妓我如奴四哥 美女艺术 92电影院福利在线视频 巨大乳房成人黄色视频 椰子哥玩香港美女视频 亚洲视频免费一区 久痒久痒无限刺激影院 长筒白丝袜福利视频 四虎tv中文字幕 日本老影院 日本5060 小野寺梨纱西瓜视频 迅雷 下载开苞 校友会背叛她的订婚-2午夜影院 小姐打飞机尻视频 小妹自拍自慰视频网站 小姐福利 羞辱视频校园合集 小奶油模特福利 小护士潮吹视频 香港黑寡妇毛片 新大香蕉狼人伊人aV网 哪有松岛枫电影 看看午夜十点轮 迅雷 国产自拍 老女人乱伦黄色电影大全 国产网红福利 日韓影院 kv影院 淘宝av成人 亚洲在线视频 3d 九大香蕉在线新免费资源 兽皇理论片午夜 农村妇女买淫视屏 大黑鸡吧的黄片 肏骚浪屄视频 在线经典三级视频 日本少妇侵犯福利视频 午夜激情试看。 污点福利 bkd番号 senb1 国产自拍91在线caoporn sm老爹影院 97天天综合影视 抽插无需下载播放器 肛交大战 偷拍zip 日韩主播直播国产 台湾佬中文90 XXx日本pp 光棍影院高梭 前田希美在线无码 大咪咪DVD 迷奸网站在线观看 看看屋谍照网 197色综合亚洲影院 abp561c 迅雷哥无码区 好屌99re 泰迪熊rct502在线播放 mxgs672在线播放 汤姆影院香蕉网 snis764 在线 苍井空裸乳照视频 操Cosplay嫩逼 视频 国语版好屌淫视频 操屄视频两口自拍 波多野吉衣2018在线理论 国产三级农村妇女系列 国产在线视频偷拍自拍 操B艺术 苍井空 无修 50分钟下载地址 采精的小蝴蝶午夜公厕 夫目犯若妻苍井空影音先锋 宇都宫紫苑 在线 设为首页加入收藏图片区88 东方伊甸园9981 猫咪AV一本道 黄色a片看一看 求小仙儿网址 滛城系列 鬼父h百度云链接 wwwxxx890 欧美口爆 磁力 首页 Α片资源吧 1138x 有没有a片网站 很酷五月天综合 iene-435 美木奈奈美 林芊纾完整视频磁力 HEYZO 1890 www694av,com sex特写系列视频 vip7177av saorenqi漫画 播色 草 比克—让看片更简单 操干撸 苍井空福利视频影院 sifangclub 百度云 t人体写真APP 波多野结衣av小福利 RION粉丝感谢祭外送J罩杯神乳到粉丝家肏个爽SSNI008 超湴97总站视频中文字幕视频 老司机在线丝袜观看 欧美av种子磁力 下载 久草再现免费视频e 叼嘿视频小清晰影院 jav 伦理片 00后美女情趣房间 泷泽乃南喷射 热血中华快播 ipz 385 志村玲子在线 av男医生神马 6878wao 欧美男男毒爱 中村知惠有码在线视频 国产无码自拍偷拍主播视频 be88 japanese hot 乱伦骚爽视频、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 东方唯美_av12 WW真人特级毛片 可以看的手机小视频 香蕉视频黄站影院 MIAD-647觸手喰性欲旺盛的OL星野 97色邑 尻屄网站 啪啪网站日本 49vv亚洲在线 黑中国人大鸡巴视频 91啪啪道具 在线av41sao视频 www153日本 日本舔阴视频无码 手机视频在线国产有码 chengrenzb 男人天堂52hudiegu 正在播放肛交视频 母乳成人视频 日本过年姐弟强奸乱伦视频 自拍偷拍都市、、、 嘿嘿嘿迅雷 国产水柔 苍井优福利片 藏精阁宅男福利站 苍井空做爱在线 哈哈操做爱视频 操死你视频 操逼口爆视频 操B约炮自拍视频 国产自拍福利资源磁力_番号 操你啦最新影院 草i碰在线视频 韩国美女激情vip1239 4438x动漫 色偷拍亚洲国产精品 成人骑兵快播4438x动漫 宇都宫紫苑百度云 中国毛片大战 oumixingaiqu 美女表演喷水磁力 99男人性福利视频 监禁调教上原亚衣 影音先锋 强奸嫩模种子 magnet 色幼吧在线视频 四虎影院手机小视频福利 97影院霞秋在线 AV玉蒲团 协和影院母乳 最新自拍av mmdh11 us 884t haiwe 仓本C仔经典 亚洲综合偷拍视频观看 国产自慰自拍迅雷 ftp 鲁呀鲁luya视频 社区在线长视频播放 日韩女忧 国内自拍 欧美激情 卡通动漫 强奸乱伦 在线播放 人体艺t木摄影 备自服日逼视频 网红唐豆豆福利 熟女自拍偷窥在线视频 罗马伦理电影私体电影 国产在线天天操 换过女主播金荷娜磁力链接 wwwXXwXXX 楼梯小姐在线观看 泷泽萝拉三部曲在线观看 伦理片秋霞电影院 色偷偷97视频在线 色妞+综合 露点在线观看 伦理飘花午夜福利87影院 乱亚洲欧美丝袜美腿综合 色和尚久久在在线 伦伦理片巨乳 青青草爱爱视频 奇米欧美777888 人和狗交配黄片 七妺福利500导航大全 青青草福利在线 加藤鹰百度云资源无码 激情福利社影院 人工智能明星第五会所 京东热饵食牝在线播放 机巴肏鲍鱼福利视频 谷露影院免费区 农夫AV神马枪,神马影院 超碰人兽视频含成人 美胸在线看 日本女优痴汉视频 成区大片影院 大香蕉在线观看119 国产2级 magnet 四虎影视波多野结衣迅雷下载 下载 钟莉颖口爆福利视频 RMDS-597 真人日本小学生ooxx 2019国产在线短视频 背德朋友的妈妈 阿v在线堂网老司机 黄色强奸视频在线关看 黄色做爱美女视频 黑人成人视频在线 黄黄页视频立即观看免费 欧美多毛胖老太性交视频 华人自拍啪啪啪视频 飘雪伦理剧场 黄色日逼视频励志视频网 红番阁老男人影院 洪晓芸三级在线看 黑人和中国人爱爱免费视频在线观看 漂亮小骚货与情人偷情还边做边接电话说在逛街一会回家 60t的毛片 日本强奸三级片迅雷下载 yuoku伦理片 孙鲁班淫贱 在线丝袜影视 网站萝 操逼视频熟女 狼友福利社高清福利社区 日本做爱视频? 一本道久在线名模 罕见AISS爱丝赤裸裸露性视频流出,2999钻石会员享有的,极品黑丝极具诱惑力 2福利 小视频 中文无码 先锋 蝌蚪国产 国产自拍偷拍操逼视频 色欲天天欲影视音 人人草电影 194avav qcqc青青草 欧美大片h版58部合集在线观看 毛片基地免费观看i 2018韩国新毛片基地 玲原爱里 在线 色播五月亚洲综合网站 - 百度 thz 日韩 456成人手机在线 丝袜AV在线看 爱剪辑唐朝av av淘宝c 37papa 澳门五月 娇喘视频激情影院 爱爱视频高清免费观看 一本道0588视频 免费日本成人在线网视频 动漫美女贝艹 宋芝善视频在线 在线激情福利 色就是色欧美视频 美女性爱痴汉影片视频 国内留学生自拍视频 国产自拍ac自拍 男女性交做爱插B吃鸡巴不堪的场面最污的 国内偷拍做爱视频 国产泄欲哥 男女插下体高清gⅰf视频2017 国产自慰啪啪啪视频网站 豪放大女兵在线观看影视村 免费观看美美女hsg视频 国产自拍偷拍在线导航 国产自拍青鱼在线视频 男女啪视频四虎 韩国青草视频19禁福利免费 a片免费视频啪啪啪 2五福电影院凸凹频频 97renrencsao 息子家在线播放 手机看片叫床视频揉胸 美咲菊 四虎影院免费视频 先锋影音资源 神马影院福利视频88 一本道071915_118 保坂えり 国内自拍刺激3p熟女在线 美国成人午夜片 老公要看胸的视频 我要干色和尚 极品巨乳高颜值女神小奶油被大J8后入 1国产自拍小视频 日本学生装中文字幕磁力 mp4 熟妇约拍 园田爱丽沙 日韩学生姝美 女三级伦理福利大香 大香蕉清纯在线视频 草莓001自拍 欧美调教扩张拳头 视频 黄可儿5分钟视频 午夜三级免费电视 97亚洲色色在线视频影院 牛牛在线刺激自拍 午夜影院黶 色图美国在线 凤凰AV在线久久 大香蕉综合色色88 777奇米影天堂 5xSe 伊藤舞xfplay在线播放 第四性向扩 日本一本道天然素人 迅雷下载 kkkk38 秘密爱洗澡啪啪啪 国产极品人妖1自拍在线 在线福利65535 男女激情射精福利网站播放器 小说区图片区综合久久 久草在视线免费视频首页 自拍国产另类在线 韩国直播falaka av学生妹电影 婷婷激情五月天mp4 美国十次日韩 黄色网站直接看的视频 天天影视少女 淫淫网之人与动物 国内模特色图 陈丽佳灯大胆人体 插插妹妹的穴 哥迅雷 肥屁股老女人射 成人美女人体图片6655 美女阁的裸体美女 和蛇做爱的小说 神经根增粗是什么意思好大夫 波多野结美图 一个白虎嫩少女自拍 国产老女人视频操逼 亚州luo图库 干淫荡色女 舅母的美艳肉体 成人淫色小说网站 老师操逼丝袜美脚图 草妈妈乱伦 淫色美女裸体图片 WWW_38PP_COM 和美女老师做爱过程p 良家肥臀 老伯伯性生活 黄色人休艺术 偷拍自拍激情农夫导航 a片操婶子 日本大胆人体艺术147 关于fate的性交 成人做唛爱图 干嫂子的穴好爽 huangsetoubi 嫩苞流水图 小姨妈粉红嫩肉的 日本强奸电影大全网站 干40多岁的女人 经典乱母文 女忧李宗瑞苍井空 男女在做爱色图 屎尿日韩电影 亚洲美女人体艺术光身子美女壁纸大全 男女群交真人图片 西野翔先锋 性怕魔诱惑 五色电影网站 和淫荡女老师办公室抽插 15岁少女撸撸色 女人自摸人体艺术 人体艺术展阴图片 丝袜足交人体艺术摄影 国模谦儿 钟淑 14部 制服丝袜电影 无码 被双鸡巴男操 敏感黄色网站 a级片幼幼 xfplay欧美阴毛 wwwse33 淫屄i 百河川沙罗 种子 肉穴姐姐的衅 欧洲性爱97视频 很骚很黄女生网名 华为盘网mp4丝袜的诱惑 再漂亮的美女也要被男人操 狠狠爽图片 早泄吃什么牌子的伟哥好 舞女人体艺术 李宗瑞百度云集 狠狠撸亚洲无码bt下载 哪个门有奶露 人体芝术里体图 鸥美做爱女淫穴 操逼小哥哥 漏阴美女人体艺网 地图页激情成人 马操美女的逼 77涩影视 360黄色的小说 女子的屄 类型tube8高清 小说 肏我 激情小说人妻小说 cnporn8com 女生玩自己尿尿的地方 波多野结先锋 风骚丰满的少妇 岳母帮我乳交 人与兽性交bt种子 关于日本的黄色歌 欧美兽片bt 人妻波大穴紧口活好 广同男 乱伦狗交 妞妞2015sm 极品少女自慰图片 日本女人外阴图片草裙社区 xxooo999 碰图 开心播播a基地 欧美潮吹bt 自拍玩屄 成人影片人妻亚洲 丁香成人综合社区 免费成人电影色妹妹 金发嫩鲍 大鸡巴影视 老外干红渔网亚洲鸡 7777bo 8090碰com成人在线视频 春暖亚洲美女任人插 大屌竞赛 torrent 去色色色网 日批王小说 撸波波影院黄色图片 台湾插18人体艺术图 撸大鸡吧喂奶 操逼网站来几个 撸丝兔宝宝 瘦屄12p 日本乱伦 一女多男 群交 操人女网 韩国裸体三级做爱片 骚大屌影院 美女与我激情 变态肛交性爱小说 偷拍小女孩练舞蹈 日本阿v电影种子 爆肏女明星 亚洲另类 renti 无码教师系列种子 社交焦虑症 商业保密协议 即使恨也要再爱一次 鼻孔整形术 广汽toyota 北京天安妇科医院 非诚勿扰33期 红孩儿连连看 自体脂肪移植多少钱 盛大商城 椭圆形脸型 136舰 早乙女露依作品华为种子 野生浩子 娘潜入搜查官成濑心美 快播三级电影第一页 我的美艳舅妈 西西里裸体色图 btav种子下载 女人的阴毛都是什么样子 露骚妹 人人色色成人色站大全 黄色影片一级两性相交 熟女和男童 难忘乱伦 丝袜炮友少妇 gegerigegegan 同志文学老师撸鸡巴 妹妹嫩嫩的小穴 人体艺体艳照 撸二哥真实强奸幼女老夫操逼影片 亚洲色网美女哥哥干 脱丝袜舔穴图 5566人体艺术大胆 免费在线av电影网站云播观看 日韩骚女优电影 雨宫琴音美脚电影 人人体 藤娇是哪里 女人外阴实物图真人 美女大奶大全 第四房色图 苍井空奶子 壮阳补肾茶配方大全 午夜夫妻性生和片 欧洲美女性交的影片 hhhh111 肏了表姐的嫩屄 吴楠哥亚洲无码 777me第四色影视 男用壮阳喷剂 和表姐做爱的小说 乱伦双飞故事 日本骚屄成人 黄色性爱小说色图 8090caopiwang 射猫影院 裸体展阴毛艺术照 插暴黑木耳图片 苍老师电影迅雷下载 asiametart 大奶裸体人体图片 縄艺电影 制服丝袜无码在线观看 护士诱惑丝袜小说 thailandsexgril 五月天浪屄 迅雷云播小av k人体性交 列女xiongfeng 与农村女人做爱 干天操影院 国内中年夫妻性爱自拍 黄色性乱理影院 ぅぎす人体艺术 taiwanxingai 偷拍mb av操逼图片 经典人妻系列在线阅读 欧美色亲片 日本黄片苍井空快播云播放 成人图片明星淫乱嘿咻网 王麟多少钱一晚上 狗和人发生过关系电影 色姐姐快播网 拍的鸡巴 美国十次啦b插b插 无毛美女嫩b人体艺术图片 依依大但人体 极品少女插逼小说 日本五十路母先锋播放 www8090操逼网 草榴电影网站 大胆内衣人体艺术 騒护士 WWWZUZU11COM 母子通奸网 强奸美丝妈妈乱伦小说 人体艺术张腿露阴图片 明星瘾乱合成图片 成人性爱共享视频 晴朗春日背叛和绝望的季节篇成人动漫影音先锋 美女丝袜美乳人体艺术 女友小穴痒 先锋影音人与动物在线观看 成人动漫在线网址 超级大阴蒂图片 爱色丝袜写真 ouzhouxingpian 欧美胖其女性欲 jiatingqinshuluanlunxiliexiaoshuo 狂暴幼交 厦大偷拍12p 美女勒颈五花绑 求苍井空片子番号 美丽少妇撸 肏屄歌舞 丝袜高跟骚妇 朋友妻子qvod高清无码 在线看片播放器 儿子半夜猥亵他熟睡的小姨迅雷 插进小穴里 国产鬼父操女 亚洲晚晚干 西西人体露阴毛图 苍井空床上人体艺术图片 青苹果影院全职高手 刘诗诗动漫五月色 骚穴图片网站 一夲道京东热全部电影 爱色淫色图 汤芳人体摄影 性爱图片淫秽 熟女挑战黑大吊 WWWGAODSCOM 日本明星裸体照 浓密人体 强奸乱论电影 ccc369活色生香 wwwm6ggcon 美国丝袜老熟女图片 操b下说 l浪起来色色综合 天天射综合网论坛自拍区 粉嫩无毛小穴 欧美野交影音先锋 亚洲强奸片第一页 mm365小说 rbd261 天天影视自拍偷拍 公公强奸绝色美女子柔佳 裸体少妇女人0088aaa 舔肛放屁 操英语老师小说 有情趣的电影 插进妈妈的小穴的小硕 日本珍珠真多麻 妇人的骚屄 快播淫色成人影院 成人小说网自拍视频 操屄英国会所 聚色导航最新图片区 百度图片搜索少女人体艺术美女图 找点动物与人的做爱影片 偶偶福利影院 激情文学88jyghfcom 欧美另类少妇熟女11p 嫂嫂色saosaose 三人性交博客 WWWYXLADYCOM 人体艺术欧美人体艺术中国人体艺术日本人体艺术 发红屄 性爱视频英语 内射百度影音在线看 波多野性吧 哪个明星的逼最好看 15的男孩操14的女孩什么感觉 色三级片完整版电影 风暴私人影院 美女浪逼 藏姬阁第一福利老司机 肉很松的大uu 可爱小女爱爱网586avcom 欧美3pqvod 少妇吸鸡鸡91pco 男爵夫人调教正在播放 狠射少妇 av异族视频 wwwzxulicom 下流表演magnet 回家的诱惑小说程琳 少妇表演喷水av视频 国产mm356快插人 ooxx黄色 我要干哥哥干妞网 超碰暴力性视频 儿子射进来 波多野结衣口含图片搜索 狂操空姐内穴图片 成人文学交流区草榴社区 家族乱纶系列 www好色caca 牛牛艹娜娜 酒色巨乳 SW444女子病房痴女们的性欲 刘亦菲大胆艺术照 www95kbbcomvodtypehtml8html 色密妹导航 aykkk电影伦理 回族女人的裸体图片 久久偷 免费黄色网站电影wwwhuangsedianyingnet 怡红院221aacom221aacom avtt2014ccvom 女人奶奶淋浴张馨予性生活原网站狠狠碰大肉棒 苍井空来南昌 wwwwfefe55com成人网 123gbgb男人看的地址 妹妹林人体图片 丁香射成人有声小说网 本子全彩母亲奶子 gay黄网 北条麻妃A片 色图亚洲最新粉木耳 叉叉啪啪A片视频 深爱五月婷婷丁香欧美色图亚洲色图 痴女仆动漫AV 日本裸模生殖器真图 91在线91在线手机视频www91cncncom 露出内裤全力诱惑的妹妹黄色视频 亚洲色图亚洲小说 咪咪五色丁香 美国裸体节目magnet 好骚好嫩 老鸭窝中文字幕 日本做爱大胆人体艺术 SM偷拍自拍调教 青青草在线视光棍视频 我操了狐狸精的逼 unryoalpscpcn 乱伦交换人妻都市校园 性一级生活片 www7777kfcom跳转 一级黄色视频母亲与儿淫乱视频 马河色 另类综合社区 亚洲美女排泄图片区 欧美贴图区36p wwwlulu奶 乱伦强奸校园小说 骑骑姐姐碰碰 第四色主页快播 强奸乱伦校园春色机器小说 激情五月色播五月五月婷婷 搜索wwwsewo400comvodindex34925html 高清电脑壁纸美熟女屁股 正在播放坐台小姐穿上高跟丝袜啪啪在线观看 亚州性姥姥射 原纱央莉A片 韩国瑟雨女主播快播 亚洲少妇xxoo 最新在线NBav 私处贴吧 最新青楼社区网址 三级文学网 亚欧熟女人体艺术 63aaiaicom 加山夏子成人 干肥白丰满女人 gg操 色哥哥情网站 靠逼小姨小说 曰日干曰日啪在线视频另类 中文字幕AV影音姐姐色 色色人妻乱伦电影 多人奸污网 色taotu 免费黄色两站 线线乱伦强奸 性感黑丝美女人妻网站 白丝袜嫩穴美人想双飞XX网 色五夜小说 偷拍国产乱伦日逼 欧美色图图片清纯唯美 欧美妓女乱干视频 樱桃直播大秀 oumeituseririlu 日韩人体艺术优优 色尼姑黑色美腿 5566插插媳妇 国语色系 非诚勿扰黄色网站 人妻熟女影视先锋 欧美露大乳图 www丝袜制服 七匹狼18p2p 偷拍自拍亚洲色图人兽杂交 浓密セックス 安卓下载地址复制到浏览器打开 美女十八岁有爱液吗 bridge 97人人碰车免费视频 2017年夫妻群 无码欲望自慰下载 厕所视stopfuck 影音先锋东欧白嫩大屁股 老师媳妇调教 男生强奸漂亮妈妈 和嫂子同居的日子成人爽片 类似夜香阁的网站 超碰最新上线视频另类 哥哥撸妹妹撸色原站 皇家菲菲 肏肏AV 家族乱伦做爱小说 AV美丽川mxiaomemecom lulnulucc最新 淫水飞溅滨崎真绪 台湾妹佬娱乐网22vvvv wwwav12cot 学生妹掰开小穴 女人的阴性部有几种人体艺术 男女生身体下方相互动视频 日韩空姐乱伦 huangse日本动漫 淫荡少妇记实 全国最大三级图文 520最大胆人体艺术 小女孩的衅 蕾丝兔宝宝快播视频 狠狠干成人小说网 幼女性交体会 快播强奸乱伦qvwod qingse97 男多女少背景的小说 父女换妻小说 少妇淫妻 手机看片动漫人妻 熟女乱伦20p上一篇下一篇 三级毛毛图片 花街很撸 哈起吗伦理 看日屁 a片插日本妹妹 雨后小故事强奸 淫姐姐影院依依色 兰桂坊成人社区1www8nm8com 久久青春草 人和动物avmp4 sesemeimei 人体中文网 天天日天天射久久视频xbx9com 更新中文字幕av 神马老子伦理电影 免XX网址 强奸美女播放器 倩女性花开511影城电影 曰本小泽马利娅人体艺术写真 色狗首页 都市激情轮奸 色qing小说 avtt444天堂 四色播播四色 欧美色女15p 制服丝袜最新在线视频 亚洲东方av正在进入 都市激情校园春色熟女人妻 av在线视频wwwgav567com 古典武侠综合台湾妹 单身劳拉无插件 免费av邪恶电影院护垫 白百何阴毛 第ju撸 能免费看av的软件 二见一树 影音先锋等一下 妈妈的人体艺术 500人群交手机在线 老头老太乱欲 伦理片福利视频 2017狠狠撸最新网址 都市激情校园春色家庭乱伦文学 35E大乳 漂亮的符号 黄色毛片小说 超碰蝌蚪窝视频在线 大胆观鲍9 北条麻妃头交视频 我要干哥要干妞干网干露露 阿v在线视频观看i 发廊小姐图 亚洲激情亚洲 wwwwppp222com 在线国产偷拍欧美 hitomi巨乳在线播放 久久黄瓜色网站 屁眼调教 天天色阴道综合性 玉女修道院 白裤美尻影音先锋 3334kCOM 18岁姑娘自拍 影音幼交AV 工口伦理视频 vids在线观看 亚洲无淫荡人妻 妹妹偷拍自拍 欧美家庭伦理片资源下载mp4 www954 天天拍天天操天天撸 御姐口交在线 搞b美图 vob色播 艳母淫臀激情小说 东方AV热线 丁香花妹妹 ee214magnet 国产成人伦理免费在线视频 550yu在线www_499_cn 曰本AⅤ色片 北京美丽模特找鸭记 淫虐传 儿子日妈妈阴道 蝌蚪窝AⅤ 影音先锋成人黄色无码av 宝生奈奈照片 大屁股激情文学 欧美性爱第1页色吧小色哥色中色就去吻我爱我爱色进来日 欧美gift动图 陈冠希艳昭门原图 高清av制服丝袜在线电影 天津巨乳小女友 美国女优mp4 成人激情卡通乱伦动漫 美国裸体巨乳能播放的大片 超碰视频来射吧magnet 久久美女自慰视频在线观看 79dy大香蕉 亚洲在线第一页 求一个黄色av网站 nfnfnf11不准打灰机 黄色顶级大片电视 阿姨丝袜诱惑电影 欧美熟女要舔14 少妇极品乱伦 黄色三级男女做爰高潮大片 依依社区五月天 115网盘怎么找黄色资源 网站厕拍大全 7777kjcom开奖直播 不详哥哥 dvd色亚州av 高清女裸性交图 连裤袜性交视频 上位ftp 东京猎人ed2k 成人电影之手机偷拍 亚洲色图偷拍自拍美腿丝袜 爆艹空姐 寡妇综合 红潮网站 七九色色大片 秋霞伦理片在线播放 狠狠干在线在线影院 欢欢会所嗯嗯嗯 强奸乱伦性爱淫秽 性爱插进多长时间射精电影黄色电影 乳色网 嗯啊不要 范冰冰的逼有多大 操逼声音 撸撸鸟网页 插插cha 爱av陶宝 岛国免费无码视频 快用你的鸡巴插我 特菲娜样子 成人电影撸一撸av在线观看 黑白中文母22p 凌辱 大色吻综合网 乱伦激情换妻 性色影视 无码av丝袜 www456gancom 加勒比海盗成人在线观看 雅蠛蝶影视网观看 人妻乱抡小说 欧美图区 自拍图 熟女阿姨图片 噜噜色影音先锋色久久 射一嘴电影 大阴做爱15P, 澳门第一赌场请君撸 久久免费请君撸丝袜视频 av美女天堂下载 街边美臀 乱伧小说 xxx四影院 蜜桃705 亚洲成人做爱视频 成人免费看黄片五月 87av资源网秋霞 人体艺术夜色 搜索婷婷色五月俺去也 校园春色嗯啊哦 台湾伦理美亚电影网 171eeav 电影院H的小说 人妖穴图 家庭迷奸小说 农夫综合色 cao320AV 32sao视频 日本胖女人禁片 激情情 影音先锋撸二哥克米 zxfuli理论 草你妹综合色 做爱欧美成人影视 97视频哥哥社 寂寞少妇30p 楼主偷拍自拍 加勒比社区 114张悠雨魅惑图片色色看看色色看看主 母乳荡妇 超碰成人综合网 1024在线核工厂手机免费观看百度 日本女孩资源网站 免费av老司机资源在线观看 痴汉电车av无码 蝌蚪窝8000 WWW`5KKbb`com 欧美色图动漫亚洲色图 女护士和爸爸操视频 做爱漫画小说图片 久久激情国 无码tB 狗的阴户mp4 青春性事漫画在线 www52xo 残疾teentube 最新在线免费av网站 wwwkKaⅤ 147艺体www147yscom 姓爱三级片 欧美女人与兽群交zooolk 好吊色come视频 妹妹五月四房色伯图片 草草逼图 ww996eecom 诱感2016在线人神马 av射射myav44com 欧美成人电影一本道wwwavtdhcom 七龙珠16P 色撸撸2015 美国大香蕉色 超碰巨乳美容院 极品淫乱儿媳 天天射中文娱乐网234bucom 美美的嫩穴 200PUCOm 色狗成人综合5151ddcom 47爱爱爱 热颜射国产 看了很想射的AV 肥屁大奶廿 色色成人电影拉斯维加斯娱乐网手 啊用力 依依成人网站狠狠射 亚洲东方欧美日本自拍偷拍小说都市 坏孩子A片番号 古代激情17P freefron去百度找第一个就是请叫我雷锋的女人 欧美亚洲先锋 武侠古典激情人妻 yzmxxxxmp4 夜夜撸wwwkanav05comwwwqbiryfrdoizcn lunlisanji手机电影 亚洲性爱色影视 5p口交 小男孩操性感美女 免费av96 www路hhh889mp4 骚逼被主人大鸡巴调教 在线福利004 欧美色丁香五月色 妹成人电影 波多野结衣贴吧进不去 朴呢唛2937 插嫩鲍鱼图 欧美乱伦 吧 亚洲美孕妇自拍13p 雨宫琴音步兵ed2k 妻子成人小说 插菊花色色 蒙古老女人视频 乱伦我干了妈妈 颐妹? 操逼网小说 txt 最黄的片是什么 头部操逼 种子 女人裸逼图 我和姨妈岳母乱伦 美女掰开大白逼图片 家庭乱伦小说电影俺来射 迅雷看看家庭乱伦电影 国产多毛老太太 涩逼妹影音先锋 ec3352e80000a0fd 女秘书被狗强奸了i 妹妹操逼五月天 和邻居姐姐做爱 欧美熟女乱伦15p 快照评价翻译此页撸一撸影视一本道在线电影 成人色图区偷偷撸 左爱qq群 动漫女逼图片 成人日批 欧美淫妻色色色 人人色色资源站 最新成人bt下载 乱伦咪咪色 农夫社区 自拍ie8 苍井空色色电影先锋 操妈妈色逼视屏 thunder 萝莉 无码 日本人体艺术与性交姿势 日无毛骚逼 俄罗斯美女肉穴被插图 欧美第一页 绿岛影院 色狗性人小说 女忧的影音先锋 日本学生妹喜欢中国男人吗让不让莫 亚州图片 20p 影音先锋欧洲性爱 操欧美妹妹嫩穴影音先锋 日本丰满女人体艺术 我想看考比片 人前露出系列 婷婷五月性 国产性生活在线观看 欧美在线 亚洲在线 美美奶子裸体照 可观看的干屄大戏 振动器黄色网站 夫妻录音b烂了b烂了了 欧美露穴图片 模特儿屄视频 肏农村女人屄小说 日本口交片 zeyanxiazaikuaibochenrenbofanqi 我的真实乱伦故事 强奸援交女艳照门 我和表妹天天偷情真爽 偷拍自拍色图性交 美女日逼内射图片 庄巧涵无马赛克照片 angl23com 影视先锋岛国片 chaoqingdadanrentuyishutupian 拍网友骚女人 求个性感写真视频 欧美最新人与动物兽交 禁片大全集 迅雷下载地址 WWW_3W1238080_COM 日本人体艺图片 WWW_77AIAI_COM 亚洲色图 欧美色图 偷拍自拍乱伦熟女美腿丝袜 caoporn 08 皮肤嫩 奶子翘 人妻活好内射 狠狠射11噜噜 网友自拍偷拍下载 性欲三级片 sebowuyetian 幼鲍特写qvod 影音先锋成人电视剧 bca9b8ba00002bca WWW_428XX_COM 最新快播乱伦小说 内涵鸡巴 与女友姐妹三人同床 屄茎 都市成人激情小说 西西影音qvod先锋 大鸡把导航 就去色色干干操操成人电影 爷爷孙女做爱图 大黄xxx 欧美夫妻在家做爱自拍电影 人体艺术摄影大屁股中年妇女 波多野结衣迅雷下载 各种门迅雷种子 缺金的男孩名字大全 爱情公寓1剧情介绍 两次胎停 常州嬉戏谷好玩吗 圣西罗空调 重庆话学习网 无胆匪类 月经流黑血 五岳是指 天使色妹妹 sesescom 女人骚屄阴道 夜夜性小说 女人杂交视频 分享老婆去干网 欧美胖女人性爱露日韩激情 操干妈第一部 威海新世纪影院 神马影院三级童话村 偷拍自拍经典三级在线视频 成人艺术 常州浴室小姐漂亮 欧美最大乳房人体艺术 狠狠碰av黄色 sex优优私房人体 真剑少女竹三本 也好波偷拍系列 香港短篇激情小说 宬人大全图片 欧美家庭乱伦幼幼暴力 wwwhbhb55cm 女人阴部图片女人排尿 骆达华三级 fu1010青青草 哈琪码 女友自拍性爱视频 黑色激情五月 色导航911 乱伦操幼女逼小说 姐姐是来受精的让子弹都来吧 李宗瑞偷拍自拍在线 afd3b414000071f0 色五色播网 af49e18100036898 齐米点击进入精彩内容 夏色天使下载经典 日本 每日更新的色站 WWWWUYUETIAN22COM 谁的qq空间有朴妮唛视频 裸体漂亮妹妹 阿片无播放器 成人免费偷窥视频 美女玩大逼 更衣室里的乱伦 西西做爱不雅照 sm调教夫妻奴 骚妇女同诱惑 外国漫画儿子乱漂亮妈妈伦 教师操屄 www987zycom 小女孩人体图 成人色妹妹5555黄色电影 韩女主播赫本13部 草逼往哪插 撸一管 天狼影院手机 女人大p被干 女同性sm小说网站 屄屄乱伦小说 自拍偷拍偷偷撸图片小说 撸色网百度 我爱看片苹果版app下载 幽人谷乱伦网 ah442百度影院 内射明星 关于女女同性恋的小说 欧美人声系列合集网盘 后花园淫欲的漂亮超模 娆х编缇庡コ宸村反 偷看姑姑洗澡五月天自拍 色妹妹图大黑逼 美女男奴 自拍偷拍图片专区 韩国女主播何恩13 无码少妇尸体 能在百度云播的岛国电影网 足交图贴 超大乳房人体艺术 汤加丽人体黑木耳 偷偷鲁2015最新版在线影院 幼女熊交 鱼年bt 成人在线专区 操b爽片 电话传来娇淫声 激情乱伦系列图片 人体艺术下体操穴 黄片处女破处流血 大屁股热夫人第26卷 WWW679BOCOM 外国带点色的电影 黄色网站淫乱小说 芬妮美足园创作 公公偷日媳妇系列小说 天海翼人体艺术图片 丝袜高跟色图 yijihuanpiang 操b欧耶网 阿默性爱相簿 东北好色老女人 俺也去色综合影院 爱色窝丁香五月 淫荡百合姐妹花 最新2211b地址欧美 我和少女3p日记 欧美色图熟女乱伦图片 露出小嫩屄 jiqingwuyuetianwose 菅谷梨沙子磁力 骚播妹妹妹影 搜聚全球激情套图 欧美色图高考后操女友 水柔姐姐和小鲜肉 残酷轮奸 五月先锋媳妇 av榜下载 福利电影院最新入口 网友自拍情景剧儿子干妈妈 诱人的老师视频 朋户区av视频 制服师生动漫h片 裸体男人连阴茎图 肉丝裤袜跳蛋小说 少妇原味蕾丝内裤 小熙调教视频在线观看www51gannet 亚洲成人做爱小说撸一撸 老少妇淫色网 www三级片大全网 欧美成人五月 日本美女做爱视频网站 色综合45nnnncom avt44net 残酷乳房200针 办公室口爆 AV区亚洲AV欧美AVwwwxxx36net 高潮的巨乳熟妇 家人乱伦有声小说 制服丝袜海贼王 欧美阿v女星播放 wwwse成人电影 绿奴小说 ainipa中学生 丁香婷色 青青草www99kk496cn www路pp6scom 总裁在车里吃我奶 快播成人中文字幕 校园春色现代激情偷拍自拍强奸乱伦 内射亚洲自拍偷拍 小保姆小穴诱惑 爱爱和尚网 妈妈的屁眼苏珊 美女m字腿自抠图 饭冈佳奈子thunder s母在线av 琪怡红院 插老女人了骚穴 终结者成人版qvod 丝袜小学生网址 国产未成年ed2kmp4 短片爱爱小说免费阅读美女 撸波哥 av黄色强奸乱伦百度 山村淫 电动抽插阳具下载 肉弹爽歪歪 天天影视av最新版 一步到胃幼幼亚洲 caobiwangf 日韩最性感AV女优mp4 www9199ddc0mHtm100179 三级黄色片大黄色诱或片视频播放 妈妈是我的女人插插综合网 男女曰啪啪十八岁 ulhoemxamutcn 日韩熟女BT 保安GV 小胸走光露乳头偷拍自拍 Asia666 猛的插进亚玲的阴道 色萝莉撸撸 中国处女宝鉴 淫妻系列步兵番号 国外最淫荡艳星 韩国性禁片看见恶魔吉吉影音字摹 姐姐拥有包子穴 国语操逼magnet 我要看黄带日别性感三级片 小穴好嫩电影在线 有没有哪个网站可以在线看一路向西 秋瓷炫三级片mangent 经典小说妞妞 雅酷电影 淫乱小说东北大炕 偷窥自拍叼苍井空 在线少男成人视频 第六感bt论坛 美国超级淫片 熟身少妇有声小说 欧美性交很很撸电脑版 逼好深 av在线人妖和美女 熟女网三级 幼游色网 vip848网站wwwxiegebokecom 拍揄自揄网 牛牛撸一撸国内外成人在线免费视频 avidolz中文版妈妈 白色青青草激情视频 操萝莉小说 尤物豆豆手机影院 苍井空一级做爱电影片 欧美少女乱伦性交图 臊逼味的枣 日本美女大胸裸体图片 韩国女忧色 小姨子的乳头璜网 酒神有声小说 另类有声小说 有声小说景点 梨园春色 望春色伤心 yuemu春色 樱井莉亚电骡搜索 樱井莉亚天空精灵 小泽玛利亚1.09gbt 波多野结衣bt 给个h网 谁介绍几个h网 能看图的h网 没有弹窗的黄网 www小沈阳commp3 www成都演唱会 www.一生一世酒色网 土豆看黄片 可以看黄色小说的网站 黄色小说哪有 色欲电影 大色妹综合 华人第一色 金娇娘影院 刘色女影院 色小姨图库 在线人与兽 90后A片网 插三八成人网 色兔子成人综合 7-Se皇家娱乐 免费QVOD电影 boysfood在线 救囯集中淫G谁有E谁有E 牛牛视频 第四色男人 卢克·伊万斯 棒子什么意思 蜜桃色 WANZ-76在线观看 色达达手机 啪啪啪图片 497ww路com 4099y影院 欧美一役特黄色视频 8饭粒网剧情图解动态图 岛图A片 haoxx15 av桃色天a 会员中心高老庄AV 怡红院福利二区 五月丁香六月综合缴情视频 福利社 都市激情 仙女屋影院午夜福利 巨乳家政4金服 午夜小电影破解版本 里番3d一家人野外 红色的看片软件 葡京午夜成人 AV 色无极亚洲 免费播放大香角 霸道女主AV番号 东京热在线播放第一季 xedtt路com wwexxxwww av74 STAR214 芸能人 原紗央莉 欲求不満女は 成人影院高清无码 八妻子伦理手在线机网 某航空公司空姐与男友酒店激情 强奸老穴穴视频 秋霞网伦理剧新网 秋霞无码午夜电影综合 秋霞电影手机vi版 情趣丝袜诱惑写真视频 亚洲爱爱网 清宫性史5之凤荒 青春嫩模视频免费看 青鱼2视频在线观看偷拍 小青蛙匠心之街在线观看 人妻丝袜内射在线视频 拳交无码免费视频 强奸女在阴里塞东西视频 日本一本道免賛視頻 日木女孩啪啪 日本五十路av高熟 日韩a v 在 日本日日摸 有个皮肤又白又嫩的女友就是爽呀 日本一级特黄视频播放午夜影院 日本淫女三级片 日批神马电影院超九电影 日本骚黄黄色色淫淫A片 成人午夜福利视频 好运一点通高手解玄区 ichika一本道 我们是资源搬运工 日本精油按摩 俗人岛华人论坛色啪啪 嫖客老的视频在线 巨乳少妇视屏在线 桑拿高级会所熟悉了之后什么都肯做爆菊花2 国模骚女叶桐大尺度勾 pornhu avtt20018 GVG-694 美脚天堂 91视讯19加福利社 8787影院影视午夜福利 avtb在线视频 a片资料 任你搞最新地址 av10665 安卓偷拍自拍 时をかける童贞 电影在线 天天插一插b 仓仓午夜影院最新 任逍遥百度云资源 亚洲最大黄片观看 v2pom国产 波多野结衣水床磁力链接 ed2k 原味小辣椒老师在线观看 日本家庭口交视频 真实师生乱!十几岁女生被男教师艹了 黄篇免费人人干视频 爱草成年免賛视频大香蕉 操一下免费视频 超碰视频123zzz 轮理片1234 成人日本视频经典 大香蕉本色成人视频 亚洲人体艺术无码青青视频 女佣的秘密三邦车视 意大利啪啪啪视频 g0g0图片大全 天天色成人免费视频 午夜影院tv体验视频 wwwxyc123con 日韩日日来电影 女色仆影院 韩国韶姬 法国伦理片欲望与性 日本 xXXx 96 日韩色熟妇n视频 男人天堂无码免费视频 小黄免费视频 馒头蝴蝶一线天单唇 内地福利自拍 A片种子下载 一个色综合 冀州交换夫妻伦理片 我和超短裙丝袜老师做视频 2017免费福利AV视频 最裸欧美美女磁力链接 江川美奈子在线视频 一速发视频网福利 色妊阁影音先锋影院 好涨轻一点校长陈若雪 黄色特级片免费国产完整版操逼 4蝥你V 1717she网站更新 www 4438 c m 一块操无毒在线 老a影院 图片 宅男圣地宅男之家 绝地中出影院 秋霍情欲史 韩国女主播vip禁 1027手机看片免费你懂的 免费看激情影院 啪啪啪福利漫画 涩瑟瑟 wwwavav313comav1212165htm h百度云资源 粉姨菊 xiai09vod freex性欧冠 与僧侣交合的色欲之夜01集无删减手机版-在线观看-风车动漫 泽艺影城关方网 [中字]性感家庭教师爱泽花梨被操在线观看 snis-731百度云 详仔网站 sihu3133 电影港福利 木村那美美羽av播放 天天啪久久日天天操 日本av在线电影天堂 97se五月天 影音先锋资源uu4 成人网站葡萄社交 男人天堂WW552 站点申明:我们立足于美利坚合众国 色狐狸av免费澳门 美国AV老鸭窝 五月婷婷六月开心 黑森林视频导航 秋霞手机电影从未超越 免费avevd av15555 苍井空a片磁力下载手机观看 开心 五月天 国产 AV隐藏网站 XRW-498播放 997avav改成什么了 浪货成人网 国产欧美 日韩av无需安装播放器 西瓜视频在线观看秋霞网 百百操在线观看 cao1223 STAR409在线播放 飞机上空姐服务的av 在线播放 tokyo hot n0686 迪丽热巴资源在线看 xxjizzz 福利微拍 大香蕉干熟女视频 xfzy57 福利视频合集10op 冯熙璇 (春夏女装) -(帆布鞋) XXXX黄金比例XXX 明日花绮罗 粉嫩毛片无码在线 锋资源男人站 xoxoxo长视频在线观看 wx3344xecom 小说 大学生 磁力下载 自拍国内大香蕉网 国产美女主播在线播放 美臀诱惑中文字幕 yy6080高清影院动漫三级日本 美腿丝袜视频福利自拍微拍 插陈圆圆穴 国产自拍首页 不雅照在线观看 韩国av在线免费观看 朴妮唛福利全集霸气村 马蓉宋喆视频迅雷下载 magnet 人人妻人人 51rrrvvv w4444k 免费看尻屄 女人自慰视频在线观看 欧美 成人 3性视频真播 日本真人做受视频357 A片尻屄在线播放 初中女生发育爆照 自拍性交视频 狼友基地vr资源 福利1269视频 在线翘臀福利 香蕉影院 magnet 日本一级毛片无码DvD 亚洲免费无码中文在线成 人 在线手机版视频 男人大鸡吧视频 35ago好吊视频下载 巨人导航500 精品 中国18XXXX 大香蕉伊人 综合网2018 香奈儿·普雷古墓丽在线h版 一本道av无码1v1爱泽花梨 速播在线大香蕉 www6eee 170四虎 271秒播影院午夜手机在线 av在线醉地 父女福利影院 欲望岛4t 爱做av av367 磁力猪 mp4 AV八百在线观看 国产小青蛙惩罚妻子 逼被插无码在线观看 亚洲啪啪无码 系列哥原创视频福利 caopron视频 免费国产a级黄色 www1769zy1com 热带夜中文字幕mp4 蓝导航永久在线 涩和尚最新视频 白洁 东子 微拍视屏成人导航 秋霞伦理手机线看片 A片资源吧 主播大尺度视频网站 韩国A片免费看 伊人影院片快播 三胖 磁性链接 西方性感美女美腿丝袜视频写真 虐孕txt百度云 狠狠嗨 sdmu-754磁力链接 激情影院激情影院五月亭亭玉立 欧美熟女少妇 97人妻碰碰 日本喷潮视频 磁力链 好莱坞女明星 宫前幸惠 在线骑兵区 日本黑丝无码在线 香蕉网大人网 热门国产午夜福利合集81 亚洲无码AV网址大全 成人网战大全 青苹果在线的AV 宅宅网武媚娘 e苍井空电影女教师 任我操吧 爱爱wwwccc 视频自拍国产 飘零影院理论电影 jdb借贷宝视频在线观看 高潮在线影视视频 于子涵福利视频在线 大香蕉体验区 日本5060 香港一级黄片 新秋霞国产三伦理片看福利 嘘禁止想象西瓜影音 新娘被艹黄色视频 性交婆势视频 限制片zaixianbofang 迅雷成人电影视频网站 杏树纱奈edk 香港美女自拍视平 性欲强视频自慰 澳洲成人av视频 mmraa-065 西瓜影音 啪啪黯 xfzy91 av动漫3d无修正磁力 bibiai www,huangpian,con 美祢藤コウ在线 拳交女王周暁琳百度云 123无码在线av 厕所偷拍电影 原第三插综合网 ADN205 ed2k 性交高潮视频 ftp 日本强奷直播在线播放 嗯嗯 啊用力点 流了 阴道检查视频 西瓜影音 小树林野战系列连衣裙小姐在这么恶劣的环境下居然玩了几个经典的招式 77电影3v 色香在线 日韩吹潮视频 a片袋鼠 我要看澳门操逼视频 光楷影院 资源网3xfxy 人妻x人妻动漫在线 进入 91视频 会计科目汇总表人妻x人妻动漫在线 激情上位的高颜值小少妇 xf806播放 看片软件百年好合 吉布明泽瑜伽在线 冲田杏梨AV先锋资源 韩国三级在线观xxx 国产自拍在线每日一啪 操b视频偷拍 操逼126 爆米花网大鸡巴视频 国产网友自拍在线视频 草遛成人网成人电影 苍井空啪啪啪过程福利视频 彩乃奈奈女教师在线观看 被窝久草影院 操骚妻视频 韩国女主播朴妮唛第二轮 北野望bt磁力链接 宾馆怒操丰满俄罗斯少妇胸大屁股圆2017 草榴电影1024 北条麻妃性爱视频 澳门的成人网 xxxww日本 对白清晰的啪啪啪在线视频 AV猫咪最新 椎名由奈无码 中文字幕 国外伦理片在线 荒野女人色 91小视频APP 有没有a片网站 肉肉的女生av 色尼姑免费AV 香蕉网婷婷 91极品车模第173部 千度影院 欧美性色黄视频在线s+o 人人爱av 高清无码卯月麻衣 mp4 蓝沢润 av在线 selaoba rtmmg 超碰视频黄色小说 saozi8t理论片 超级超级碰碰人人爱视频在线观看 不卡的性无码专区tv 陈秀丽裸照 三级国产超级av级在线 嗯嗯轻点视频 69yyy111 日本老黄片电影阿香 试看成人爱爱视频 野驴福利网址大全导航 日韩 欧美 校园 69 亚洲抽插自拍偷拍 欧美熟妇15p 女主播资源公众号 无内丝袜福利在线 东京热av在线 苍井空资源号 亚洲偷拍91风月 gavbus8 暗暗噜不是所有的网站 日本伦理片强迫人妻还债 周防雪子家庭教师 6色福利 抖音大尺度福利在线 新色狼窝视频 要要橹福利 成人爱漫漫 啪啪啪露乳头影院 2018亚洲黄片 se999日韩女优色色 午夜影院1000久久看 高清视频在线aatv368com 男女操B福利视频 卖来的女人迅雷下载 mp4 112 www4hu49com 被炮友玩弄乳头的午后 操逼啪啪视频福利社 国产小视频免费观看在线 国产自拍 香奈儿 苍井空女同在线播放 爆乳女教师千岁在线看 国产自拍直播 擦擦擦综合网网址 mnm625成人视频 萝莉扣b喷白浆视频 伯芝性交影院 亚洲,偷拍,自拍,,动漫 性愛㎝ 中国男同志性交肛交视频 345bkcom 破处视频黄色 闪电奇迹裸体 绳艺网站 啄木鸟H片磁力链 下载 88影院在线观看妖猫 日本熟女哦屠 速播A片三级 小草草大黄瓜在线观看 人人国产偷拍视频 诱惑门强奸淫的电影 sex love ooxx 美国xo影院 哥去也午夜丁香 成人快播伦理欧美图片 超碰影视人人看 女同 舔屁眼视频 柚木提娜无码ipz127 青青社区国产自拍 性久久插↗电影 97porn国产自拍 成人激情脱衣舞视频在线播放 sw335在线播放 国产自拍偷拍12p 718电影院官网伦理 罗马尼亚论理片在线 成人街射你视频 偷窥自拍在线视频 大桥未久 耻辱中出授业 国产精品香蕉在线 邪恶之免费在线观看A片 美女波霸pP 伦理片eeussr天堂 美女按摩叫床声 伦理片天天射 马麻里子 ftp 美女把肛门里放香蕉视频 美景之屋2悠久影院 麦朴妮热舞视频大全 少年少年潘连金在线观看 美国偷拍三级网站酒店叫服务打飞机 人体艺术男女交配电影 精品小旅馆偷拍貌似很饥渴大白天偷情男女进来就迫不及待开草玩的姿势还不少 精品福利社视频小学生 七妺福利500导航大全 吉沢明歩灰色袜子 激情速播黄片 青娱乐首页 强奸迷晕视频网 sm--乐园色 偷拍日本美女内射视频 看A片神器观影尤魂 欧美av第一页 超碰人兽视频含成人 在线视频 便利店 日韩 人妻涩涩 gg772 动态图里番 迷奸链接迅雷下载 主播裸聊迅雷无码种子 wwwxxx婷婷jjzz 95国产在线自拍 藤井爱纱迅雷 A片视频九哥 日本在线高清视频三级 dongmanhuangshemanhua 美女 黑丝 淫水 在线 国产自拍 麻酥酥 360av免费 日韩黄色电影 澳门英文A片成人电影 豆芽姐演绎视频在线播放 连体袜系列番号 茜公主殿下福利视频 午夜福利是免费视频 年轻的保姆 蓝色导航发布页 91一只老污龟全集 色达人的生活 mmkk 66 acom 校园贷10g资源在线 迪丽热巴删的视频迅雷 欧美小视频 黑人和女主播磁力 红衣军 啪啪视频永久免费 女人夜夜春 黑人美女裸体午夜视频 好看的理乱片 7m国产自拍 岛国三级微电影 香港日本黄色视频 喷血推荐开车到野外和漂亮美眉啪啪干前尿一泡 小女初的性视频迅雷链接 网站萝 后入 夫妻 自拍 视频 午夜福利视频 无码 非洲成年a片 性生活视频免费的 伊人千香蕉免费视频 久久草口爆在线 qvod原干 日本巨乳熟妇视频 92男与女陶大宇版去哪看 八八电影 ftp 日本女优激情片断 下载 feifeishijei 看一天影院马大帅3 高老庄成人在线 友田彩也香破解 美固一级片 ftp 五月丁香蕉伊 欲色游乐园 完美看看鬼父 色中色综合影院 4438咱们看不了 Av人妻第一会所 magnet 91男人天天爱作风流 看妇科手机在线视频 色屌丝 欧美 视频 cosplay套图自拍 桐岛绫子无码中文字幕 点击观看福利视频 dⅤa里番 搜免播放量在线毛片免费观看l 伦理片偷偷干起来 好B网视频在线 好大不要嗯啊抽插高潮 国产自拍偷拍对白在线观看 秒播影视 午夜福利免费 牛牛碰线视频在线观看视频 哪里可以看到日本女优用假阳具视频 免费天天美女自慰视频 韩国r级2018good在线 嫩白美女自慰视频 国产自拍无极制 好吊色39pao 国产小视频磁力 求atfb210 神马福利88视频播放 qiangjianluenli 包和尚免费在线 肥胖女人伦理在线观看。 超碰福利91 夜色直播觉 遥望南方的童年ED2K 欧美成熟的女优 国产母畜 奸尸番号 换妻磁力链接 下载 靠谱的小黄片 4400青苹果影院 4级片视频播放 爱液福利图 yezubuluo18,com 青娱乐精品老司机网 一本道搞搞网 久色综合缴情 靠b片 ibw系列全集封面磁力 激情五月天 2222bx。com av日本网盘链接百度云 怀孕少妇被按摩师内射 snis071 亚欧XXOO 午夜视频福利做爱 日本毛片在线免费看黄网 3333孕妇性交视频 青色五月火裸聊视频 胖女人操逼人体艺术 黑人干越南妞快播网址 跪求成人片不用下载 时间停止器系列先锋 优酷里面的丝袜诱惑花心男叫什么名字 好看的淫乱小说 吃林心如身体 东欧人体色图 star545 绝色美女被老外大鸡巴调教好逼让狗操了2147 狂操美女0814熟女乱伦 黑肥女视频 国产老女人视频操逼 超级大胆人体教骚图 3级图讯雷 winktv荷恩华为网盘 与玛格丽特的午后 中野ありさ迅雷下载 欧美金发美女洞大胆30p 老公操屄 人兽造爱小说 俺也撸激情明星 女优与黑人的邪恶 女人操逼时间 99bt幼女 淫淫骚1 少妇嫩逼性交图片 淫秽的我 后射p WWW_7777BT_COM 星野娜美ed2k 我和少妇在车上 天天色院 淫秽美女色图 欧美av人体图片 小桃子的性爱 人妖爱爱视频 www88xox