
(provide (quote gnus))

(require (quote nntp))

(require (quote mail-utils))

(defvar gnus-nntp-server (getenv "NNTPSERVER") "\
*The name of the host running NNTP server.
If it is a string such as `:DIRECTORY', the user's private DIRECTORY
is used as a news spool.
Initialized from the NNTPSERVER environment variable.")

(defvar gnus-nntp-service "nntp" "\
*NNTP service name (\"nntp\" or 119).
Go to a local news spool if its value is nil.")

(defvar gnus-news-system (quote Cnews) "\
*News software system name of the news server, such as Bnews and Cnews.
This variable is intended to hide implementation dependent differences
between news systems.")

(defvar gnus-startup-file (or (getenv "NEWSRC") "~/.newsrc") "\
*Your .newsrc file. Use `.newsrc-SERVER' instead if exists.")

(defvar gnus-signature-file "~/.signature" "\
*Your .signature file. Use `.signature-DISTRIBUTION' instead if exists.")

(defvar gnus-use-cross-reference t "\
*Specifies what to do with cross references (Xref: field).
If nil, ignore cross references.  If t, mark articles as read in
subscribed newsgroups.  Otherwise, if not nil nor t, mark articles as
read in all newsgroups.")

(defvar gnus-use-followup-to t "\
*Specifies what to do with Followup-To: field.
If nil, ignore followup-to: field.  If t, use its value execpt for
`poster'.  Otherewise, if not nil nor t, always use its value.")

(defvar gnus-large-newsgroup 50 "\
*The number of articles which indicates a large newsgroup.
If the number of articles in a newsgroup is greater than the value,
confirmation is required for selecting the newsgroup.")

(defvar gnus-author-copy (getenv "AUTHORCOPY") "\
*File name saving a copy of an article posted using FCC: field.
Initialized from the AUTHORCOPY environment variable.

Articles are saved using a function specified by the the variable
gnus-author-copy-saver (rmail-output is default) if a file name is
given.  Instead, if the first character of the name is `|', the
contents of the article is piped out to the named program. It is
possible to save an article in an MH folder as follows:

(setq gnus-author-copy \"|/usr/new/mh/lib/rcvstore +Article\")")

(defvar gnus-author-copy-saver (function rmail-output) "\
*A function called with a file name to save an author copy to.
The default function is `rmail-output' which saves in Unix mailbox format.")

(defvar gnus-use-long-file-name (not (memq system-type (quote (usg-unix-v xenix)))) "\
*Non-nil means that a newsgroup name is used as a default file name
to save articles to. If it's nil, the directory form of a newsgroup is
used instead.")

(defvar gnus-article-save-directory (getenv "SAVEDIR") "\
*A directory name to save articles to (default to ~/News).
Initialized from the SAVEDIR environment variable.")

(defvar gnus-default-article-saver (function gnus-Subject-save-in-rmail) "\
*A function to save articles in your favorite format.
The function must be interactively callable (in other words, it must
be an Emacs command).

GNUS provides the following functions:
	gnus-Subject-save-in-rmail (in Rmail format)
	gnus-Subject-save-in-mail (in Unix mail format)
	gnus-Subject-save-in-folder (in an MH folder)
	gnus-Subject-save-in-file (in article format).")

(defvar gnus-rmail-save-name (function gnus-plain-save-name) "\
*A function generating a file name to save articles in Rmail format.
The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE.")

(defvar gnus-mail-save-name (function gnus-plain-save-name) "\
*A function generating a file name to save articles in Unix mail format.
The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE.")

(defvar gnus-folder-save-name (function gnus-folder-save-name) "\
*A function generating a file name to save articles in MH folder.
The function is called with NEWSGROUP, HEADERS, and optional LAST-FOLDER.")

(defvar gnus-file-save-name (function gnus-numeric-save-name) "\
*A function generating a file name to save articles in article format.
The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE.")

(defvar gnus-kill-file-name "KILL" "\
*File name of a KILL file.")

(defvar gnus-default-distribution "world" "\
*Use this value as distribution if no distribution is specified.")

(defvar gnus-novice-user t "\
*Non-nil means that you are a novice to USENET.  If non-nil,
verbose messages may be displayed or your confirmations may be required.")

(defvar gnus-interactive-post t "\
*Newsgroup, subject, and distribution will be asked for if non-nil.")

(defvar gnus-user-login-name nil "\
*The login name of the user.
Got from the USER and LOGNAME environment variable if undefined.")

(defvar gnus-user-full-name nil "\
*The full name of the user.
Got from the NAME environment variable if undefined.")

(defvar gnus-show-threads t "\
*Show conversation threads in Subject Mode if non-nil.")

(defvar gnus-thread-hide-subject t "\
*Non-nil means hide subjects for thread subtrees.")

(defvar gnus-thread-hide-subtree nil "\
*Non-nil means hide thread subtrees initially.
If non-nil, you have to run the command gnus-Subject-show-thread by
hand or by using gnus-Select-article-hook to show hidden threads.")

(defvar gnus-thread-hide-killed t "\
*Non-nil means hide killed thread subtrees automatically.")

(defvar gnus-thread-ignore-subject nil "\
*Don't take care of subject differences, but only references if non-nil.
If it is non-nil, some commands work with subjects do not work properly.")

(defvar gnus-thread-indent-level 4 "\
*Indentation of thread subtrees.")

(defvar gnus-ignored-headers "^Path:\\|^Posting-Version:\\|^Article-I.D.:\\|^Expires:\\|^Date-Received:\\|^References:\\|^Control:\\|^Xref:\\|^Lines:\\|^Posted:\\|^Relay-Version:\\|^Message-ID:\\|^Nf-ID:\\|^Nf-From:\\|^Approved:\\|^Sender:" "\
*All random fields within the header of a message.")

(defvar gnus-show-all-headers nil "\
*Show all headers of an article if non-nil.")

(defvar gnus-save-all-headers nil "\
*Save all headers of an article if non-nil.")

(defvar gnus-optional-headers (function gnus-optional-lines-and-from) "\
*A function generating a optional string displayed in GNUS Subject
mode buffer.  The function is called with an article HEADER. The
result must be a string excluding `[' and `]'.")

(defvar gnus-auto-extend-newsgroup t "\
*Extend visible artciles to forward and backward if non-nil.")

(defvar gnus-auto-select-first t "\
*Select the first unread article automagically if non-nil.
If you want to prevent automatic selection of the first unread article
in some newsgroups, set the variable to nil in gnus-Select-group-hook
or gnus-Apply-kill-hook.")

(defvar gnus-auto-select-next t "\
*Select the next newsgroup automagically if non-nil.
If the value is t and the next newsgroup is empty, GNUS will exit
Subject mode and go back to Group mode.  If the value is neither nil
nor t, GNUS will select the following unread newsgroup. Especially, if
the value is the symbol `quietly', the next unread newsgroup will be
selected without any confirmations.")

(defvar gnus-auto-select-same nil "\
*Select the next article with the same subject automagically if non-nil.")

(defvar gnus-auto-center-subject t "\
*Always center the current subject in GNUS Subject mode window if non-nil.")

(defvar gnus-break-pages t "\
*Break an article into pages if non-nil.
Page delimiter is specified by the variable `gnus-page-delimiter'.")

(defvar gnus-page-delimiter "^" "\
*Regexp describing line-beginnings that separate pages of news article.")

(defvar gnus-digest-show-summary t "\
*Show a summary of undigestified messages if non-nil.")

(defvar gnus-digest-separator "^Subject:[ 	]" "\
*Regexp that separates messages in a digest article.")

(defvar gnus-use-full-window t "\
*Non-nil means to take up the entire screen of Emacs.")

(defvar gnus-window-configuration (quote ((SelectNewsgroup (0 1 0)) (ExitNewsgroup (1 0 0)) (SelectArticle (0 3 10)) (ExpandSubject (0 1 0)))) "\
*Specify window configurations for each action.
The format of the variable is a list of (ACTION (G S A)), where
G, S, and A are the relative height of Group, Subject, and Article
windows, respectively.  ACTION is `SelectNewsgroup', `ExitNewsgroup',
`SelectArticle', or `ExpandSubject'.")

(defvar gnus-mail-reply-method (function gnus-mail-reply-using-mail) "\
*A function to compose reply mail.
The function gnus-mail-reply-using-mail uses usual sendmail mail
program.  The function gnus-mail-reply-using-mhe uses mh-e mail
program.  You can use yet another program by customizing this variable.")

(defvar gnus-mail-forward-method (function gnus-mail-forward-using-mail) "\
*A function to forward current message to another user.
The function gnus-mail-reply-using-mail uses usual sendmail mail
program. You can use yet another program by customizing this variable.")

(defvar gnus-mail-other-window-method (function gnus-mail-other-window-using-mail) "\
*A function to compose mail in other window.
The function gnus-mail-other-window-using-mail uses usual sendmail
mail program.  The function gnus-mail-other-window-using-mhe uses mh-e
mail program.  You can use yet another program by customizing this variable.")

(defvar gnus-subscribe-newsgroup-method (function gnus-subscribe-alphabetically) "\
*A function called with a newsgroup name when new newsgroup is found.
The function gnus-subscribe-randomly inserts a new newsgroup a the
beginning of newsgroups.  The function gnus-subscribe-alphabetically
inserts it in strict alphabetic order.  The function
gnus-subscribe-hierarchically inserts it in hierarchical newsgroup
order.")

(defvar gnus-Group-mode-hook nil "\
*A hook for GNUS Group Mode.")

(defvar gnus-Subject-mode-hook nil "\
*A hook for GNUS Subject Mode.")

(defvar gnus-Article-mode-hook nil "\
*A hook for GNUS Article Mode.")

(defvar gnus-Kill-file-mode-hook nil "\
*A hook for GNUS KILL File Mode.")

(defvar gnus-Open-server-hook nil "\
*A hook called just before opening connection to news server.")

(defvar gnus-Startup-hook nil "\
*A hook called at start up time.
This hook is called after GNUS is connected to the NNTP server. So, it
is possible to change the behavior of GNUS according to the selected
NNTP server.")

(defvar gnus-Group-prepare-hook nil "\
*A hook called after newsgroup list is created in the Newsgroup buffer.
If you want to modify the Newsgroup buffer, you can use this hook.")

(defvar gnus-Subject-prepare-hook nil "\
*A hook called after subject list is created in the Subject buffer.
If you want to modify the Subject buffer, you can use this hook.")

(defvar gnus-Article-prepare-hook nil "\
*A hook called after an article is prepared in the Article buffer.
If you want to run a special decoding program like nkf, use this hook.")

(defvar gnus-Select-group-hook nil "\
*A hook called when a newsgroup is selected.
If you want to sort Subject buffer by date and then by subject, you
can use the following hook:

(setq gnus-Select-group-hook
      (function
       (lambda ()
	 ;; First of all, sort by date.
	 (gnus-sort-headers
	  (function
	   (lambda (a b)
	     (gnus-date-lessp (gnus-header-date a)
			      (gnus-header-date b)))))
	 ;; Then sort by subject string ignoring `Re:'.
	 ;; If case-fold-search is non-nil, case of letters is ignored.
	 (gnus-sort-headers
	  (function
	   (lambda (a b)
	     (gnus-string-lessp
	      (gnus-simplify-subject (gnus-header-subject a) 're)
	      (gnus-simplify-subject (gnus-header-subject b) 're)
	      )))))))

If you'd like to simplify subjects like the
`gnus-Subject-next-same-subject' command does, you can use the
following hook:

(setq gnus-Select-group-hook
      (function
       (lambda ()
	 (mapcar (function
		  (lambda (header)
		    (nntp-set-header-subject
		     header
		     (gnus-simplify-subject
		      (gnus-header-subject header) 're-only))))
		 gnus-newsgroup-headers))))

In some newsgroups author name is meaningless. It is possible to
prevent listing author names in GNUS Subject buffer as follows:

(setq gnus-Select-group-hook
      (function
       (lambda ()
	 (cond ((string-equal \"comp.sources.unix\" gnus-newsgroup-name)
		(setq gnus-optional-headers
		      (function gnus-optional-lines)))
	       (t
		(setq gnus-optional-headers
		      (function gnus-optional-lines-and-from)))))))")

(defvar gnus-Select-article-hook (function (lambda nil (gnus-Subject-show-thread))) "\
*A hook called when an article is selected.
The default hook shows conversation thread subtrees of the selected
article automatically as follows:

(setq gnus-Select-article-hook
      (function 
       (lambda ()
	 (gnus-Subject-show-thread))))

If you'd like to run RMAIL on a digest article automagically, you can
use the following hook:

(setq gnus-Select-article-hook
      (function
       (lambda ()
	 (gnus-Subject-show-thread)
	 (cond ((string-equal \"comp.sys.sun\" gnus-newsgroup-name)
		(gnus-Subject-rmail-digest))
	       ((and (string-equal \"comp.text\" gnus-newsgroup-name)
		     (string-match \"^TeXhax Digest\"
				   (gnus-header-subject gnus-current-headers)))
		(gnus-Subject-rmail-digest)
		)))))")

(defvar gnus-Select-digest-hook (function (lambda nil (or (mail-position-on-field "Reply-to" t) (progn (mail-position-on-field "Reply-to") (insert (gnus-fetch-field "From")))))) "\
*A hook called when reading digest messages using Rmail.
This hook can be used to modify incomplete digest articles as follows
(this is the default):

(setq gnus-Select-digest-hook
      (function
       (lambda ()
	 ;; Reply-To: is required by `undigestify-rmail-message'.
	 (or (mail-position-on-field \"Reply-to\" t)
	     (progn
	       (mail-position-on-field \"Reply-to\")
	       (insert (gnus-fetch-field \"From\")))))))")

(defvar gnus-Rmail-digest-hook nil "\
*A hook called when reading digest messages using Rmail.
This hook is intended to customize Rmail mode for reading digest articles.")

(defvar gnus-Apply-kill-hook (function gnus-apply-kill-file) "\
*A hook called when a newsgroup is selected and subject list is prepared.
This hook is intended to apply a KILL file to the selected newsgroup.
The function `gnus-apply-kill-file' is called defaultly.

Since a general KILL file is too heavy to use only for a few
newsgroups, I recommend you to use a lighter hook function. For
example, if you'd like to apply a KILL file to articles which contains
a string `rmgroup' in subject in newsgroup `control', you can use the
following hook:

(setq gnus-Apply-kill-hook
      (function
       (lambda ()
	 (cond ((string-match \"control\" gnus-newsgroup-name)
		(gnus-kill \"Subject\" \"rmgroup\")
		(gnus-expunge \"X\"))))))")

(defvar gnus-Mark-article-hook (function (lambda nil (or (memq gnus-current-article gnus-newsgroup-marked) (gnus-Subject-mark-as-read gnus-current-article)) (gnus-Subject-set-current-mark "+"))) "\
*A hook called when an article is selected at the first time.
The hook is intended to mark an article as read (or unread)
automatically when it is selected.

If you'd like to mark as unread (-) instead, use the following hook:

(setq gnus-Mark-article-hook
      (function
       (lambda ()
	 (gnus-Subject-mark-as-unread gnus-current-article)
	 (gnus-Subject-set-current-mark \"+\"))))")

(defvar gnus-Inews-article-hook nil "\
*A hook called before posting an article.
If you'd like to run a special encoding program, use this hook.")

(defvar gnus-Exit-group-hook nil "\
*A hook called when exiting (not quitting) Subject mode.
If your machine is so slow that exiting from Subject mode takes very
long time, set the variable gnus-use-cross-reference to nil. This
inhibits marking articles as read using cross-reference information.")

(defvar gnus-Suspend-gnus-hook nil "\
*A hook called when suspending (not exiting) GNUS.")

(defvar gnus-Exit-gnus-hook nil "\
*A hook called when exiting (not suspending) GNUS.")

(defvar gnus-Save-newsrc-hook nil "\
*A hook called when saving the newsrc file.
This hook is called before saving .newsrc file.")

(defvar gnus-local-timezone nil "\
*Local time zone. Both styles, \"JST\" and +0900 are acceptable.
If its value is non-nil, valid Date: field will be generated in terms
of RFC822.  In this case, timezone package must be installed.")

(defvar gnus-local-domain "mit.edu" "\
*Your domain name without your host name like: \"stars.flab.Fujitsu.CO.JP\"
The `DOMAINNAME' environment variable is used instead if defined.  If
the function (system-name) returns the full internet name, there is no
need to define the name.")

(defvar gnus-local-organization "Massachusetts Institute of Technology" "\
*Your organization like: \"Fujitsu Laboratories Ltd., Kawasaki, Japan.\"
The `ORGANIZATION' environment variable is used instead if defined.")

(defvar gnus-use-generic-from "athena.mit.edu" "\
*If nil, prepend local host name to the defined domain in the From:
field; if stringp, use this; if non-nil, strip of the local host name.")

(defvar gnus-use-generic-path "athena.mit.edu" "\
*If nil, use the NNTP server name in the Path: field; if stringp,
use this; if non-nil, use no host name (user name only)")

(defvar gnus-Info-directory "/afs/athena.mit.edu/contrib/sipb/lib/elisp/info" "\
*A directory placing an Info file of GNUS.")

(defvar gnus-ignore-newsgroups-regexp "^to\\..*$" "\
*A regular expression used to strip unwanted newsgroups from the active
file after retrieving it.  Any lines in the active file matching this regular
expression are removed from the newsgroup list before anything else is done to
it, thus making them effectively invisible to GNUS.")

(defconst gnus-version "GNUS 3.14.1" "\
Version numbers of this version of GNUS.")

(defvar gnus-Info-nodes (quote ((gnus-Group-mode . "(gnus)Newsgroup Commands") (gnus-Subject-mode . "(gnus)Subject Commands") (gnus-Article-mode . "(gnus)Article Commands") (gnus-Kill-file-mode . "(gnus)KILL File") (gnus-Browse-killed-mode . "(gnus)Maintenance"))) "\
Assoc list of major modes and related Info nodes.")

(defvar gnus-access-methods (quote ((nntp (gnus-retrieve-headers . nntp-retrieve-headers) (gnus-open-server . nntp-open-server) (gnus-close-server . nntp-close-server) (gnus-server-opened . nntp-server-opened) (gnus-status-message . nntp-status-message) (gnus-request-article . nntp-request-article) (gnus-request-group . nntp-request-group) (gnus-request-list . nntp-request-list) (gnus-request-post . nntp-request-post)) (nnspool (gnus-retrieve-headers . nnspool-retrieve-headers) (gnus-open-server . nnspool-open-server) (gnus-close-server . nnspool-close-server) (gnus-server-opened . nnspool-server-opened) (gnus-status-message . nnspool-status-message) (gnus-request-article . nnspool-request-article) (gnus-request-group . nnspool-request-group) (gnus-request-list . nnspool-request-list) (gnus-request-post . nnspool-request-post)) (mhspool (gnus-retrieve-headers . mhspool-retrieve-headers) (gnus-open-server . mhspool-open-server) (gnus-close-server . mhspool-close-server) (gnus-server-opened . mhspool-server-opened) (gnus-status-message . mhspool-status-message) (gnus-request-article . mhspool-request-article) (gnus-request-group . mhspool-request-group) (gnus-request-list . mhspool-request-list) (gnus-request-post . mhspool-request-post)))) "\
Access method for NNTP, nnspool, and mhspool.")

(defvar gnus-Group-buffer "*Newsgroup*")

(defvar gnus-Subject-buffer "*Subject*")

(defvar gnus-Article-buffer "*Article*")

(defvar gnus-Digest-buffer "GNUS Digest")

(defvar gnus-Digest-summary-buffer "GNUS Digest-summary")

(defvar gnus-buffer-list (list gnus-Group-buffer gnus-Subject-buffer gnus-Article-buffer gnus-Digest-buffer gnus-Digest-summary-buffer) "\
GNUS buffer names which should be killed when exiting.")

(defvar gnus-variable-list (quote (gnus-newsrc-options gnus-newsrc-options-n-yes gnus-newsrc-options-n-no gnus-newsrc-assoc gnus-killed-assoc gnus-marked-assoc)) "\
GNUS variables saved in the quick startup file.")

(defvar gnus-overload-functions (quote ((news-inews gnus-inews-news "rnewspost") (caesar-region gnus-caesar-region "rnews"))) "\
Functions overloaded by gnus.
It is a list of `(original overload &optional file)'.")

(defvar gnus-newsrc-options nil "\
Options line in the .newsrc file.")

(defvar gnus-newsrc-options-n-yes nil "\
Regexp representing subscribed newsgroups.")

(defvar gnus-newsrc-options-n-no nil "\
Regexp representing unsubscribed newsgroups.")

(defvar gnus-newsrc-assoc nil "\
Assoc list of read articles.")

(defvar gnus-killed-assoc nil "\
Assoc list of newsgroups removed from gnus-newsrc-assoc.")

(defvar gnus-marked-assoc nil "\
Assoc list of articles marked as unread.")

(defvar gnus-unread-hashtb nil "\
Hashtable of unread articles.")

(defvar gnus-active-hashtb nil "\
Hashtable of active articles.")

(defvar gnus-octive-hashtb nil "\
Hashtable of OLD active articles.")

(defvar gnus-current-startup-file nil "\
Startup file for the current host.")

(defvar gnus-last-search-regexp nil "\
Default regexp for article search command.")

(defvar gnus-last-shell-command nil "\
Default shell command on article.")

(defvar gnus-have-all-newsgroups nil)

(defvar gnus-newsgroup-name nil)

(defvar gnus-newsgroup-begin nil)

(defvar gnus-newsgroup-end nil)

(defvar gnus-newsgroup-last-rmail nil)

(defvar gnus-newsgroup-last-mail nil)

(defvar gnus-newsgroup-last-folder nil)

(defvar gnus-newsgroup-last-file nil)

(defvar gnus-newsgroup-unreads nil "\
List of unread articles in the current newsgroup.")

(defvar gnus-newsgroup-unselected nil "\
List of unselected unread articles in the current newsgroup.")

(defvar gnus-newsgroup-marked nil "\
List of marked articles in the current newsgroup (a subset of unread art).")

(defvar gnus-newsgroup-headers nil "\
List of article headers in the current newsgroup.
If the varialbe is modified (added or deleted), the function
gnus-clear-hashtables-for-newsgroup-headers must be called to clear
the hash tables.")

(defvar gnus-newsgroup-headers-hashtb-by-id nil)

(defvar gnus-newsgroup-headers-hashtb-by-number nil)

(defvar gnus-current-article nil)

(defvar gnus-current-headers nil)

(defvar gnus-current-history nil)

(defvar gnus-have-all-headers nil)

(defvar gnus-last-article nil)

(defvar gnus-current-kill-article nil)

(defvar gnus-winconf-kill-file nil)

(defvar gnus-Group-mode-map nil)

(defvar gnus-Subject-mode-map nil)

(defvar gnus-Article-mode-map nil)

(defvar gnus-Kill-file-mode-map nil)

(defvar rmail-last-file (expand-file-name "~/XMBOX"))

(defvar rmail-last-rmail-file (expand-file-name "~/XNEWS"))

(autoload (quote gnus-Group-post-news) "gnuspost" "\
Post an article." t)

(autoload (quote gnus-Subject-post-news) "gnuspost" "\
Post an article." t)

(autoload (quote gnus-Subject-post-reply) "gnuspost" "\
Post a reply article." t)

(autoload (quote gnus-Subject-post-reply-with-original) "gnuspost" "\
Post a reply article with original article." t)

(autoload (quote gnus-Subject-cancel-article) "gnuspost" "\
Cancel an article you posted." t)

(autoload (quote gnus-Subject-mail-reply) "gnusmail" "\
Reply mail to news author." t)

(autoload (quote gnus-Subject-mail-reply-with-original) "gnusmail" "\
Reply mail to news author with original article." t)

(autoload (quote gnus-Subject-mail-forward) "gnusmail" "\
Forward the current message to another user." t)

(autoload (quote gnus-Subject-mail-other-window) "gnusmail" "\
Compose mail in other window." t)

(autoload (quote gnus-Group-kill-region) "gnusmisc" "\
Kill newsgroups in current region." t)

(autoload (quote gnus-Group-kill-group) "gnusmisc" "\
Kill newsgroup on current line." t)

(autoload (quote gnus-Group-yank-group) "gnusmisc" "\
Yank the last killed newsgroup on current line." t)

(autoload (quote gnus-Browse-killed-groups) "gnusmisc" "\
Browse the killed newsgroups." t)

(autoload (quote gnus-gmt-to-local) "gnusmisc" "\
Rewrite Date field in GMT to local in current buffer.")

(autoload (quote timezone-make-sortable-date) "timezone")

(autoload (quote timezone-parse-date) "timezone")

(autoload (quote rmail-output) "rmailout" "\
Append this message to Unix mail file named FILE-NAME." t)

(autoload (quote mail-position-on-field) "sendmail")

(autoload (quote mh-find-path) "mh-e")

(autoload (quote mh-prompt-for-folder) "mh-e")

(put (quote gnus-Group-mode) (quote mode-class) (quote special))

(put (quote gnus-Subject-mode) (quote mode-class) (quote special))

(put (quote gnus-Article-mode) (quote mode-class) (quote special))

(defmacro gnus-eval-in-buffer-window (buffer &rest forms) "Pop to BUFFER, evaluate FORMS, and then returns to original window." (byte-code "DD	\"EE" [buffer forms let ((GNUSStartBufferWindow (selected-window))) unwind-protect append progn pop-to-buffer (select-window GNUSStartBufferWindow)] 7))

(defmacro gnus-make-hashtable nil (byte-code "" [(make-abbrev-table)] 1))

(defmacro gnus-gethash (string hashtable) "Get hash value of STRING in HASHTABLE." (byte-code "	E" [string hashtable abbrev-expansion] 3))

(defmacro gnus-sethash (string value hashtable) "Set hash value. Arguments are STRING, VALUE, and HASHTABLE." (byte-code "	E
E" [string hashtable value set intern] 4))

(defmacro nntp-header-number (header) "Return article number in HEADER." (byte-code "E" [header aref 0] 3))

(defmacro nntp-set-header-number (header number) "Set article number of HEADER to NUMBER." (byte-code "	F" [header number aset 0] 4))

(defmacro nntp-header-subject (header) "Return subject string in HEADER." (byte-code "E" [header aref 1] 3))

(defmacro nntp-set-header-subject (header subject) "Set article subject of HEADER to SUBJECT." (byte-code "	F" [header subject aset 1] 4))

(defmacro nntp-header-from (header) "Return author string in HEADER." (byte-code "E" [header aref 2] 3))

(defmacro nntp-set-header-from (header from) "Set article author of HEADER to FROM." (byte-code "	F" [header from aset 2] 4))

(defmacro nntp-header-xref (header) "Return xref string in HEADER." (byte-code "E" [header aref 3] 3))

(defmacro nntp-set-header-xref (header xref) "Set article xref of HEADER to xref." (byte-code "	F" [header xref aset 3] 4))

(defmacro nntp-header-lines (header) "Return lines in HEADER." (byte-code "E" [header aref 4] 3))

(defmacro nntp-set-header-lines (header lines) "Set article lines of HEADER to LINES." (byte-code "	F" [header lines aset 4] 4))

(defmacro nntp-header-date (header) "Return date in HEADER." (byte-code "E" [header aref 5] 3))

(defmacro nntp-set-header-date (header date) "Set article date of HEADER to DATE." (byte-code "	F" [header date aset 5] 4))

(defmacro nntp-header-id (header) "Return Id in HEADER." (byte-code "E" [header aref 6] 3))

(defmacro nntp-set-header-id (header id) "Set article Id of HEADER to ID." (byte-code "	F" [header id aset 6] 4))

(defmacro nntp-header-references (header) "Return references in HEADER." (byte-code "E" [header aref 7] 3))

(defmacro nntp-set-header-references (header ref) "Set article references of HEADER to REF." (byte-code "	F" [header ref aset 7] 4))

(defun capitalize-newsgroup (ng) (byte-code "	O!	O
P*" [first-char ng rest-chars capitalize 0 1 nil] 5))

(if gnus-Group-mode-map nil (setq gnus-Group-mode-map (make-keymap)) (suppress-keymap gnus-Group-mode-map) (define-key gnus-Group-mode-map " " (quote gnus-Group-read-group)) (define-key gnus-Group-mode-map "=" (quote gnus-Group-select-group)) (define-key gnus-Group-mode-map "j" (quote gnus-Group-jump-to-group)) (define-key gnus-Group-mode-map "n" (quote gnus-Group-next-unread-group)) (define-key gnus-Group-mode-map "p" (quote gnus-Group-prev-unread-group)) (define-key gnus-Group-mode-map "" (quote gnus-Group-prev-unread-group)) (define-key gnus-Group-mode-map "N" (quote gnus-Group-next-group)) (define-key gnus-Group-mode-map "P" (quote gnus-Group-prev-group)) (define-key gnus-Group-mode-map "" (quote gnus-Group-next-group)) (define-key gnus-Group-mode-map "" (quote gnus-Group-prev-group)) (define-key gnus-Group-mode-map "" (quote next-line)) (define-key gnus-Group-mode-map "/" (quote isearch-forward)) (define-key gnus-Group-mode-map "<" (quote beginning-of-buffer)) (define-key gnus-Group-mode-map ">" (quote end-of-buffer)) (define-key gnus-Group-mode-map "u" (quote gnus-Group-unsubscribe-current-group)) (define-key gnus-Group-mode-map "U" (quote gnus-Group-unsubscribe-group)) (define-key gnus-Group-mode-map "c" (quote gnus-Group-catch-up)) (define-key gnus-Group-mode-map "C" (quote gnus-Group-catch-up-all)) (define-key gnus-Group-mode-map "l" (quote gnus-Group-list-groups)) (define-key gnus-Group-mode-map "L" (quote gnus-Group-list-all-groups)) (define-key gnus-Group-mode-map "g" (quote gnus-Group-get-new-news)) (define-key gnus-Group-mode-map "R" (quote gnus-Group-restart)) (define-key gnus-Group-mode-map "b" (quote gnus-Group-check-bogus-groups)) (define-key gnus-Group-mode-map "r" (quote gnus-Group-restrict-groups)) (define-key gnus-Group-mode-map "a" (quote gnus-Group-post-news)) (define-key gnus-Group-mode-map "k" (quote gnus-Group-edit-local-kill)) (define-key gnus-Group-mode-map "K" (quote gnus-Group-edit-global-kill)) (define-key gnus-Group-mode-map "" (quote gnus-Group-kill-region)) (define-key gnus-Group-mode-map "" (quote gnus-Group-kill-group)) (define-key gnus-Group-mode-map "" (quote gnus-Group-yank-group)) (define-key gnus-Group-mode-map "" (quote gnus-Browse-killed-groups)) (define-key gnus-Group-mode-map "V" (quote gnus-version)) (define-key gnus-Group-mode-map "x" (quote gnus-Group-force-update)) (define-key gnus-Group-mode-map "s" (quote gnus-Group-force-update)) (define-key gnus-Group-mode-map "z" (quote gnus-Group-suspend)) (define-key gnus-Group-mode-map "q" (quote gnus-Group-exit)) (define-key gnus-Group-mode-map "Q" (quote gnus-Group-quit)) (define-key gnus-Group-mode-map "?" (quote gnus-Group-describe-briefly)) (define-key gnus-Group-mode-map "	" (quote gnus-Info-find-node)))

(defun gnus-Group-mode nil "\
Major mode for reading network news.
All normal editing commands are turned off.
Instead, these commands are available:

SPC	Read articles in this newsgroup.
=	Select this newsgroup.
j	Move to the specified newsgroup.
n	Move to the next unread newsgroup.
p	Move to the previous unread newsgroup.
C-n	Move to the next newsgroup.
C-p	Move to the previous newsgroup.
/	Do an incremental search forward.
<	Move point to the beginning of this buffer.
>	Move point to the end of this buffer.
u	Unsubscribe from (subscribe to) this newsgroup.
U	Unsubscribe from (subscribe to) the specified newsgroup.
c	Mark all articles as read, preserving marked articles.
C	Mark all articles in this newsgroup as read.
l	Revert this buffer.
L	List all newsgroups.
g	Get new news.
R	Force to read the raw .newsrc file and get new news.
b	Check bogus newsgroups.
r	Restrict visible newsgroups to the current region.
a	Post a new article.
ESC k	Edit a local KILL file applied to this newsgroup.
ESC K	Edit a global KILL file applied to all newsgroups.
C-w	Kill newsgroups in current region (excluding current point).
C-k	Kill this newsgroup.
C-y	Yank killed newsgroup here.
C-c C-y	Browse killed newsgroups.
s	Save .newsrc file.
z	Suspend reading news.
q	Quit reading news.
Q	Quit reading news without saving .newsrc file.
V	Show the version number of this GNUS.
?	Describe Group Mode commands briefly.
C-h m	Describe Group Mode.
C-c C-i	Read Info about Group Mode.

  The name of the host running NNTP server is asked for if no default
host is specified. It is also possible to choose another NNTP server
even when the default server is defined by giving a prefix argument to
the command `\\[gnus]'.

  If an NNTP server is preceded by a colon such as `:Mail', the user's
private directory `~/Mail' is used as a news spool. This makes it
possible to read mail stored in MH folders or articles saved by GNUS.
File names of mail or articles must consist of only numeric
characters. Otherwise, they are ignored.

  If there is a file named `~/.newsrc-SERVER', it is used as the
startup file instead of standard one when talking to SERVER.  It is
possible to talk to many hosts by using different startup files for
each.

  Option `-n' of the options line in the startup file is recognized
properly the same as the Bnews system. For example, if the options
line is `options -n !talk talk.rumors', newsgroups under the `talk'
hierarchy except for `talk.rumors' are ignored while checking new
newsgroups.

  If there is a file named `~/.signature-DISTRIBUTION', it is used as
signature file instead of standard one when posting a news in
DISTRIBUTION.

  If an Info file generated from `gnus.texinfo' is installed, you can
read an appropriate Info node of the Info file according to the
current major mode of GNUS by \\[gnus-Info-find-node].

  The variable `gnus-version', `nntp-version', `nnspool-version', and
`mhspool-version' have the version numbers of this version of gnus.el,
nntp.el, nnspool.el, and mhspoo.el, respectively.

User customizable variables:
 gnus-nntp-server
    Specifies the name of the host running the NNTP server. If its
    value is a string such as `:DIRECTORY', the user's private
    DIRECTORY is used as a news spool. The variable is initialized
    from the NNTPSERVER environment variable.

 gnus-nntp-service
    Specifies a NNTP service name. It is usually \"nntp\" or 119.  Nil
    forces GNUS to use a local news spool if the variable
    `gnus-nntp-server' is set to the local host name.

 gnus-startup-file
    Specifies a startup file (.newsrc). If there is a file named
    `.newsrc-SERVER', it's used instead when talking to SERVER. I
    recommend you to use the server specific file, if you'd like to
    talk to many servers.  Especially if you'd like to read your
    private directory, the name of the file must be
    `.newsrc-:DIRECTORY'.

 gnus-signature-file
    Specifies a signature file (.signature). If there is a file named
    `.signature-DISTRIBUTION', it's used instead when posting an
    article in DISTRIBUTION. Set the variable to nil to prevent
    appending the file automatically. If you use an NNTP inews which
    comes with the NNTP package, you may have to set the variable to
    nil.

 gnus-use-cross-reference
    Specifies what to do with cross references (Xref: field).  If it
    is nil, cross references are ignored.  If it is t, articles in
    subscribed newsgroups are only marked as read.  Otherwise, if it
    is not nil nor t, articles in all newsgroups are marked as read.

 gnus-use-followup-to
    Specifies what to do with followup-to: field.  If it is nil, its
    value is ignored.  If it is non-nil, its value is used as followup
    newsgroups.  Especially, if it is t and field value is `poster',
    your confirmation is required.

 gnus-author-copy
    Specifies a file name to save a copy of article you posted using
    FCC: field.  If the first character of the value is `|', the
    contents of the article is piped out to a program specified by the
    rest of the value.  The variable is initialized from the
    AUTHORCOPY environment variable.

 gnus-author-copy-saver
    Specifies a function to save an author copy.  The function is
    called with a file name.  The default function `rmail-output'
    saves in Unix mail format.

 gnus-kill-file-name
    Use specified file name as a KILL file (default to `KILL').

 gnus-novice-user
    Non-nil means that you are a novice to USENET.  If non-nil,
    verbose messages may be displayed or your confirmations may be
    required.

 gnus-interactive-post
    Non-nil means that newsgroup, subject and distribution are asked
    for interactively when posting a new article.

 gnus-use-full-window
    Non-nil means to take up the entire screen of Emacs.

 gnus-window-configuration
    Specifies the configuration of Group, Subject, and Article
    windows.  It is a list of (ACTION (G S A)), where G, S, and A are
    the relative height of Group, Subject, and Article windows,
    respectively.  ACTION is `SelectNewsgroup', `ExitNewsgroup',
    `SelectArticle', or `ExpandSubject'.

 gnus-subscribe-newsgroup-method
    Specifies a function called with a newsgroup name when new
    newsgroup is found.  The default definition adds new newsgroup at
    the beginning of other newsgroups.

Various hooks for customization:
 gnus-Group-mode-hook
    Entry to this mode calls the value with no arguments, if that
    value is non-nil. This hook is called before GNUS is connected to
    the NNTP server. So, you can change or define the NNTP server in
    this hook.

 gnus-Startup-hook
    Called with no arguments after the NNTP server is selected. It is
    possible to change the behavior of GNUS or initialize the
    variables according to the selected NNTP server.

 gnus-Group-prepare-hook
    Called with no arguments after a newsgroup list is created in the
    Newsgroup buffer, if that value is non-nil.

 gnus-Save-newsrc-hook
    Called with no arguments when saving newsrc file if that value is
    non-nil.

 gnus-Inews-article-hook
    Called with no arguments when posting an article if that value is
    non-nil. This hook is called just before posting an article, while
    news-inews-hook is called before preparing article headers. If
    you'd like to convert kanji code of the article, this hook is recommended.

 gnus-Suspend-gnus-hook
    Called with no arguments when suspending (not exiting) GNUS, if
    that value is non-nil.

 gnus-Exit-gnus-hook
    Called with no arguments when exiting (not suspending) GNUS, if
    that value is non-nil." (interactive) (byte-code "ǈ ! ̉& !<# !AB& ΉωЉщǉ!p!	!" [mode-line-modified mode-line-format t major-mode mode-name mode-line-buffer-identification mode-line-process nil gnus-Group-mode-map buffer-read-only kill-all-local-variables boundp "--- " default-value "--- GNUS: List of Newsgroups  %[(%m)%]----%3p-%-" gnus-Group-mode "Newsgroup" "GNUS: List of Newsgroups" use-local-map buffer-flush-undo run-hooks gnus-Group-mode-hook] 8))

(defun gnus (&optional confirm) "\
Read network news.
If optional argument CONFIRM is non-nil, ask NNTP server." (interactive "P") (byte-code "ňǎ!! 	!)" [gnus-Group-buffer confirm mode-line-process gnus-nntp-server buffer-read-only nil gnus-novice-user ((byte-code " ?  0 	\"  !)! ,  !" [mode-line-process gnus-nntp-server buffer-read-only nil gnus-novice-user gnus-server-opened gnus-Group-quit format " {%s}" erase-buffer gnus-Group-startup-message sit-for 0 run-hooks gnus-Startup-hook gnus-setup-news-info gnus-Group-describe-briefly gnus-Group-list-groups] 11)) switch-to-buffer get-buffer-create gnus-Group-mode gnus-start-news-server] 5))

(defun gnus-Group-startup-message nil "\
Insert startup message in current buffer." (byte-code "ced Z]\"#eb Z]\"\"" ["
                   GNUS Version 3.14.1

         NNTP-based News Reader for GNU Emacs


If you have any trouble with this software, please let me
know. I will fix your problems in the next release.

Comments, suggestions, and bug fixes are welcome.

Masanobu UMEDA
umerin@mse.kyutech.ac.jp" indent-rigidly / window-width 57 0 2 insert-char 10 window-height 18] 9))

(defun gnus-Group-list-groups (show-all) "\
List newsgroups in the Newsgroup buffer.
If argument SHOW-ALL is non-nil, unsubscribed groups are also listed." (interactive "P") (byte-code " \" \" ! !& !j eb7 !Q#a 	H 	!Q#a Y !Q#a # #+" [last-group next-group nil prev-group t show-all gnus-Group-group-name gnus-Group-search-forward gnus-Group-prepare zerop buffer-size message "No news is good news" re-search-forward "^.+: " regexp-quote "$" "^[ 	]+[1-9][0-9]*:" beginning-of-line search-forward ":"] 21))

(defun gnus-Group-prepare (&optional all) "\
Prepare list of newsgroups in current buffer.
If optional argument ALL is non-nil, unsubscribed groups are also listed." (byte-code " 
s 
@@\"8	9 89 Vj 8I ҂J V] 
\"AGZYd Ղe %c
A 	eb!." [buffer-read-only nil newsrc gnus-newsrc-assoc group-info group-name unread-count cntl gnus-unread-hashtb all gnus-marked-assoc gnus-have-all-newsgroups 0 "%s%s%5d: %s
" erase-buffer 1 abbrev-expansion format " " "U" assoc "*" run-hooks gnus-Group-prepare-hook] 11))

(defun gnus-Group-prepare-line (info) "\
Return a string for the Newsgroup buffer from INFO.
INFO is an element of gnus-newsrc-assoc or gnus-killed-assoc." (byte-code "	@\"8 \"8	\"\"!	8) ς* 
V; 
\"AGZYB ӂC 
%+" [group-name info unread-count gnus-unread-hashtb gnus-active-hashtb cntl gnus-marked-assoc 1 abbrev-expansion gnus-number-of-articles gnus-difference-of-range 2 nthcdr "%s%s%5d: %s
" format " " "U" 0 assoc "*"] 13))

(defun gnus-Group-update-group (group &optional visible-only) "\
Update newsgroup info of GROUP.
If optional argument VISIBLE-ONLY is non-nil, non displayed group is ignored." (byte-code " eb!Q#' ĉ `!`\"
. ?= \"!c!)*" [buffer-read-only nil visible group t visible-only gnus-newsrc-assoc widen re-search-forward "^.+: " regexp-quote "$" beginning-of-line delete-region forward-line 1 gnus-Group-prepare-line assoc -1] 10))

(defun gnus-Group-group-name nil "\
Get newsgroup name around point." (byte-code " ! !!\")" [beginning-of-line looking-at ".[* 	]*[0-9]+:[ 	]+\\([^ 	
]+\\)$" buffer-substring match-beginning 1 match-end] 7))

(defun gnus-Group-read-group (all &optional no-article) "\
Read news in this newsgroup.
If argument ALL is non-nil, already read articles become readable.
If optional argument NO-ARTICLE is non-nil, no article body is displayed." (interactive "P") (byte-code "Ĉ  	 
\"8!#)" [group all gnus-unread-hashtb no-article nil gnus-Group-group-name gnus-Subject-read-group zerop 1 abbrev-expansion] 8))

(defun gnus-Group-select-group (all) "\
Select this newsgroup.
No article is selected automatically.
If argument ALL is non-nil, already read articles become readable." (interactive "P") (byte-code "\"" [all t nil gnus-Group-read-group] 3))

(defun gnus-Group-jump-to-group (group) "\
Jump to newsgroup GROUP." (interactive (byte-code "$C" [gnus-newsrc-assoc nil completing-read "Newsgroup: " require-match] 5)) (byte-code "eb
!Q# 
\" 
! #" [gnus-newsrc-assoc nil group t re-search-forward "^.+: " regexp-quote "$" assoc gnus-Group-update-group beginning-of-line search-forward ":"] 9))

(defun gnus-Group-search-forward (backward any-group) "\
Search for newsgroup forward.
If 1st argument BACKWARD is non-nil, search backward instead.
If 2nd argument ANY-GROUP is non-nil, unsubscribed or empty group
may be selected." (byte-code "	 ǂ	  ˂  ͂ #	+  -  
$ #+" [func backward regexp any-group found nil t re-search-backward re-search-forward format "^%s[ 	]*\\(%s\\):" ".." " [ 	]" "[0-9]+" "[1-9][0-9]*" beginning-of-line end-of-line funcall search-forward ":"] 9))

(defun gnus-Group-next-group (n) "\
Go to next N'th newsgroup." (interactive "p") (byte-code "V \" S \"\" !" [n nil t 1 gnus-Group-search-forward message "No more newsgroups"] 4))

(defun gnus-Group-next-unread-group (n) "\
Go to next N'th unread newsgroup." (interactive "p") (byte-code "V \" S \"\" !" [n nil 1 gnus-Group-search-forward message "No more unread newsgroups"] 4))

(defun gnus-Group-prev-group (n) "\
Go to previous N'th newsgroup." (interactive "p") (byte-code "V \" S \"\" !" [n t nil 1 gnus-Group-search-forward message "No more newsgroups"] 4))

(defun gnus-Group-prev-unread-group (n) "\
Go to previous N'th unread newsgroup." (interactive "p") (byte-code "V \" S \"\" !" [n t nil 1 gnus-Group-search-forward message "No more unread newsgroups"] 4))

(defun gnus-Group-catch-up (all &optional quietly) "\
Mark all articles not marked as unread in current newsgroup as read.
If prefix argument ALL is non-nil, all articles are marked as read.
Cross references (Xref: field) of articles are ignored." (interactive "P") (byte-code "ň 
? \"A7 # 
! ɂ\" !7 !		#!!*" [group marked all gnus-marked-assoc quietly nil gnus-Group-group-name assoc y-or-n-p "Do you really want to mark everything as read? " "Delete all articles not marked as read? " message "" gnus-update-unread-articles gnus-Group-update-group gnus-Group-next-group 1] 8))

(defun gnus-Group-catch-up-all (&optional quietly) "\
Mark all articles in current newsgroup as read.
Cross references (Xref: field) of articles are ignored." (interactive) (byte-code "	\"" [t quietly nil gnus-Group-catch-up] 3))

(defun gnus-Group-unsubscribe-current-group nil "\
Toggle subscribe from/to unsubscribe current group." (interactive) (byte-code " !!" [nil gnus-Group-unsubscribe-group gnus-Group-group-name gnus-Group-next-group 1] 4))

(defun gnus-Group-unsubscribe-group (group) "\
Toggle subscribe from/to unsubscribe GROUP.
New newsgroup is added to .newsrc automatically." (interactive (byte-code "$C" [gnus-active-hashtb nil completing-read "Newsgroup: " require-match] 5)) (byte-code "\"
??+ 
\"
8?\"!! #N ;4 \"J !! #N \")" [gnus-active-hashtb nil newsrc group gnus-newsrc-assoc t assoc setcar nthcdr 1 gnus-update-newsrc-buffer gnus-Group-update-group beginning-of-line search-forward ":" abbrev-expansion gnus-add-newsgroup error "No such newsgroup: %s"] 15))

(defun gnus-Group-list-all-groups nil "\
List all of newsgroups in the Newsgroup buffer." (interactive) (byte-code "!" [t nil gnus-Group-list-groups] 2))

(defun gnus-Group-get-new-news nil "\
Get newly arrived articles. In fact, read the active file again." (interactive) (byte-code " !" [gnus-have-all-newsgroups nil gnus-setup-news-info gnus-Group-list-groups] 3))

(defun gnus-Group-restart nil "\
Force GNUS to read the raw startup file." (interactive) (byte-code " !	!" [t gnus-have-all-newsgroups nil gnus-save-newsrc-file gnus-setup-news-info gnus-Group-list-groups] 4))

(defun gnus-Group-check-bogus-groups nil "\
Check bogus newsgroups." (interactive) (byte-code "!	!" [t gnus-have-all-newsgroups nil gnus-check-bogus-newsgroups gnus-Group-list-groups] 3))

(defun gnus-Group-restrict-groups (start end) "\
Restrict visible newsgroups to the current region (START and END).
Type \\[widen] to remove restriction." (interactive "r") (byte-code "b `	b!`\")!!" [start end nil narrow-to-region beginning-of-line forward-line 1 message substitute-command-keys "Type \\[widen] to remove restriction"] 6))

(defun gnus-Group-edit-global-kill nil "\
Edit a global KILL file." (interactive) (byte-code "!!!" [gnus-current-kill-article nil gnus-Kill-file-edit-file message substitute-command-keys "Editing a global KILL file (Type \\[gnus-Kill-file-exit] to exit)"] 4))

(defun gnus-Group-edit-local-kill nil "\
Edit a local KILL file." (interactive) (byte-code " !!!" [gnus-current-kill-article nil gnus-Kill-file-edit-file gnus-Group-group-name message substitute-command-keys "Editing a local KILL file (Type \\[gnus-Kill-file-exit] to exit)"] 5))

(defun gnus-Group-force-update nil "\
Update .newsrc file." (interactive) (byte-code " " [nil gnus-save-newsrc-file] 2))

(defun gnus-Group-suspend nil "\
Suspend the current GNUS session.
In fact, cleanup buffers except for Group Mode buffer.
The hook gnus-Suspend-gnus-hook is called before actually suspending." (interactive) (byte-code "È!	( @
=? @! @!A ) " [buffers gnus-buffer-list gnus-Group-buffer nil run-hooks gnus-Suspend-gnus-hook get-buffer kill-buffer bury-buffer] 6))

(defun gnus-Group-exit nil "\
Quit reading news after updating .newsrc.
The hook gnus-Exit-gnus-hook is called before actually quitting." (interactive) (byte-code "  !  ? !) !!   " [noninteractive nil zerop buffer-size gnus-server-opened y-or-n-p "Are you sure you want to quit reading news? " message "" run-hooks gnus-Exit-gnus-hook gnus-save-newsrc-file gnus-clear-system gnus-close-server] 10))

(defun gnus-Group-quit nil "\
Quit reading news without updating .newsrc.
The hook gnus-Exit-gnus-hook is called before actually quitting." (interactive) (byte-code " !  ? !\"!' !!  " [gnus-current-startup-file nil zerop buffer-size gnus-server-opened yes-or-no-p format "Quit reading news without saving %s? " file-name-nondirectory message "" run-hooks gnus-Exit-gnus-hook gnus-clear-system gnus-close-server] 11))

(defun gnus-Group-describe-briefly nil "\
Describe Group mode commands briefly." (interactive) (byte-code "!!!!!!&!" [nil message concat substitute-command-keys "\\[gnus-Group-read-group]:Select  " "\\[gnus-Group-next-unread-group]:Forward  " "\\[gnus-Group-prev-unread-group]:Backward  " "\\[gnus-Group-exit]:Exit  " "\\[gnus-Info-find-node]:Run Info  " "\\[gnus-Group-describe-briefly]:This help"] 14))

(if gnus-Subject-mode-map nil (setq gnus-Subject-mode-map (make-keymap)) (suppress-keymap gnus-Subject-mode-map) (define-key gnus-Subject-mode-map " " (quote gnus-Subject-next-page)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-prev-page)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-scroll-up)) (define-key gnus-Subject-mode-map "n" (quote gnus-Subject-next-unread-article)) (define-key gnus-Subject-mode-map "p" (quote gnus-Subject-prev-unread-article)) (define-key gnus-Subject-mode-map "N" (quote gnus-Subject-next-article)) (define-key gnus-Subject-mode-map "P" (quote gnus-Subject-prev-article)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-next-same-subject)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-prev-same-subject)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-next-digest)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-prev-digest)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-next-subject)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-prev-subject)) (define-key gnus-Subject-mode-map "n" (quote gnus-Subject-next-unread-subject)) (define-key gnus-Subject-mode-map "p" (quote gnus-Subject-prev-unread-subject)) (define-key gnus-Subject-mode-map "." (quote gnus-Subject-first-unread-article)) (define-key gnus-Subject-mode-map "/" (quote isearch-forward)) (define-key gnus-Subject-mode-map "s" (quote gnus-Subject-isearch-article)) (define-key gnus-Subject-mode-map "s" (quote gnus-Subject-search-article-forward)) (define-key gnus-Subject-mode-map "S" (quote gnus-Subject-search-article-backward)) (define-key gnus-Subject-mode-map "<" (quote gnus-Subject-beginning-of-article)) (define-key gnus-Subject-mode-map ">" (quote gnus-Subject-end-of-article)) (define-key gnus-Subject-mode-map "j" (quote gnus-Subject-goto-subject)) (define-key gnus-Subject-mode-map "J" (quote gnus-Subject-goto-article)) (define-key gnus-Subject-mode-map "l" (quote gnus-Subject-goto-last-article)) (define-key gnus-Subject-mode-map "^" (quote gnus-Subject-refer-parent-article)) (define-key gnus-Subject-mode-map "r" (quote gnus-Subject-refer-article)) (define-key gnus-Subject-mode-map "u" (quote gnus-Subject-mark-as-unread-forward)) (define-key gnus-Subject-mode-map "U" (quote gnus-Subject-mark-as-unread-backward)) (define-key gnus-Subject-mode-map "d" (quote gnus-Subject-mark-as-read-forward)) (define-key gnus-Subject-mode-map "D" (quote gnus-Subject-mark-as-read-backward)) (define-key gnus-Subject-mode-map "u" (quote gnus-Subject-clear-mark-forward)) (define-key gnus-Subject-mode-map "U" (quote gnus-Subject-clear-mark-backward)) (define-key gnus-Subject-mode-map "k" (quote gnus-Subject-kill-same-subject-and-select)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-kill-same-subject)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-toggle-threads)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-show-thread)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-hide-thread)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-next-thread)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-prev-thread)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-up-thread)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-down-thread)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-kill-thread)) (define-key gnus-Subject-mode-map "&" (quote gnus-Subject-execute-command)) (define-key gnus-Subject-mode-map "c" (quote gnus-Subject-catch-up-and-exit)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-toggle-truncation)) (define-key gnus-Subject-mode-map "x" (quote gnus-Subject-delete-marked-as-read)) (define-key gnus-Subject-mode-map "X" (quote gnus-Subject-delete-marked-with)) (define-key gnus-Subject-mode-map "n" (quote gnus-Subject-sort-by-number)) (define-key gnus-Subject-mode-map "a" (quote gnus-Subject-sort-by-author)) (define-key gnus-Subject-mode-map "s" (quote gnus-Subject-sort-by-subject)) (define-key gnus-Subject-mode-map "d" (quote gnus-Subject-sort-by-date)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-sort-by-number)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-sort-by-author)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-sort-by-subject)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-sort-by-date)) (define-key gnus-Subject-mode-map "=" (quote gnus-Subject-expand-window)) (define-key gnus-Subject-mode-map "G" (quote gnus-Subject-reselect-current-group)) (define-key gnus-Subject-mode-map "w" (quote gnus-Subject-stop-page-breaking)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-caesar-message)) (define-key gnus-Subject-mode-map "g" (quote gnus-Subject-show-article)) (define-key gnus-Subject-mode-map "t" (quote gnus-Subject-toggle-header)) (define-key gnus-Subject-mode-map "v" (quote gnus-Subject-show-all-headers)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-rmail-digest)) (define-key gnus-Subject-mode-map "a" (quote gnus-Subject-post-news)) (define-key gnus-Subject-mode-map "f" (quote gnus-Subject-post-reply)) (define-key gnus-Subject-mode-map "F" (quote gnus-Subject-post-reply-with-original)) (define-key gnus-Subject-mode-map "C" (quote gnus-Subject-cancel-article)) (define-key gnus-Subject-mode-map "r" (quote gnus-Subject-mail-reply)) (define-key gnus-Subject-mode-map "R" (quote gnus-Subject-mail-reply-with-original)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-mail-forward)) (define-key gnus-Subject-mode-map "m" (quote gnus-Subject-mail-other-window)) (define-key gnus-Subject-mode-map "o" (quote gnus-Subject-save-article)) (define-key gnus-Subject-mode-map "" (quote gnus-Subject-save-in-mail)) (define-key gnus-Subject-mode-map "|" (quote gnus-Subject-pipe-output)) (define-key gnus-Subject-mode-map "k" (quote gnus-Subject-edit-local-kill)) (define-key gnus-Subject-mode-map "K" (quote gnus-Subject-edit-global-kill)) (define-key gnus-Subject-mode-map "V" (quote gnus-version)) (define-key gnus-Subject-mode-map "q" (quote gnus-Subject-exit)) (define-key gnus-Subject-mode-map "Q" (quote gnus-Subject-quit)) (define-key gnus-Subject-mode-map "?" (quote gnus-Subject-describe-briefly)) (define-key gnus-Subject-mode-map "	" (quote gnus-Info-find-node)))

(defun gnus-Subject-mode nil "\
Major mode for reading articles in this newsgroup.
All normal editing commands are turned off.
Instead, these commands are available:

SPC	Scroll to the next page of the current article.  The next unread
	article is selected automatically at the end of the message.
DEL	Scroll to the previous page of the current article.
RET	Scroll up (or down) one line the current article.
n	Move to the next unread article.
p	Move to the previous unread article.
N	Move to the next article.
P	Move to the previous article.
ESC C-n	Move to the next article which has the same subject as the
	current article.
ESC C-p	Move to the previous article which has the same subject as the
	current article.
\\[gnus-Subject-next-unread-same-subject]
	Move to the next unread article which has the same subject as the
	current article.
\\[gnus-Subject-prev-unread-same-subject]
	Move to the previous unread article which has the same subject as
	the current article.
C-c C-n	Scroll to the next digested message of the current article.
C-c C-p	Scroll to the previous digested message of the current article.
C-n	Move to the next subject.
C-p	Move to the previous subject.
ESC n	Move to the next unread subject.
ESC p	Move to the previous unread subject.
\\[gnus-Subject-next-group]
	Exit the current newsgroup and select the next unread newsgroup.
\\[gnus-Subject-prev-group]
	Exit the current newsgroup and select the previous unread newsgroup.
.	Jump to the first unread article in the current newsgroup.
/	Do an incremental search forward on subjects.
s	Do an incremental search forward on the current article.
ESC s	Search for an article containing a regexp forward.
ESC S	Search for an article containing a regexp backward.
<	Move point to the beginning of the current article.
>	Move point to the end of the current article.
j	Jump to the article specified by the numeric article ID.
J	Jump to the article specified by the numeric article ID, then read it.
l	Jump to the article you read last.
^	Refer to parent of the current article.
ESC r	Refer to the article specified by the Message-ID.
u	Mark the current article as unread, and go forward.
U	Mark the current article as unread, and go backward.
d	Mark the current article as read, and go forward.
D	Mark the current article as read, and go backward.
ESC u	Clear the current article's mark, and go forward.
ESC U	Clear the current article's mark, and go backward.
k	Mark articles which has the same subject as the current article as
	read, and then select the next unread article.
C-k	Mark articles which has the same subject as the current article as
	read.
ESC k	Edit a local KILL file applied to the current newsgroup.
ESC K	Edit a global KILL file applied to all newsgroups.
ESC C-t	Toggle showing conversation threads.
ESC C-s	Show thread subtrees.
ESC C-h	Hide thread subtrees.
\\[gnus-Subject-show-all-threads]	Show all thread subtrees.
\\[gnus-Subject-hide-all-threads]	Hide all thread subtrees.
ESC C-f	Go to the same level next thread.
ESC C-b	Go to the same level previous thread.
ESC C-d	Go downward current thread.
ESC C-u	Go upward current thread.
ESC C-k	Mark articles under current thread as read.
&	Execute a command for each article conditionally.
\\[gnus-Subject-catch-up]
	Mark all articles as read in the current newsgroup, preserving
	articles marked as unread.
\\[gnus-Subject-catch-up-all]
	Mark all articles as read in the current newsgroup.
\\[gnus-Subject-catch-up-and-exit]
	Catch up all articles not marked as unread, and then exit the
	current newsgroup.
\\[gnus-Subject-catch-up-all-and-exit]
	Catch up all articles, and then exit the current newsgroup.
C-t	Toggle truncations of subject lines.
x	Delete subject lines marked as read.
X	Delete subject lines with the specific marks.
C-c C-s C-n	Sort subjects by article number.
C-c C-s C-a	Sort subjects by article author.
C-c C-s C-s	Sort subjects alphabetically.
C-c C-s C-d	Sort subjects by date.
=	Expand Subject window to show headers full window.
G	Reselect the current newsgroup. Prefix argument means to select all.
w	Stop page breaking by linefeed.
C-c C-r	Caesar rotates letters by 13/47 places.
g	Force to show the current article.
t	Show original article header if pruned header currently shown, or
	vice versa.
v	Show original article header.
C-d	Run RMAIL on the current digest article.
a	Post a new article.
f	Post a reply article.
F	Post a reply article with original article.
C	Cancel the current article.
r	Mail a message to the author.
R	Mail a message to the author with original author.
C-c C-f	Forward the current message to another user.
m	Mail a message in other window.
o	Save the current article in your favorite format.
C-o	Append the current article to a file in Unix mail format.
|	Pipe the contents of the current article to a subprocess.
q	Quit reading news in the current newsgroup.
Q	Quit reading news without recording unread articles information.
V	Show the version number of this GNUS.
?	Describe Subject Mode commands briefly.
C-h m	Describe Subject Mode.
C-c C-i	Read Info about Subject Mode.

User customizable variables:
 gnus-large-newsgroup
    The number of articles which indicates a large newsgroup. If the
    number of articles in a newsgroup is greater than the value, the
    number of articles to be selected is asked for. If the given value
    N is positive, the last N articles is selected. If N is negative,
    the first N articles are selected. An empty string means to select
    all articles.

 gnus-use-long-file-name
    Non-nil means that a newsgroup name is used as a default file name
    to save articles to. If it's nil, the directory form of a
    newsgroup is used instead.

 gnus-default-article-saver
    Specifies your favorite article saver which is interactively
    funcallable. Following functions are available:

	gnus-Subject-save-in-rmail (in Rmail format)
	gnus-Subject-save-in-mail (in Unix mail format)
	gnus-Subject-save-in-folder (in MH folder)
	gnus-Subject-save-in-file (in article format).

 gnus-rmail-save-name
 gnus-mail-save-name
 gnus-folder-save-name
 gnus-file-save-name
    Specifies a function generating a file name to save articles in
    specified format.  The function is called with NEWSGROUP, HEADERS,
    and optional LAST-FILE.  Access macros to the headers are defined
    as nntp-header-FIELD, and functions are defined as
    gnus-header-FIELD.

 gnus-article-save-directory
    Specifies a directory name to save articles to using the commands
    gnus-Subject-save-in-rmail, gnus-Subject-save-in-mail and
    gnus-Subject-save-in-file. The variable is initialized from the
    SAVEDIR environment variable.

 gnus-show-all-headers
    Non-nil means that all headers of an article are shown.

 gnus-save-all-headers
    Non-nil means that all headers of an article are saved in a file.

 gnus-show-threads
    Non-nil means that conversation threads are shown in tree structure.

 gnus-thread-hide-subject
    Non-nil means that subjects for thread subtrees are hidden.

 gnus-thread-hide-subtree
    Non-nil means that thread subtrees are hidden initially.

 gnus-thread-hide-killed
    Non-nil means that killed thread subtrees are hidden automatically.

 gnus-thread-ignore-subject
    Non-nil means that subject differences are ignored in constructing
    thread trees.

 gnus-thread-indent-level
    Indentation of thread subtrees.

 gnus-optional-headers
    Specifies a function which generates an optional string displayed
    in the Subject buffer. The function is called with an article
    HEADERS.  The result must be a string excluding `[' and `]'.  The
    default function returns a string like NNN:AUTHOR, where NNN is
    the number of lines in an article and AUTHOR is the name of the
    author.

 gnus-auto-extend-newsgroup
    Non-nil means visible articles are extended to forward and
    backward automatically if possible.

 gnus-auto-select-first
    Non-nil means the first unread article is selected automagically
    when a newsgroup is selected normally (by gnus-Group-read-group).
    If you'd like to prevent automatic selection of the first unread
    article in some newsgroups, set the variable to nil in
    gnus-Select-group-hook or gnus-Apply-kill-hook.

 gnus-auto-select-next
    Non-nil means the next newsgroup is selected automagically at the
    end of the newsgroup. If the value is t and the next newsgroup is
    empty (no unread articles), GNUS will exit Subject mode and go
    back to Group mode. If the value is neither nil nor t, GNUS won't
    exit Subject mode but select the following unread newsgroup.
    Especially, if the value is the symbol `quietly', the next unread
    newsgroup will be selected without any confirmations.

 gnus-auto-select-same
    Non-nil means an article with the same subject as the current
    article is selected automagically like `rn -S'.

 gnus-auto-center-subject
    Non-nil means the point of Subject Mode window is always kept
    centered.

 gnus-break-pages
    Non-nil means an article is broken into pages at page delimiters.
    This may not work with some versions of GNU Emacs earlier than
    version 18.50.

 gnus-page-delimiter
    Specifies a regexp describing line-beginnings that separate pages
    of news article.

 [gnus-more-message is obsolete.  overlay-arrow-string interfares
    with other subsystems, such as dbx mode.]

 gnus-digest-show-summary
    Non-nil means that a summary of digest messages is shown when
    reading a digest article using `gnus-Subject-rmail-digest'
    command.

 gnus-digest-separator
    Specifies a regexp separating messages in a digest article.

 gnus-mail-reply-method
 gnus-mail-other-window-method
    Specifies a function to begin composing mail message using
    commands gnus-Subject-mail-reply and
    gnus-Subject-mail-other-window.  Functions
    gnus-mail-reply-using-mail and gnus-mail-reply-using-mhe are
    available for the value of gnus-mail-reply-method.  And functions
    gnus-mail-other-window-using-mail and
    gnus-mail-other-window-using-mhe are available for the value of
    gnus-mail-other-window-method.

Various hooks for customization:
 gnus-Subject-mode-hook
    Entry to this mode calls the value with no arguments, if that
    value is non-nil.

 gnus-Select-group-hook
    Called with no arguments when newsgroup is selected, if that value
    is non-nil. It is possible to sort subjects in this hook. See the
    documentation of this variable for more information.

 gnus-Subject-prepare-hook
    Called with no arguments after a subject list is created in the
    Subject buffer, if that value is non-nil. If you'd like to modify
    the buffer, you can use this hook.

 gnus-Select-article-hook
    Called with no arguments when an article is selected, if that
    value is non-nil. See the documentation of this variable for more
    information.

 gnus-Select-digest-hook
    Called with no arguments when reading digest messages using Rmail,
    if that value is non-nil. This hook can be used to modify an
    article so that Rmail can work with it. See the documentation of
    the variable for more information.

 gnus-Rmail-digest-hook
    Called with no arguments when reading digest messages using Rmail,
    if that value is non-nil. This hook is intended to customize Rmail
    mode.

 gnus-Apply-kill-hook
    Called with no arguments when a newsgroup is selected and the
    Subject buffer is prepared. This hook is intended to apply a KILL
    file to the selected newsgroup. The format of KILL file is
    completely different from that of version 3.8. You have to rewrite
    them in the new format. See the documentation of Kill file mode
    for more information.

 gnus-Mark-article-hook
    Called with no arguments when an article is selected at the first
    time. The hook is intended to mark an article as read (or unread)
    automatically when it is selected.  See the documentation of the
    variable for more information.

 gnus-Exit-group-hook
    Called with no arguments when exiting the current newsgroup, if
    that value is non-nil. If your machine is so slow that exiting
    from Subject mode takes very long time, inhibit marking articles
    as read using cross-references by setting the variable
    gnus-use-cross-reference to nil in this hook." (interactive) (byte-code "È ! ω  !<  !AB!É҉Ӊ!\"F DB !p!ɉɉ
ɉɉ!" [mode-line-modified mode-line-format global-mode-string nil major-mode mode-name minor-mode-alist gnus-Subject-mode-map buffer-read-only t truncate-lines selective-display selective-display-ellipses kill-all-local-variables boundp "--- " default-value make-local-variable gnus-Subject-mode "Subject" assq gnus-show-threads " Thread" gnus-Subject-set-mode-line use-local-map buffer-flush-undo run-hooks gnus-Subject-mode-hook] 12))

(defun gnus-Subject-setup-buffer nil "\
Initialize subject display buffer." (byte-code "! q !q " [gnus-Subject-buffer get-buffer get-buffer-create gnus-Subject-mode] 4))

(defun gnus-Subject-read-group (group &optional show-all no-article) "\
Start reading news in newsgroup GROUP.
If optional 1st argument SHOW-ALL is non-nil, already read articles are
also listed.
If optional 2nd argument NO-ARTICLE is non-nil, no article is selected
initially." (byte-code "\"	\"  ! ! !, \"! 6 6  eb?G G  ^ p!=[  # !! 	! 	! 	q
 )) 	! # \"  \"!!!  " [group show-all nil t gnus-show-threads gnus-thread-hide-subtree no-article gnus-auto-select-first gnus-Subject-buffer gnus-Article-buffer buffer-read-only gnus-active-hashtb message "Retrieving newsgroup: %s..." gnus-select-newsgroup gnus-Subject-setup-buffer run-hooks gnus-Select-group-hook gnus-Subject-prepare gnus-Apply-kill-hook zerop buffer-size gnus-Subject-catch-up-and-exit "No unread news" gnus-Subject-hide-all-threads gnus-Subject-first-unread-article get-buffer beginning-of-line search-forward ":" gnus-configure-windows SelectNewsgroup pop-to-buffer gnus-Subject-set-mode-line get-buffer-window erase-buffer kill-buffer abbrev-expansion ding gnus-nntp-message format "Cannot select %s.  May be security or active file problem." sit-for 0 gnus-Group-check-bogus-groups] 32))

(defun gnus-Subject-prepare nil "\
Prepare subject list of current newsgroup in Subject mode buffer." (byte-code " 
 ! \"!eb!)" [buffer-read-only nil gnus-show-threads gnus-newsgroup-headers erase-buffer gnus-Subject-prepare-threads gnus-make-threads 0 message "" run-hooks gnus-Subject-prepare-hook] 6))

(defun gnus-Subject-prepare-threads (threads level) "\
Prepare Subject buffer from THREADS and indentation LEVEL.
THREADS is a list of `(PARENT [(CHILD1 [(GRANDCHILD ...]...) ...]).'" (byte-code "!G\" @A:, @/ 
! 
H>I ӂU >T ԂU 
\"\"i 
\"m 
!w ?~   \"
HP&c: A A
T\" ," [thread nil header number cntl gnus-newsgroup-end threads gnus-newsgroup-marked gnus-newsgroup-unreads t level gnus-thread-indent-level gnus-optional-headers gnus-thread-hide-subject format "%%s %%s%%%dd: [%%s] %%s
" prin1-to-string vectorp 0 "-" " " "D" make-string * 32 funcall "" zerop window-width 1 gnus-Subject-prepare-threads] 19))

(defun gnus-Subject-set-mode-line nil "\
Set Subject mode line string." (byte-code "	
 	H 
GZ]\"Q)!" [subject gnus-current-headers gnus-newsgroup-name mode-line-buffer-identification t 1 "GNUS: " make-string 0 17 32 set-buffer-modified-p] 6))

(defun gnus-Subject-search-group (&optional backward) "\
Search for next unread newsgroup.
If optional argument BACKWARD is non-nil, search backward instead." (byte-code "q	\"  ))" [gnus-Group-buffer backward nil gnus-Group-search-forward gnus-Group-group-name] 3))

(defun gnus-Subject-search-subject (backward unread subject) "\
Search for article forward.
If 1st argument BACKWARD is non-nil, search backward.
If 2nd argument UNREAD is non-nil, only unread article is selected.
If 3rd argument SUBJECT is non-nil, the article which has
the same subject will be searched for." (byte-code "	 Ȃ	 = ̂  ͂ 0 !!Q1 #	>  @  $V !!\"! #
+" [func backward article nil regexp unread t subject re-search-backward re-search-forward format "^%s[ 	]+\\([0-9]+\\):.\\[[^]
]*\\][ 	]+%s" " " "[ ---]" "." "\\([Rr][Ee]:[ 	]+\\)*" regexp-quote gnus-simplify-subject "\\([ 	]*([^
]*)\\)*[ 	]*\\(\\|$\\)" "" beginning-of-line end-of-line funcall string-to-int buffer-substring match-beginning 1 match-end search-forward ":"] 15))

(defun gnus-Subject-search-forward (&optional unread subject) "\
Search for article forward.
If 1st optional argument UNREAD is non-nil, only unread article is selected.
If 2nd optional argument SUBJECT is non-nil, the article which has
the same subject will be searched for." (byte-code "	
#" [nil unread subject gnus-Subject-search-subject] 4))

(defun gnus-Subject-search-backward (&optional unread subject) "\
Search for article backward.
If 1st optional argument UNREAD is non-nil, only unread article is selected.
If 2nd optional argument SUBJECT is non-nil, the article which has
the same subject will be searched for." (byte-code "	
#" [t unread subject gnus-Subject-search-subject] 4))

(defun gnus-Subject-article-number nil "\
Article number around point. If nothing, return current number." (byte-code " ! !!\"! )" [gnus-current-article beginning-of-line looking-at ".[ 	]+\\([0-9]+\\):" string-to-int buffer-substring match-beginning 1 match-end] 8))

(defun gnus-Subject-subject-string nil "\
Return current subject string or nil if nothing." (byte-code " ! !!\")" [beginning-of-line looking-at ".[ 	]+[0-9]+:.\\[[^]
]*\\][ 	]+\\([^
]*\\)[
]" buffer-substring match-beginning 1 match-end] 7))

(defun gnus-Subject-goto-subject (article) "\
Move point to ARTICLE's subject." (interactive (byte-code "\"$!C" [gnus-newsgroup-headers nil string-to-int completing-read "Article number: " mapcar (lambda (headers) (byte-code "H!C" [headers int-to-string 0] 3)) require-match] 7)) (byte-code "`eb \"# 
b)" [gnus-newsgroup-headers nil current article t re-search-forward format "^.[ 	]+%d:"] 5))

(defun gnus-Subject-recenter nil "\
Center point in Subject mode window." (byte-code "\" 	!\"  Z\"`d\"W\"  Z\"!" [gnus-auto-center-subject gnus-Article-buffer get-buffer-window / window-height 1 2 count-lines recenter] 9))

(defun gnus-Subject-jump-to-group (newsgroup) "\
Move point to NEWSGROUP in Group mode buffer." (byte-code "p!= Ë! ! ! q	!)" [gnus-Group-buffer newsgroup get-buffer ((byte-code "!	 !	!" [gnus-Group-buffer newsgroup get-buffer-window pop-to-buffer gnus-Group-jump-to-group] 4)) get-buffer-window pop-to-buffer gnus-Group-jump-to-group] 5))

(defun gnus-Subject-next-group (no-article) "\
Exit current newsgroup and then select next unread newsgroup.
If prefix argument NO-ARTICLE is non-nil, no article is selected initially." (interactive "P") (byte-code "È! 	? \" !R 	\"!	!	#p!=R =R p!=R  R  #)" [gnus-newsgroup-name group t nil no-article gnus-Subject-buffer gnus-auto-select-next gnus-Group-buffer gnus-Subject-jump-to-group gnus-Subject-search-group message "Exiting %s..." gnus-Subject-exit "" "Selecting %s..." gnus-Subject-read-group get-buffer gnus-Group-group-name] 17))

(defun gnus-Subject-prev-group (no-article) "\
Exit current newsgroup and then select previous unread newsgroup.
If prefix argument NO-ARTICLE is non-nil, no article is selected initially." (interactive "P") (byte-code "È!!	? \" !U 	\"!	!	#p!=U =U p!=U !U !#)" [gnus-newsgroup-name group t nil no-article gnus-Subject-buffer gnus-auto-select-next gnus-Group-buffer gnus-Subject-jump-to-group gnus-Subject-search-group message "Exiting %s..." gnus-Subject-exit "" "Selecting %s..." gnus-Subject-read-group get-buffer] 17))

(defun gnus-Subject-next-subject (n &optional unread) "\
Go to next N'th subject line.
If optional argument UNREAD is non-nil, only unread article is selected." (interactive "p") (byte-code "ÈV 	! S 	!\"  / 	, !/ !" [n unread t nil 1 gnus-Subject-search-forward gnus-Subject-recenter message "No more unread articles" "No more articles"] 6))

(defun gnus-Subject-next-unread-subject (n) "\
Go to next N'th unread subject line." (interactive "p") (byte-code "\"" [n t nil gnus-Subject-next-subject] 3))

(defun gnus-Subject-prev-subject (n &optional unread) "\
Go to previous N'th subject line.
If optional argument UNREAD is non-nil, only unread article is selected." (interactive "p") (byte-code "ÈV 	! S 	!\"  / 	, !/ !" [n unread t nil 1 gnus-Subject-search-backward gnus-Subject-recenter message "No more unread articles" "No more articles"] 6))

(defun gnus-Subject-prev-unread-subject (n) "\
Go to previous N'th unread subject line." (interactive "p") (byte-code "\"" [n t nil gnus-Subject-prev-subject] 3))

(defun gnus-Subject-expand-window nil "\
Expand Subject window to show headers full window." (interactive) (byte-code "!!" [gnus-Subject-buffer nil gnus-configure-windows ExpandSubject pop-to-buffer] 3))

(defun gnus-Subject-display-article (article &optional all-header) "\
Display ARTICLE in Article buffer." (byte-code "?	 ! !
!\"  !ć" [article nil gnus-Subject-buffer all-header t gnus-configure-windows SelectArticle pop-to-buffer gnus-Article-prepare gnus-Subject-recenter gnus-Subject-set-mode-line run-hooks gnus-Select-article-hook] 7))

(defun gnus-Subject-select-article (&optional all-headers force) "\
Select the current article.
Optional argument ALL-HEADERS is non-nil, show all headers." (byte-code " 	? 	\" 
 =?! \"( !!)" [article gnus-current-article force all-headers gnus-have-all-headers gnus-Subject-buffer gnus-Subject-article-number /= gnus-Subject-display-article gnus-configure-windows SelectArticle pop-to-buffer] 6))

(defun gnus-Subject-set-current-mark (&optional current-mark) "\
Put `+' at the current article.
Optional argument specifies CURRENT-MARK instead of `+'." (byte-code "qeb# !ceb\"#0 !/ c))" [gnus-Subject-buffer buffer-read-only nil t gnus-current-article current-mark re-search-forward "^.[ 	]+[0-9]+:[^ 	]" delete-char -1 " " format "^.[ 	]+%d:" 1 "+"] 7))

(defun gnus-Subject-next-article (unread &optional subject) "\
Select article after current one.
If argument UNREAD is non-nil, only unread article is selected." (interactive "P") (byte-code "
\"! ! ! \"! >B p`	 p=> `	W> !* 
U 
?U ?U  q \"dbC\")!  !  >  ?
 肗  =?  !!\"8$ !!# # = !  rU ! )+)" [header nil unread subject gnus-auto-select-same gnus-newsgroup-unreads gnus-newsgroup-marked this-command buffer last-point gnus-auto-extend-newsgroup buffer-read-only gnus-newsgroup-end t cmd group auto-select gnus-auto-select-next gnus-unread-hashtb gnus-newsgroup-name char unread-command-char gnus-Subject-display-article gnus-Subject-search-forward gnus-set-difference (gnus-Subject-next-unread-article gnus-Subject-next-page gnus-Subject-kill-same-subject-and-select) gnus-Subject-first-unread-article message "Wrapped" gnus-more-header-forward gnus-extend-newsgroup gnus-Subject-prepare-threads 0 gnus-Subject-goto-article string-to-char this-command-keys gnus-Subject-search-group (gnus-Subject-next-unread-article gnus-Subject-next-article gnus-Subject-next-page gnus-Subject-next-same-subject gnus-Subject-next-unread-same-subject gnus-Subject-kill-same-subject gnus-Subject-kill-same-subject-and-select) input-pending-p "No more%s articles%s" " unread" "" quietly format " (Type %s to %s [%d])" key-description char-to-string 1 abbrev-expansion " (Type %s to exit %s)" gnus-Subject-next-group] 26))

(defun gnus-Subject-next-unread-article nil "\
Select unread article after current one." (interactive) (byte-code "	
  \"" [t gnus-auto-select-same nil gnus-Subject-next-article gnus-Subject-subject-string] 4))

(defun gnus-Subject-prev-article (unread &optional subject) "\
Select article before current one.
If argument UNREAD is non-nil, only unread article is selected." (interactive "P") (byte-code "
\"!b ! ! \"! >+ 
\"b 
5 !b C ?C  _ \"
ebC\")!b !)" [header nil unread subject gnus-auto-select-same gnus-newsgroup-unreads gnus-newsgroup-marked this-command gnus-auto-extend-newsgroup t buffer-read-only gnus-newsgroup-begin gnus-Subject-display-article gnus-Subject-search-backward gnus-set-difference (gnus-Subject-prev-unread-article) gnus-Subject-prev-article message "No more unread articles" gnus-more-header-backward gnus-extend-newsgroup gnus-Subject-prepare-threads 0 gnus-Subject-goto-article "No more articles"] 11))

(defun gnus-Subject-prev-unread-article nil "\
Select unred article before current one." (interactive) (byte-code "	
  \"" [t gnus-auto-select-same nil gnus-Subject-prev-article gnus-Subject-subject-string] 4))

(defun gnus-Subject-next-page (lines) "\
Show next page of selected article.
If end of artile, select next article.
Argument LINES specifies lines to be scrolled up." (interactive "P") (byte-code " ? \" !O !! ώ!!))	: C !O 	J ?O  *" [article endp nil gnus-current-article gnus-Subject-buffer GNUSStartBufferWindow gnus-Article-buffer lines gnus-Subject-article-number /= gnus-Subject-display-article gnus-configure-windows SelectArticle pop-to-buffer selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) gnus-Article-next-page message "End of message" gnus-Subject-next-unread-article] 11))

(defun gnus-Subject-prev-page (lines) "\
Show previous page of selected article.
Argument LINES specifies lines to be scrolled down." (interactive "P") (byte-code "ƈ 	? 	\" !- !
! Ύ!!)))" [article gnus-current-article gnus-Subject-buffer GNUSStartBufferWindow gnus-Article-buffer lines nil gnus-Subject-article-number /= gnus-Subject-display-article gnus-configure-windows SelectArticle pop-to-buffer selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) gnus-Article-prev-page] 9))

(defun gnus-Subject-scroll-up (lines) "\
Scroll up (or down) one line current article.
Argument LINES specifies lines to be scrolled up (or down if negative)." (interactive "p") (byte-code "È  Ǝ	!
V  
! !+ 
W+ 
Z!))" [GNUSStartBufferWindow gnus-Article-buffer lines nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer 0 gnus-Article-next-page message "End of message" gnus-Article-prev-page] 8))

(defun gnus-Subject-next-same-subject nil "\
Select next article which has the same subject as current one." (interactive) (byte-code " \"" [nil gnus-Subject-next-article gnus-Subject-subject-string] 4))

(defun gnus-Subject-prev-same-subject nil "\
Select previous article which has the same subject as current one." (interactive) (byte-code " \"" [nil gnus-Subject-prev-article gnus-Subject-subject-string] 4))

(defun gnus-Subject-next-unread-same-subject nil "\
Select next unread article which has the same subject as current one." (interactive) (byte-code " \"" [t nil gnus-Subject-next-article gnus-Subject-subject-string] 4))

(defun gnus-Subject-prev-unread-same-subject nil "\
Select previous unread article which has the same subject as current one." (interactive) (byte-code " \"" [t nil gnus-Subject-prev-article gnus-Subject-subject-string] 4))

(defun gnus-Subject-refer-parent-article (child) "\
Refer parent article of current article.
If a prefix argument CHILD is non-nil, go back to the child article
using internally maintained articles history.
NOTE: This command may not work with nnspool.el." (interactive "P") (byte-code "\" !K  ʎ!!9 \"9 !!O)))	;H 	!K !)" [t referenced-id nil child GNUSStartBufferWindow gnus-Article-buffer references gnus-Subject-select-article gnus-Subject-refer-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer gnus-fetch-field "References" string-match "\\(<[^<>]+>\\)[^>]*\\'" match-beginning 1 match-end error "No more parents"] 11))

(defun gnus-Subject-refer-article (message-id) "\
Refer article specified by MESSAGE-ID.
If the MESSAGE-ID is nil or an empty string, Message-ID is poped from
internally maintained articles history.
NOTE: This command may not work with nnspool.el." (interactive "sMessage-ID: ") (byte-code "ƈ\"	; 	GVT  ʎ!	\"( 	P	\"5 	P!	\"N @\"N B)))] @A	;j 	\"m !" [t message-id GNUSStartBufferWindow gnus-Article-buffer current gnus-current-history nil gnus-Subject-select-article 0 selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer string-match "^<" "<" ">$" ">" gnus-fetch-field "Message-ID" equal gnus-Article-prepare error "No such references"] 11))

(defun gnus-Subject-next-digest (nth) "\
Move to head of NTH next digested message." (interactive "p") (byte-code "È  Ǝ	!
 !))" [GNUSStartBufferWindow gnus-Article-buffer nth nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer gnus-Article-next-digest 1] 5))

(defun gnus-Subject-prev-digest (nth) "\
Move to head of NTH previous digested message." (interactive "p") (byte-code "È  Ǝ	!
 !))" [GNUSStartBufferWindow gnus-Article-buffer nth nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer gnus-Article-prev-digest 1] 5))

(defun gnus-Subject-first-unread-article nil "\
Select first unread article. Return non-nil if successfully selected." (interactive) (byte-code "`eb#  ! b!)" [begin nil t re-search-forward "^ [ 	]+[0-9]+:" gnus-Subject-display-article gnus-Subject-article-number message "No more unread articles"] 5))

(defun gnus-Subject-isearch-article nil "\
Do incremental search forward on current article." (interactive) (byte-code "  Ŏ	!!))" [GNUSStartBufferWindow gnus-Article-buffer nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer call-interactively isearch-forward] 5))

(defun gnus-Subject-search-article-forward (regexp) "\
Search for an article containing REGEXP forward.
gnus-Select-article-hook is not called during the search." (interactive (byte-code "
 QP!C" [gnus-last-search-regexp read-string "Search forward (regexp): " "(default " ") "] 5)) (byte-code "	\"  Ɖ 		\"/  Ɏ!!))3 	\"" [gnus-last-search-regexp regexp nil GNUSStartBufferWindow gnus-Article-buffer string-equal "" gnus-Subject-search-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer recenter 0 error "Search failed: \"%s\""] 8))

(defun gnus-Subject-search-article-backward (regexp) "\
Search for an article containing REGEXP backward.
gnus-Select-article-hook is not called during the search." (interactive (byte-code "
 QP!C" [gnus-last-search-regexp read-string "Search backward (regexp): " "(default " ") "] 5)) (byte-code "ň	\"  ǉ 		\"/  ʎ!!))3 	\"" [gnus-last-search-regexp regexp t GNUSStartBufferWindow gnus-Article-buffer nil string-equal "" gnus-Subject-search-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer recenter 0 error "Search failed: \"%s\""] 8))

(defun gnus-Subject-search-article (regexp &optional backward) "\
Search for an article containing REGEXP.
Optional argument BACKWARD means do search for backward.
gnus-Select-article-hook is not called during the search." (byte-code " K K  \" Ԏ	! 
$)))?O #! \" ڎ	! o dp eb
$)))C != -" [gnus-Select-article-hook nil gnus-Mark-article-hook re-search backward found last gnus-current-article GNUSStartBufferWindow gnus-Article-buffer regexp t gnus-last-article re-search-backward re-search-forward gnus-Subject-show-all-threads gnus-Subject-select-article message "Searching article: %d..." selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen funcall gnus-Subject-display-article gnus-Subject-search-subject ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) ""] 21))

(defun gnus-Subject-execute-command (field regexp command &optional backward) "\
If FIELD of article header matches REGEXP, execute COMMAND string.
If FIELD is an empty string (or nil), entire article body is searched for.
If optional (prefix) argument BACKWARD is non-nil, do backward instead." (interactive (byte-code "$)!!F" [completion-ignore-case t nil current-prefix-arg completing-read "Field name: " (("Number") ("Subject") ("From") ("Lines") ("Date") ("Id") ("Xref") ("References")) require-match read-string "Regexp: " read-key-sequence "Command: "] 7)) (byte-code " ɋ)" [completion-ignore-case t nil current-prefix-arg command field regexp backward gnus-Subject-show-all-threads ((byte-code "!\"	
!DDE$!\"" [command field regexp backward message "Executing %s..." key-description gnus-execute lambda nil call-interactively quote key-binding "Executing %s... done"] 11))] 2))

(defun gnus-Subject-beginning-of-article nil "\
Go to beginning of article body" (interactive) (byte-code "È  Ǝ	!  
  ))" [GNUSStartBufferWindow gnus-Article-buffer gnus-break-pages nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen beginning-of-buffer gnus-narrow-to-page] 7))

(defun gnus-Subject-end-of-article nil "\
Go to end of article body" (interactive) (byte-code "È  Ǝ	!  
  ))" [GNUSStartBufferWindow gnus-Article-buffer gnus-break-pages nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen end-of-buffer gnus-narrow-to-page] 7))

(defun gnus-Subject-goto-article (article &optional all-headers) "\
Read ARTICLE if exists.
Optional argument ALL-HEADERS means all headers are shown." (interactive (byte-code "\"$!C" [gnus-newsgroup-headers nil string-to-int completing-read "Article number: " mapcar (lambda (headers) (byte-code "H!C" [headers int-to-string 0] 3)) require-match] 7)) (byte-code "
! 
\"" [gnus-newsgroup-headers nil article all-headers gnus-Subject-goto-subject gnus-Subject-display-article] 4))

(defun gnus-Subject-goto-last-article nil "\
Go to last subject line." (interactive) (byte-code "	 !" [gnus-last-article nil gnus-Subject-goto-article] 2))

(defun gnus-Subject-show-article nil "\
Force to show current article." (interactive) (byte-code "??\"" [gnus-have-all-headers t nil gnus-Subject-select-article] 3))

(defun gnus-Subject-toggle-header (arg) "\
Show original header if pruned header currently shown, or vice versa.
With arg, show original header iff arg is positive." (interactive "P") (byte-code "? ? !V
\"*" [gnus-show-all-headers nil all-headers arg gnus-have-all-headers t prefix-numeric-value 0 gnus-Subject-select-article] 4))

(defun gnus-Subject-show-all-headers nil "\
Show original article header." (interactive) (byte-code "\"" [t nil gnus-Subject-select-article] 3))

(defun gnus-Subject-stop-page-breaking nil "\
Stop page breaking by linefeed temporary (Widen article buffer)." (interactive) (byte-code "  Ŏ	! ))" [GNUSStartBufferWindow gnus-Article-buffer nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen] 5))

(defun gnus-Subject-kill-same-subject-and-select (unmark) "\
Mark articles which has the same subject as read, and then select next.
If argument UNMARK is positive, remove any kinds of marks.
If argument UNMARK is negative, mark articles as unread instead." (interactive "P") (byte-code "Ĉ ! \"  \"	' ˂( #)" [unmark count t gnus-auto-select-same nil prefix-numeric-value gnus-Subject-mark-same-subject gnus-Subject-subject-string gnus-Subject-next-article message "%d articles are marked as %s" "unread" "read"] 9))

(defun gnus-Subject-kill-same-subject (unmark) "\
Mark articles which has the same subject as read. 
If argument UNMARK is positive, remove any kinds of marks.
If argument UNMARK is negative, mark articles as unread instead." (interactive "P") (byte-code "È ! \"? \"	' ˂( #)" [unmark count t nil prefix-numeric-value gnus-Subject-mark-same-subject gnus-Subject-subject-string gnus-Subject-next-subject 1 message "%d articles are marked as %s" "unread" "read"] 8))

(defun gnus-Subject-mark-same-subject (subject &optional unmark) "\
Mark articles with same SUBJECT as read, and return marked number.
If optional argument UNMARK is positive, remove any kinds of marks.
If optional argument UNMARK is negative, mark articles as unread instead." (byte-code "	? \" 	V \"  ' \"N 	?6 \"E 	VC \"E  T ))" [count unmark nil t subject 1 gnus-Subject-mark-as-read "K" 0 gnus-Subject-mark-as-unread gnus-Subject-search-forward] 10))

(defun gnus-Subject-mark-as-unread-forward (count) "\
Mark current article as unread, and then go forward.
Argument COUNT specifies number of articles marked as unread." (interactive "p") (byte-code "V \"\"S " [count nil 0 gnus-Subject-mark-as-unread gnus-Subject-next-subject 1] 5))

(defun gnus-Subject-mark-as-unread-backward (count) "\
Mark current article as unread, and then go backward.
Argument COUNT specifies number of articles marked as unread." (interactive "p") (byte-code "V \"\"S " [count nil 0 gnus-Subject-mark-as-unread gnus-Subject-prev-subject 1] 5))

(defun gnus-Subject-mark-as-unread (&optional article clear-mark) "\
Mark current article as unread.
Optional 1st argument ARTICLE specifies article number to be marked as unread.
Optional 2nd argument CLEAR-MARK remove any kinds of mark." (byte-code "q   \"=  !4  !2 ͂3 c+)" [gnus-Subject-buffer buffer-read-only nil current article clear-mark gnus-Subject-show-thread gnus-Subject-article-number gnus-mark-article-as-unread gnus-Subject-goto-subject beginning-of-line delete-char 1 " " "-"] 7))

(defun gnus-Subject-mark-as-read-forward (count) "\
Mark current article as read, and then go forward.
Argument COUNT specifies number of articles marked as read" (interactive "p") (byte-code "V  \"S " [count nil 0 gnus-Subject-mark-as-read gnus-Subject-next-subject 1 unread-only] 5))

(defun gnus-Subject-mark-as-read-backward (count) "\
Mark current article as read, and then go backward.
Argument COUNT specifies number of articles marked as read" (interactive "p") (byte-code "V  \"S " [count nil 0 gnus-Subject-mark-as-read gnus-Subject-prev-subject 1 unread-only] 5))

(defun gnus-Subject-mark-as-read (&optional article mark) "\
Mark current article as read.
Optional 1st argument ARTICLE specifies article number to be marked as read.
Optional 2nd argument MARK specifies a string inserted at beginning of line.
Any kind of string (length 1) except for a space and `-' is ok." (byte-code "q    !=% !1  !c,)" [gnus-Subject-buffer buffer-read-only nil mark current article gnus-Subject-show-thread "D" gnus-Subject-article-number gnus-mark-article-as-read gnus-Subject-goto-subject beginning-of-line delete-char 1] 7))

(defun gnus-Subject-clear-mark-forward (count) "\
Remove current article's mark, and go forward.
Argument COUNT specifies number of articles unmarked" (interactive "p") (byte-code "V \"\"S " [count nil t 0 gnus-Subject-mark-as-unread gnus-Subject-next-subject 1] 5))

(defun gnus-Subject-clear-mark-backward (count) "\
Remove current article's mark, and go backward.
Argument COUNT specifies number of articles unmarked" (interactive "p") (byte-code "V \"\"S " [count nil t 0 gnus-Subject-mark-as-unread gnus-Subject-prev-subject 1] 5))

(defun gnus-Subject-delete-marked-as-read nil "\
Delete lines which is marked as read." (interactive) (byte-code "' eb!)m !#  #)* !" [gnus-newsgroup-unreads buffer-read-only nil t delete-non-matching-lines "^[ ---]" gnus-Subject-prev-subject 1 beginning-of-line search-forward ":" message "All articles are marked as read"] 7))

(defun gnus-Subject-delete-marked-with (marks) "\
Delete lines which are marked with MARKS (e.g. \"DK\")." (interactive "sMarks: ") (byte-code "eb
Q!) !) m! !)  #)" [buffer-read-only nil marks t delete-matching-lines "^[" "]" zerop buffer-size gnus-Subject-prev-subject 1 beginning-of-line search-forward ":"] 9))

(defun gnus-Subject-toggle-threads (arg) "\
Toggle showing conversation threads.
With arg, turn showing conversation threads on iff arg is positive." (interactive "P") (byte-code "È 
? 	? 
!V !)" [current gnus-show-threads arg nil gnus-Subject-article-number prefix-numeric-value 0 gnus-Subject-prepare gnus-Subject-goto-subject] 5))

(defun gnus-Subject-show-all-threads nil "\
Show all thread subtrees." (interactive) (byte-code " ed%))" [gnus-show-threads buffer-read-only nil t subst-char-in-region 13 10] 6))

(defun gnus-Subject-show-thread nil "\
Show thread subtrees." (interactive) (byte-code "  ` `%))" [gnus-show-threads buffer-read-only nil t subst-char-in-region beginning-of-line end-of-line 13 10] 8))

(defun gnus-Subject-hide-all-threads nil "\
Hide all thread subtrees." (interactive) (byte-code "( eb#i  & iY\"   ))" [gnus-show-threads nil t level search-forward ":" gnus-Subject-hide-thread gnus-Subject-search-forward] 6))

(defun gnus-Subject-hide-thread nil "\
Hide thread subtrees." (interactive) (byte-code "=  #``i \" iW3 iW/ ` %,)" [gnus-show-threads nil t buffer-read-only init last level beginning-of-line search-forward ":" gnus-Subject-search-forward subst-char-in-region 10 13] 9))

(defun gnus-Subject-next-thread (n) "\
Go to the same level next thread.
Argument N specifies the number of threads." (interactive "p") (byte-code " #``iV   iX4 iU0 `S 
U?b+" [nil t init last level n beginning-of-line search-forward ":" 0 gnus-Subject-search-forward] 6))

(defun gnus-Subject-prev-thread (n) "\
Go to the same level previous thread.
Argument N specifies the number of threads." (interactive "p") (byte-code " #``iV   iX4 iU0 `S 
U?b+" [nil t init last level n beginning-of-line search-forward ":" 0 gnus-Subject-search-backward] 6))

(defun gnus-Subject-down-thread (d) "\
Go downward current thread.
Argument D specifies the depth goes down." (interactive "p") (byte-code " #`iV   iX6 iW2 `iS 
b*" [nil t last level d beginning-of-line search-forward ":" 0 gnus-Subject-search-forward] 6))

(defun gnus-Subject-up-thread (d) "\
Go upward current thread.
Argument D specifies the depth goes up." (interactive "p") (byte-code " #`iV  0 iV, `iS 
b*" [nil t last level d beginning-of-line search-forward ":" 0 gnus-Subject-search-backward] 6))

(defun gnus-Subject-kill-thread (unmark) "\
Mark articles under current thread as read.
If argument UNMARK is positive, remove any kinds of marks.
If argument UNMARK is negative, mark articles as unread instead." (interactive "P") (byte-code " ! #i?$ \"3 V1 \"3   < iW^ ?K \"Z VX \"Z  4 ))?l l  ?v \"" [unmark nil t level gnus-thread-hide-killed prefix-numeric-value beginning-of-line search-forward ":" gnus-Subject-mark-as-read "K" 0 gnus-Subject-mark-as-unread gnus-Subject-search-forward gnus-Subject-hide-thread gnus-Subject-next-subject 1] 14))

(defun gnus-Subject-toggle-truncation (arg) "\
Toggle truncation of subject lines.
With arg, turn line truncation on iff arg is positive." (interactive "P") (byte-code "	? ? 	!V " [truncate-lines arg nil prefix-numeric-value 0 redraw-display] 3))

(defun gnus-Subject-sort-by-number (reverse) "\
Sort subject display buffer by article number.
Argument REVERSE means reverse order." (interactive "P") (byte-code "\"" [reverse nil gnus-Subject-sort-subjects (lambda (a b) (byte-code "H	HW" [a b 0] 3))] 3))

(defun gnus-Subject-sort-by-author (reverse) "\
Sort subject display buffer by author name alphabetically.
If case-fold-search is non-nil, case of letters is ignored.
Argument REVERSE means reverse order." (interactive "P") (byte-code "\"" [reverse nil gnus-Subject-sort-subjects (lambda (a b) (byte-code "H	H\"" [a b gnus-string-lessp 2] 4))] 3))

(defun gnus-Subject-sort-by-subject (reverse) "\
Sort subject display buffer by subject alphabetically. `Re:'s are ignored.
If case-fold-search is non-nil, case of letters is ignored.
Argument REVERSE means reverse order." (interactive "P") (byte-code "\"" [reverse nil gnus-Subject-sort-subjects (lambda (a b) (byte-code "H\"	H\"\"" [a b gnus-string-lessp gnus-simplify-subject 1 re-only] 6))] 3))

(defun gnus-Subject-sort-by-date (reverse) "\
Sort subject display buffer by posted date.
Argument REVERSE means reverse order." (interactive "P") (byte-code "\"" [reverse nil gnus-Subject-sort-subjects (lambda (a b) (byte-code "H	H\"" [a b gnus-date-lessp 5] 4))] 3))

(defun gnus-Subject-sort-subjects (predicate &optional reverse) "\
Sort subject display buffer by PREDICATE.
Optional argument REVERSE means reverse order." (byte-code " 	
\" !)" [current predicate reverse gnus-Subject-article-number gnus-sort-headers gnus-Subject-prepare gnus-Subject-goto-subject] 5))

(defun gnus-Subject-reselect-current-group (show-all) "\
Once exit and then reselect the current newsgroup.
Prefix argument SHOW-ALL means to select all articles." (interactive "P") (byte-code "Ĉ !
!\"!)" [current-subject t gnus-newsgroup-name show-all nil gnus-Subject-article-number gnus-Subject-exit gnus-Subject-jump-to-group gnus-Group-read-group gnus-Subject-goto-subject] 6))

(defun gnus-Subject-caesar-message (rotnum) "\
Caesar rotates all letters of current message by 13/47 places.
With prefix arg, specifies the number of places to rotate each letter forward.
Caesar rotates Japanese letters by 47 places in any case." (interactive "P") (byte-code "Ĉ   Ȏ	! !`!
b!))))" [GNUSStartBufferWindow gnus-Article-buffer last rotnum nil gnus-Subject-select-article gnus-overload-functions selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen move-to-window-line 0 news-caesar-buffer-body recenter] 9))

(defun gnus-Subject-rmail-digest nil "\
Run RMAIL on current digest article.
gnus-Select-digest-hook will be called with no arguments, if that
value is non-nil. It is possible to modify the article so that Rmail
can work with it.
gnus-Rmail-digest-hook will be called with no arguments, if that value
is non-nil. The hook is intended to customize Rmail mode." (interactive) (byte-code "ƈ !	!
qp!Ɖ !! eb    ׏+" [artbuf gnus-Article-buffer digbuf gnus-Digest-buffer mail-header-separator buffer-read-only nil gnus-Subject-select-article require rmail get-buffer-create "" buffer-flush-undo erase-buffer insert-buffer-substring run-hooks gnus-Select-digest-hook gnus-convert-article-to-rmail rmail-insert-rmail-file-header rmail-mode rmail-set-message-counters rmail-show-message (byte-code "  ԉ
HP!C
$	

$!!!!o !! !!!* !!!!)!!!!" [buffer-file-name mode-line-buffer-identification gnus-current-headers write-file-hooks rmail-last-rmail-file gnus-rmail-save-name gnus-newsgroup-name gnus-newsgroup-last-rmail rmail-last-file gnus-mail-save-name gnus-newsgroup-last-mail rmail-summary-buffer gnus-Digest-summary-buffer gnus-Group-buffer gnus-digest-show-summary gnus-Subject-buffer gnus-Article-buffer gnus-Digest-buffer undigestify-rmail-message rmail-expunge "GNUS Digest" "Digest: " 1 make-local-variable (lambda nil (byte-code "!!ć" [nil set-buffer-modified-p message "(No changes need to be saved)" no-need-to-write-this-buffer] 3)) funcall get-buffer-create run-hooks gnus-Rmail-digest-hook gnus-configure-windows (1 0 0) pop-to-buffer SelectArticle rmail-summary message substitute-command-keys "Type \\[rmail-summary-quit] to return to GNUS" ExpandSubject "Type \\[rmail-quit] to return to GNUS" bury-buffer] 24) ((error (byte-code "!	! !" [nil digbuf set-buffer-modified-p kill-buffer ding message "Article is not a digest"] 5)))] 15))

(defun gnus-Subject-save-article nil "\
Save this article using default saver function.
Variable `gnus-default-article-saver' specifies the saver function." (interactive) (byte-code "??\"	 	! !" [gnus-save-all-headers gnus-default-article-saver nil gnus-Subject-select-article call-interactively error "No default saver is defined."] 4))

(defun gnus-Subject-save-in-rmail (&optional filename) "\
Append this article to Rmail file.
Optional argument FILENAME specifies file name.
Directory to save to is default to `gnus-article-save-directory' which
is initialized from the SAVEDIR environment variable." (interactive) (byte-code "Ɉ??\" ̎
! $4 !Q!#!!!)))))" [gnus-save-all-headers GNUSStartBufferWindow gnus-Article-buffer default-name gnus-rmail-save-name gnus-newsgroup-name gnus-current-headers gnus-newsgroup-last-rmail filename nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen funcall read-file-name "Save article in Rmail file: (default " file-name-nondirectory ") " file-name-directory gnus-make-directory gnus-output-to-rmail] 13))

(defun gnus-Subject-save-in-mail (&optional filename) "\
Append this article to Unix mail file.
Optional argument FILENAME specifies file name.
Directory to save to is default to `gnus-article-save-directory' which
is initialized from the SAVEDIR environment variable." (interactive) (byte-code "Ɉ??\" ̎
! $4 !Q!#!!!)))))" [gnus-save-all-headers GNUSStartBufferWindow gnus-Article-buffer default-name gnus-mail-save-name gnus-newsgroup-name gnus-current-headers gnus-newsgroup-last-mail filename nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen funcall read-file-name "Save article in Unix mail file: (default " file-name-nondirectory ") " file-name-directory gnus-make-directory rmail-output] 13))

(defun gnus-Subject-save-in-file (&optional filename) "\
Append this article to file.
Optional argument FILENAME specifies file name.
Directory to save to is default to `gnus-article-save-directory' which
is initialized from the SAVEDIR environment variable." (interactive) (byte-code "Ɉ??\" ̎
! $4 !Q!#!!!)))))" [gnus-save-all-headers GNUSStartBufferWindow gnus-Article-buffer default-name gnus-file-save-name gnus-newsgroup-name gnus-current-headers gnus-newsgroup-last-file filename nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen funcall read-file-name "Save article in file: (default " file-name-nondirectory ") " file-name-directory gnus-make-directory gnus-output-to-file] 13))

(defun gnus-Subject-save-in-folder (&optional folder) "\
Save this article to MH folder (using `rcvstore' in MH library).
Optional argument FOLDER specifies folder name." (interactive) (byte-code "ˈ??\" Ύ
!  ) $#!	׎ed
\"	&)*)))" [gnus-save-all-headers GNUSStartBufferWindow gnus-Article-buffer folder gnus-folder-save-name gnus-newsgroup-name gnus-current-headers gnus-newsgroup-last-folder t errbuf mh-lib nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen mh-find-path mh-prompt-for-folder "Save article in" funcall get-buffer-create " *GNUS rcvstore*" ((byte-code "q ! 	\"  \"!	" [errbuf folder gnus-newsgroup-last-folder zerop buffer-size message "Article saved in folder: %s" "%s" buffer-string kill-buffer] 8)) call-process-region expand-file-name "rcvstore"] 17))

(defun gnus-Subject-pipe-output nil "\
Pipe this article to subprocess." (interactive) (byte-code "Ĉ  ǎ	! \"
\"! ed
$
))))" [GNUSStartBufferWindow gnus-Article-buffer command gnus-last-shell-command nil gnus-Subject-select-article selected-window ((byte-code "!" [GNUSStartBufferWindow select-window] 2)) pop-to-buffer widen read-string "Shell command on article: " string-equal "" shell-command-on-region] 11))

(defun gnus-Subject-catch-up (all &optional quietly) "\
Mark all articles not marked as unread in this newsgroup as read.
If prefix argument ALL is non-nil, all articles are marked as read." (interactive "P") (byte-code "ň 	 ǂ !8 	? \"! 
7 
@\"
A% )" [quietly all unmarked gnus-newsgroup-unreads gnus-newsgroup-marked nil y-or-n-p "Do you really want to mark everything as read? " "Delete all articles not marked as unread? " gnus-set-difference message "" gnus-Subject-show-all-threads gnus-Subject-mark-as-read "C"] 8))

(defun gnus-Subject-catch-up-all (&optional quietly) "\
Mark all articles in this newsgroup as read." (interactive) (byte-code "	\"" [t quietly nil gnus-Subject-catch-up] 3))

(defun gnus-Subject-catch-up-and-exit (all &optional quietly) "\
Mark all articles not marked as unread in this newsgroup as read, then exit.
If prefix argument ALL is non-nil, all articles are marked as read." (interactive "P") (byte-code "ƈ 	 ɂ !C 	? \"!
3 
@!
A\" =@ !B  )" [quietly all unmarked gnus-newsgroup-unreads gnus-newsgroup-marked gnus-auto-select-next nil t y-or-n-p "Do you really want to mark everything as read? " "Delete all articles not marked as unread? " gnus-set-difference message "" gnus-mark-article-as-read gnus-Subject-next-group gnus-Subject-exit] 7))

(defun gnus-Subject-catch-up-all-and-exit (&optional quietly) "\
Mark all articles in this newsgroup as read, and then exit." (interactive) (byte-code "	\"" [t quietly nil gnus-Subject-catch-up-and-exit] 3))

(defun gnus-Subject-edit-global-kill nil "\
Edit a global KILL file." (interactive) (byte-code " !!!" [gnus-current-kill-article nil gnus-Subject-article-number gnus-Kill-file-edit-file message substitute-command-keys "Editing a global KILL file (Type \\[gnus-Kill-file-exit] to exit)"] 5))

(defun gnus-Subject-edit-local-kill nil "\
Edit a local KILL file applied to the current newsgroup." (interactive) (byte-code " 	!!!" [gnus-current-kill-article gnus-newsgroup-name nil gnus-Subject-article-number gnus-Kill-file-edit-file message substitute-command-keys "Editing a local KILL file (Type \\[gnus-Kill-file-exit] to exit)"] 5))

(defun gnus-Subject-exit (&optional temporary) "\
Exit reading current newsgroup, and then return to group selection mode.
gnus-Exit-group-hook is called with no arguments if that value is non-nil." (interactive) (byte-code "
!\"#+ 
=$	qB @\"A0 !-!!
[ { !f !!r !!	!" [updated nil gnus-newsgroup-headers gnus-newsgroup-unreads gnus-newsgroup-unselected gnus-newsgroup-marked gnus-newsgroup-name gnus-use-cross-reference t gnus-Group-buffer temporary gnus-Subject-buffer gnus-Article-buffer run-hooks gnus-Exit-group-hook gnus-update-unread-articles append gnus-mark-as-read-by-xref gnus-Group-update-group gnus-Group-jump-to-group gnus-Group-next-unread-group 1 get-buffer bury-buffer gnus-configure-windows ExitNewsgroup pop-to-buffer] 15))

(defun gnus-Subject-quit nil "\
Quit reading current newsgroup without updating read article info." (interactive) (byte-code "Ĉ!/ !! !	! 	!!
!!!" [gnus-Subject-buffer gnus-Article-buffer gnus-Group-buffer gnus-newsgroup-name nil y-or-n-p "Do you really wanna quit reading this group? " message "" get-buffer bury-buffer gnus-configure-windows ExitNewsgroup pop-to-buffer gnus-Group-jump-to-group gnus-Group-next-group 1] 11))

(defun gnus-Subject-describe-briefly nil "\
Describe Subject mode commands briefly." (interactive) (byte-code "!!!!!!&!" [nil message concat substitute-command-keys "\\[gnus-Subject-next-page]:Select  " "\\[gnus-Subject-next-unread-article]:Forward  " "\\[gnus-Subject-prev-unread-article]:Backward  " "\\[gnus-Subject-exit]:Exit  " "\\[gnus-Info-find-node]:Run Info  " "\\[gnus-Subject-describe-briefly]:This help"] 14))

(if gnus-Article-mode-map nil (setq gnus-Article-mode-map (make-keymap)) (suppress-keymap gnus-Article-mode-map) (define-key gnus-Article-mode-map " " (quote gnus-Article-next-page)) (define-key gnus-Article-mode-map "" (quote gnus-Article-prev-page)) (define-key gnus-Article-mode-map "r" (quote gnus-Article-refer-article)) (define-key gnus-Article-mode-map "o" (quote gnus-Article-pop-article)) (define-key gnus-Article-mode-map "h" (quote gnus-Article-show-subjects)) (define-key gnus-Article-mode-map "s" (quote gnus-Article-show-subjects)) (define-key gnus-Article-mode-map "?" (quote gnus-Article-describe-briefly)) (define-key gnus-Article-mode-map "	" (quote gnus-Info-find-node)))

(defun gnus-Article-mode nil "\
Major mode for browsing through an article.
All normal editing commands are turned off.
Instead, these commands are available:
\\{gnus-Article-mode-map}

Various hooks for customization:
 gnus-Article-mode-hook
    Entry to this mode calls the value with no arguments, if that
    value is non-nil.

 gnus-Article-prepare-hook
    Called with no arguments after an article is prepared for reading,
    if that value is non-nil." (interactive) (byte-code "È ! Ή  !<  !AB!Éщ҉ !!!Չ	p!ˉ
!" [mode-line-modified mode-line-format global-mode-string nil major-mode mode-name gnus-Article-mode-map page-delimiter gnus-page-delimiter mail-header-separator buffer-read-only t kill-all-local-variables boundp "--- " default-value make-local-variable gnus-Article-mode "Article" gnus-Article-set-mode-line use-local-map "" buffer-flush-undo run-hooks gnus-Article-mode-hook] 12))

(defun gnus-Article-setup-buffer nil "\
Initialize Article mode buffer." (byte-code "! !q )" [gnus-Article-buffer get-buffer get-buffer-create gnus-Article-mode] 4))

(defun gnus-Article-prepare (article &optional all-headers) "\
Prepare ARTICLE in Article mode buffer.
If optional argument ALL-HEADERS is non-nil, all headers are inserted." (byte-code "q !b ! !( =?F 	!
!!Q  eb\\   r !k ! !))" [gnus-Article-buffer buffer-read-only nil article nntp-server-buffer gnus-have-all-headers all-headers gnus-show-all-headers gnus-current-article gnus-last-article gnus-current-headers gnus-current-history gnus-break-pages erase-buffer gnus-request-article insert-buffer-substring numberp gnus-get-header-by-number run-hooks gnus-Mark-article-hook gnus-Article-prepare-hook gnus-Article-delete-headers gnus-narrow-to-page gnus-Article-set-mode-line gnus-Subject-mark-as-read ding message "No such article (may be canceled)"] 15))

(defun gnus-Article-show-all-headers nil "\
Show all article headers in Article mode buffer." (byte-code " 	\"" [gnus-have-all-headers gnus-current-article t gnus-Article-prepare] 3))

(defun gnus-Article-set-mode-line nil "\
Set Article mode line string." (byte-code "	G	
\"GZG
\"GZ!\" !) ΂; !6 \"; #$D*!" [unmarked gnus-newsgroup-unreads gnus-newsgroup-marked unselected gnus-newsgroup-unselected mode-line-buffer-identification gnus-newsgroup-name gnus-current-article t gnus-intersection 17 format "GNUS: %s{%d} %s" zerop "      " "%d more" "%d(+%d) more" set-buffer-modified-p] 15))

(defun gnus-Article-delete-headers nil "\
Delete unnecessary headers." (byte-code "ebe#`\"eb	;3 	#3  `!!`\" ))" [nil gnus-ignored-headers t narrow-to-region search-forward "

" move re-search-forward beginning-of-line delete-region "
[^ 	]" forward-char -1] 10))

(defun gnus-Article-next-page (lines) "\
Show next page of current article.
If end of article, return non-nil. Otherwise return nil.
Argument LINES specifies lines to be scrolled up." (interactive "P") (byte-code "!   m)4 ?%  !m)), 1 !: ̏" [gnus-break-pages t nil move-to-window-line -1 end-of-line pos-visible-in-window-p widen forward-line 1 gnus-narrow-to-page (byte-code "!" [lines scroll-up] 2) ((end-of-buffer (byte-code "db" [] 1)))] 9))

(defun gnus-Article-prev-page (lines) "\
Show previous page of current article.
Argument LINES specifies lines to be scrolled down." (interactive "P") (byte-code "! o  o)?% !db!( 	!" [gnus-break-pages lines nil move-to-window-line 0 widen gnus-narrow-to-page -1 recenter scroll-down] 6))

(defun gnus-Article-next-digest (nth) "\
Move to head of NTH next digested message.
Set mark at end of digested message." (byte-code "  V 	# S 	#O ` 	#< !!> db b !)R !" [nth gnus-digest-separator nil t begin widen end-of-line 1 re-search-forward move search-backward "

" forward-line push-mark beginning-of-line recenter message "End of message"] 13))

(defun gnus-Article-prev-digest (nth) "\
Move to head of NTH previous digested message." (byte-code "  V 	# S 	#L ` 	#< !!> db b!)R eb!" [nth gnus-digest-separator nil t begin widen beginning-of-line 1 re-search-backward move end-of-line re-search-forward search-backward "

" forward-line push-mark recenter message "Top of message"] 12))

(defun gnus-Article-refer-article nil "\
Read article specified by message-id around point." (interactive) (byte-code "ċ" [nil t message-id gnus-Subject-buffer ((byte-code "##\" !!\"q
!)% !)" [nil t message-id gnus-Subject-buffer re-search-forward ">" re-search-backward "\\(<[^<> 	
]+>\\)" buffer-substring match-beginning 1 match-end gnus-Subject-refer-article error "No references around point"] 8))] 1))

(defun gnus-Article-pop-article nil "\
Pop up article history." (interactive) (byte-code "" [gnus-Subject-buffer nil ((byte-code "q!" [gnus-Subject-buffer nil gnus-Subject-refer-article] 2))] 1))

(defun gnus-Article-show-subjects nil "\
Reconfigure windows to show headers." (interactive) (byte-code "!!	!" [gnus-Subject-buffer gnus-current-article nil gnus-configure-windows SelectArticle pop-to-buffer gnus-Subject-goto-subject] 4))

(defun gnus-Article-describe-briefly nil "\
Describe Article mode commands briefly." (interactive) (byte-code "!!!!!%!" [nil message concat substitute-command-keys "\\[gnus-Article-next-page]:Next page  " "\\[gnus-Article-prev-page]:Prev page  " "\\[gnus-Article-show-subjects]:Show headers  " "\\[gnus-Info-find-node]:Run Info  " "\\[gnus-Article-describe-briefly]:This help"] 12))

(if gnus-Kill-file-mode-map nil (setq gnus-Kill-file-mode-map (copy-keymap emacs-lisp-mode-map)) (define-key gnus-Kill-file-mode-map "" (quote gnus-Kill-file-kill-by-subject)) (define-key gnus-Kill-file-mode-map "" (quote gnus-Kill-file-kill-by-author)) (define-key gnus-Kill-file-mode-map "" (quote gnus-Kill-file-apply-buffer)) (define-key gnus-Kill-file-mode-map "" (quote gnus-Kill-file-apply-last-sexp)) (define-key gnus-Kill-file-mode-map "" (quote gnus-Kill-file-exit)) (define-key gnus-Kill-file-mode-map "	" (quote gnus-Info-find-node)))

(defun gnus-Kill-file-mode nil "\
Major mode for editing KILL file.

In addition to Emacs-Lisp Mode, the following commands are available:

\\[gnus-Kill-file-kill-by-subject]	Insert KILL command for current subject.
\\[gnus-Kill-file-kill-by-author]	Insert KILL command for current author.
\\[gnus-Kill-file-apply-buffer]	Apply current buffer to selected newsgroup.
\\[gnus-Kill-file-apply-last-sexp]	Apply sexp before point to selected newsgroup.
\\[gnus-Kill-file-exit]	Save file and exit editing KILL file.
\\[gnus-Info-find-node]	Read Info about KILL file.

  A KILL file contains lisp expressions to be applied to a selected
newsgroup. The purpose is to mark articles as read on the basis of
some set of regexps. A global KILL file is applied to every newsgroup,
and a local KILL file is applied to a specified newsgroup. Since a
global KILL file is applied to every newsgroup, for better performance
use a local one.

  A KILL file can contain any kind of Emacs lisp expressions expected
to be evaluated in the Subject buffer. Writing lisp programs for this
purpose is not so easy because the internal working of GNUS must be
well-known. For this reason, GNUS provides a general function which
does this easily for non-Lisp programmers.

  The `gnus-kill' function executes commands available in Subject Mode
by their key sequences. `gnus-kill' should be called with FIELD,
REGEXP and optional COMMAND and ALL. FIELD is a string representing
the header field or an empty string. If FIELD is an empty string, the
entire article body is searched for. REGEXP is a string which is
compared with FIELD value. COMMAND is a string representing a valid
key sequence in Subject Mode or Lisp expression. COMMAND is default to
'(gnus-Subject-mark-as-read nil \"X\"). Make sure that COMMAND is
executed in the Subject buffer.  If the second optional argument ALL
is non-nil, the COMMAND is applied to articles which are already
marked as read or unread.  Articles which are marked are skipped over
by default.

  For example, if you want to mark articles of which subjects contain
the string `AI' as read, a possible KILL file may look like:

	(gnus-kill \"Subject\" \"AI\")

  If you want to mark articles with `D' instead of `X', you can use
the following expression:

	(gnus-kill \"Subject\" \"AI\" \"d\")

In this example it is assumed that the command
`gnus-Subject-mark-as-read-forward' is assigned to `d' in Subject Mode.

  It is possible to delete unnecessary headers which are marked with
`X' in a KILL file as follows:

	(gnus-expunge \"X\")

  If the Subject buffer is empty after applying KILL files, GNUS will
exit the selected newsgroup normally.  If headers which are marked
with `D' are deleted in a KILL file, it is impossible to read articles
which are marked as read in the previous GNUS sessions.  Marks other
than `D' should be used for articles which should really be deleted.

Entry to this mode calls emacs-lisp-mode-hook and
gnus-Kill-file-mode-hook with no arguments, if that value is non-nil." (interactive) (byte-code "Ĉ !	!ȉɉ!\"" [gnus-Kill-file-mode-map emacs-lisp-mode-syntax-table major-mode mode-name nil kill-all-local-variables use-local-map set-syntax-table gnus-Kill-file-mode "KILL-File" lisp-mode-variables run-hooks emacs-lisp-mode-hook gnus-Kill-file-mode-hook] 7))

(defun gnus-Kill-file-edit-file (newsgroup) "\
Begin editing a KILL file of NEWSGROUP.
If NEWSGROUP is nil, the global KILL file is selected." (interactive "sNewsgroup: ") (byte-code "Ɉ	!!!! !!  !!/ !h =K !!!!)h =e !!!!h !) )" [file newsgroup gnus-winconf-kill-file buffer major-mode gnus-Group-buffer gnus-Subject-buffer gnus-Article-buffer t nil gnus-newsgroup-kill-file gnus-make-directory file-name-directory get-file-buffer get-buffer-window current-window-configuration find-file-noselect pop-to-buffer gnus-Group-mode gnus-configure-windows (1 0 0) (1 1 0) gnus-Subject-mode SelectArticle bury-buffer switch-to-buffer find-file-other-window gnus-Kill-file-mode] 21))

(defun gnus-Kill-file-kill-by-subject nil "\
Insert KILL command for current subject." (interactive) (byte-code " 	\"H! !\"c" [gnus-current-kill-article gnus-newsgroup-headers nil format "(gnus-kill \"Subject\" %s)
" prin1-to-string regexp-quote gnus-find-header-by-number 1 ""] 7))

(defun gnus-Kill-file-kill-by-author nil "\
Insert KILL command for current author." (interactive) (byte-code " 	\"H! !\"c" [gnus-current-kill-article gnus-newsgroup-headers nil format "(gnus-kill \"From\" %s)
" prin1-to-string regexp-quote gnus-find-header-by-number 2 ""] 7))

(defun gnus-Kill-file-apply-buffer nil "\
Apply current buffer to current newsgroup." (interactive) (byte-code "È	 	!  Qȋ))   !" [gnus-current-kill-article gnus-Subject-buffer string nil get-buffer "(progn 
" buffer-string "
)" ((byte-code "!	!@!" [gnus-Subject-buffer string pop-to-buffer eval read-from-string] 4)) ding message "No newsgroup is selected."] 5))

(defun gnus-Kill-file-apply-last-sexp nil "\
Apply sexp before point in current buffer to current newsgroup." (interactive) (byte-code "È	 	! Ŋ!`)`\"ȋ))%  !" [gnus-current-kill-article gnus-Subject-buffer string nil get-buffer buffer-substring forward-sexp -1 ((byte-code "!	!@!" [gnus-Subject-buffer string pop-to-buffer eval read-from-string] 4)) ding message "No newsgroup is selected."] 6))

(defun gnus-Kill-file-exit nil "\
Save a KILL file, then return to the previous buffer." (interactive) (byte-code "È p	! 	!!!
 
!É!)" [killbuf gnus-Article-buffer gnus-winconf-kill-file nil save-buffer get-buffer bury-buffer delete-windows-on set-window-configuration kill-buffer] 8))

(defun gnus-batch-kill nil "\
Run batched KILL.
Usage: emacs -batch -l gnus -f gnus-batch-kill NEWSGROUP ..." (byte-code "? !K\"\"!@A	
 ! @@@8A 	\"8!? o 	\"p ΅ ? 	\"? 	#p!= !; q .	" [noninteractive group nil subscribed newsrc yes-and-no command-line-args-left yes no gnus-novice-user gnus-large-newsgroup nntp-large-newsgroup gnus-newsrc-assoc gnus-unread-hashtb t gnus-Subject-buffer gnus-Group-buffer error "gnus-batch-kill is to be used only with -batch" gnus-parse-n-options apply concat mapcar (lambda (g) (byte-code "P" [g " "] 2)) gnus copy-sequence 1 zerop abbrev-expansion string-match gnus-Subject-read-group get-buffer gnus-Subject-exit gnus-Group-exit] 16))

(defun gnus-Numeric-save-name (newsgroup headers &optional last-file) "\
Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
If variable `gnus-use-long-file-name' is nil, it is ~/News/News.group/num.
Otherwise, it is like ~/News/news/group/num." (byte-code "	 
! 
!H!Q \"1 !!\"1 !\"8 = = )" [default gnus-use-long-file-name newsgroup headers gnus-article-save-directory last-file expand-file-name capitalize-newsgroup gnus-newsgroup-directory-form "/" int-to-string 0 "~/News" string-equal file-name-directory string-match "^[0-9]+$" file-name-nondirectory] 11))

(defun gnus-numeric-save-name (newsgroup headers &optional last-file) "\
Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
If variable `gnus-use-long-file-name' is nil, it is ~/News/news.group/num.
Otherwise, it is like ~/News/news/group/num." (byte-code "		 
 
!H!Q \"/ !!\"/ !\"6 ; ; )" [default gnus-use-long-file-name newsgroup headers gnus-article-save-directory last-file expand-file-name gnus-newsgroup-directory-form "/" int-to-string 0 "~/News" string-equal file-name-directory string-match "^[0-9]+$" file-name-nondirectory] 10))

(defun gnus-Plain-save-name (newsgroup headers &optional last-file) "\
Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
If variable `gnus-use-long-file-name' is nil, it is ~/News/News.group.
Otherwise, it is like ~/News/news/group/news." (byte-code " 	 
! 
!P \"" [last-file gnus-use-long-file-name newsgroup gnus-article-save-directory expand-file-name capitalize-newsgroup gnus-newsgroup-directory-form "/news" "~/News"] 5))

(defun gnus-plain-save-name (newsgroup headers &optional last-file) "\
Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
If variable `gnus-use-long-file-name' is nil, it is ~/News/news.group.
Otherwise, it is like ~/News/news/group/news." (byte-code " 	 
 
!P \"" [last-file gnus-use-long-file-name newsgroup gnus-article-save-directory expand-file-name gnus-newsgroup-directory-form "/news" "~/News"] 4))

(defun gnus-Folder-save-name (newsgroup headers &optional last-folder) "\
Generate folder name from NEWSGROUP, HEADERS, and optional LAST-FOLDER.
If variable `gnus-use-long-file-name' is nil, it is +News.group.
Otherwise, it is like +news/group." (byte-code " 	 
! 
!P" [last-folder gnus-use-long-file-name newsgroup "+" capitalize-newsgroup gnus-newsgroup-directory-form] 4))

(defun gnus-folder-save-name (newsgroup headers &optional last-folder) "\
Generate folder name from NEWSGROUP, HEADERS, and optional LAST-FOLDER.
If variable `gnus-use-long-file-name' is nil, it is +news.group.
Otherwise, it is like +news/group." (byte-code " 	 
 
!P" [last-folder gnus-use-long-file-name newsgroup "+" gnus-newsgroup-directory-form] 3))

(defun gnus-apply-kill-file nil "\
Apply KILL file to the current newsgroup." (byte-code "!$
!$" [nil t gnus-newsgroup-name load gnus-newsgroup-kill-file] 8))

(defun gnus-Newsgroup-kill-file (newsgroup) "\
Return the name of a KILL file of NEWSGROUP.
If NEWSGROUP is nil, return the global KILL file instead." (byte-code "?	 \" 	
 \"8 + !	Q
' \"8 !	Q
7 \"" [newsgroup gnus-kill-file-name gnus-article-save-directory gnus-use-long-file-name t string-equal "" expand-file-name "~/News" capitalize-newsgroup "." gnus-newsgroup-directory-form "/"] 9))

(defun gnus-newsgroup-kill-file (newsgroup) "\
Return the name of a KILL file of NEWSGROUP.
If NEWSGROUP is nil, return the global KILL file instead." (byte-code "?	 \" 	
 \"6 ) 	Q
% \"6 !	Q
5 \"" [newsgroup gnus-kill-file-name gnus-article-save-directory gnus-use-long-file-name t string-equal "" expand-file-name "~/News" "." gnus-newsgroup-directory-form "/"] 8))

(defun gnus-subscribe-randomly (newsgroup) "\
Subscribe new NEWSGROUP and insert it at the beginning of newsgroups." (byte-code "	@@\"" [newsgroup gnus-newsrc-assoc gnus-subscribe-newsgroup] 3))

(defun gnus-subscribe-alphabetically (newgroup) "\
Subscribe new NEWSGROUP and insert it in strict alphabetic order." (byte-code "	
?
 & @@\" @@\" A 
\"*" [groups gnus-newsrc-assoc before nil newgroup string< gnus-subscribe-newsgroup] 4))

(defun gnus-subscribe-hierarchically (newgroup) "\
Subscribe new NEWSGROUP and insert it in hierarchical newsgroup order." (byte-code "!q
? 	S eb	!Q#4 !!\"
\"< Ĉ )	\"M 	!!O
 
\"*)" [gnus-current-startup-file groupkey newgroup before nil groupkey-re t find-file-noselect "^\\(" regexp-quote ".*\\)[!:]" re-search-forward buffer-substring match-beginning 1 match-end string< string-match "^\\(.*\\)\\.[^.]+$" gnus-subscribe-newsgroup] 14))

(defun gnus-subscribe-newsgroup (newsgroup &optional next) "\
Subscribe new NEWSGROUP.
If optional argument NEXT is non-nil, it is inserted before NEXT." (byte-code "D
\"\"" [newsgroup t next gnus-insert-newsgroup message "Newsgroup %s is subscribed"] 4))

(defun gnus-newsgroup-directory-form (newsgroup) "\
Make hierarchical directory name from NEWSGROUP name." (byte-code "OG
	W% 
HU 
I
T
 +" [newsgroup len idx 0 nil 46 47] 4))

(defun gnus-make-directory (directory) "\
Make DIRECTORY recursively." (byte-code "	\"! \")" [directory default-directory expand-file-name file-exists-p gnus-make-directory-1 ""] 5))

(defun gnus-make-directory-1 (head tail) (byte-code "\"0 	!!!OP	!# 	%	!O\"8 \"8 Ç" [tail head nil t string-match "^/\\([^/]+\\)" file-name-as-directory match-beginning 1 match-end file-exists-p call-process "mkdir" gnus-make-directory-1 string-equal ""] 12))

(defun gnus-simplify-subject (subject &optional re-only) "\
Remove `Re:' and words in parentheses.
If optional argument RE-ONLY is non-nil, strip `Re:' only." (byte-code "
\" 
!O) 
\") 
!O 
)" [case-fold-search t subject re-only string-match "\\`\\(re\\(\\^[0-9]+\\)?:[ 	]+\\)+" match-end 0 nil "[ 	
]*([^()]*)[ 	
]*\\'" match-beginning] 8))

(defun gnus-optional-lines-and-from (header) "\
Return a string like `NNN:AUTHOR' from HEADER." (byte-code "G	H	H!\"P#\\O)" [name-length header "umerin@photon" format "%3d:%s" 4 mail-strip-quoted-names 2 make-string 32 0] 8))

(defun gnus-optional-lines (header) "\
Return a string like `NNN' from HEADER." (byte-code "H\"" [header format "%4d" 4] 4))

(defun gnus-sort-headers (predicate &optional reverse) "\
Sort current group headers by PREDICATE safely.
*Safely* means C-g quitting is disabled during sorting.
Optional argument REVERSE means reverse order." (byte-code " 
!\"! 
\")" [inhibit-quit t gnus-newsgroup-headers reverse predicate nreverse sort] 6))

(defun gnus-string-lessp (a b) "\
Return T if first arg string is less than second in lexicographic order.
If case-fold-search is non-nil, case of letters is ignored." (byte-code " 	!
!\" 	
\"" [case-fold-search a b string-lessp downcase] 6))

(defun gnus-date-lessp (date1 date2) "\
Return T if DATE1 is earlyer than DATE2." (byte-code "!	!\"" [date1 date2 string-lessp gnus-sortable-date] 5))

(defun gnus-sortable-date (date) "\
Make sortable string by string-lessp from DATE.
Timezone package is used." (byte-code "!H!H!H!H	
$-" [date year month day time timezone-parse-date string-to-int 0 1 2 3 timezone-make-sortable-date] 9))

(defun gnus-fetch-field (field) "\
Return the value of the header FIELD of current article." (byte-code " ebe#`\"	!))" [nil field widen narrow-to-region search-forward "

" move mail-fetch-field] 7))

(fset (quote gnus-expunge) (quote gnus-Subject-delete-marked-with))

(defun gnus-kill (field regexp &optional command all) "\
If FIELD of an article matches REGEXP, execute COMMAND.
Optional 1st argument COMMAND is default to
	(gnus-Subject-mark-as-read nil \"X\").
If optional 2nd argument ALL is non-nil, articles marked are also applied to.
If FIELD is an empty string (or nil), entire article body is searched for.
COMMAND must be a lisp expression or a string representing a key sequence." (byte-code "Ƌ)" [gnus-Subject-buffer command field regexp nil all ((byte-code "\"eb	? ȉ
	?%" [gnus-Subject-buffer command field regexp nil all switch-to-buffer norecord (gnus-Subject-mark-as-read nil "X") gnus-execute] 7))] 1))

(defun gnus-execute (field regexp form &optional backward ignore-marked) "\
If FIELD of article header matches REGEXP, execute lisp FORM (or a string).
If FIELD is an empty string (or nil), entire article body is searched for.
If optional 1st argument BACKWARD is non-nil, do backward instead.
If optional 2nd argument IGNORE-MARKED is non-nil, articles which are
marked as read or unread are ignored." (byte-code "\" ? D ;$ !!P!6 !@ KD \"<O @=?X Eq  q >?q >z 	#
# 	#{ +" [function nil header article field form ignore-marked gnus-newsgroup-unreads gnus-newsgroup-marked regexp backward string-equal "" symbol-name intern-soft "gnus-header-" downcase fboundp error "Unknown header field: \"%s\"" lambda gnus-Subject-article-number gnus-execute-1 gnus-Subject-search-subject] 14))

(defun gnus-execute-1 (function regexp form) (byte-code " ?  
I !E 
\";, !\"E ;A !E !* 
	\" \"qeb#) ; ! !,))" [article nil function header value regexp form gnus-current-article gnus-last-article gnus-break-pages gnus-Mark-article-hook t gnus-Article-buffer gnus-Subject-article-number gnus-get-header-by-number funcall prin1-to-string string-match execute-kbd-macro message "Searching for article: %d..." gnus-Article-setup-buffer gnus-Article-prepare re-search-forward] 14))

(defun gnus-caesar-region (&optional n) "\
Caesar rotation of region by N, default 13, for decrypting netnews.
ROT47 will be performed for Japanese text in any case." (interactive (byte-code " !C C" [current-prefix-arg nil prefix-numeric-value] 2)) (byte-code "
!? щ' 
W! 
[\"Z' 
\"
!?M!?> H
\\\"!\"Wg ITT P!҉W \\
\\HI\\
\\HITy \"\"\"
	W HX 	W  \\ 
X Z )IT +!+  \"GW=HHIT#b\"c-" [current-prefix-arg nil n t caesar-translate-table i lower upper t1 t2 t3 v from to str len numberp 13 0 26 % zerop boundp /= 97 "abcdefghijklmnopqrstuvwxyz" message "Building caesar-translate-table..." make-vector 256 upcase 65 161 logior 79 128 33 126 47 "Building caesar-translate-table... done" region-beginning region-end buffer-substring delete-region] 22))

(defun gnus-header-number (header) "\
Return article number in HEADER." (byte-code "H" [header 0] 2))

(defun gnus-header-subject (header) "\
Return subject string in HEADER." (byte-code "H" [header 1] 2))

(defun gnus-header-from (header) "\
Return author string in HEADER." (byte-code "H" [header 2] 2))

(defun gnus-header-xref (header) "\
Return xref string in HEADER." (byte-code "H" [header 3] 2))

(defun gnus-header-lines (header) "\
Return lines in HEADER." (byte-code "H" [header 4] 2))

(defun gnus-header-date (header) "\
Return date in HEADER." (byte-code "H" [header 5] 2))

(defun gnus-header-id (header) "\
Return Id in HEADER." (byte-code "H" [header 6] 2))

(defun gnus-header-references (header) "\
Return references in HEADER." (byte-code "H" [header 7] 2))

(defun gnus-output-to-rmail (file-name) "\
Append the current article to an Rmail file named FILE-NAME." (byte-code "!!p!!K !K Q!H !q ed%))!)K !qp! 
! !?p ed# q!} 
	
  dd\"!
 eb !`d\"eTb!
!*))!*" [file-name rmail-last-rmail-file artbuf tmpbuf file-buffer require-final-newline nil t outbuf buffer-read-only msg rmail-current-message require rmail expand-file-name get-buffer-create " *GNUS-output*" get-file-buffer file-exists-p yes-or-no-p "\"" "\" does not exist, create it? " create-file-buffer rmail-insert-rmail-file-header write-region 1 kill-buffer error "Output file does not exist" buffer-flush-undo erase-buffer insert-buffer-substring gnus-convert-article-to-rmail append-to-file boundp widen narrow-to-region search-backward "" rmail-count-new-messages rmail-show-message] 28))

(defun gnus-output-to-file (file-name) "\
Append the current article to a file named FILE-NAME." (byte-code "!p!
qp! 	!dbced#)
!*" [file-name artbuf tmpbuf expand-file-name get-buffer-create " *GNUS-output*" buffer-flush-undo erase-buffer insert-buffer-substring "
" append-to-file kill-buffer] 9))

(defun gnus-convert-article-to-rmail nil "\
Convert article in current buffer to Rmail message format." (byte-code "ebc# ! dbc)" [buffer-read-only nil t "
0, unseen,,
*** EOOH ***
" search-forward "
" replace-match "
^_" ""] 4))

(defun gnus-start-news-server (&optional confirm) "\
Open network stream to remote NNTP server.
If optional argument CONFIRM is non-nil, ask you host that NNTP server
is running even if it is defined.
Run gnus-Open-server-hook just before opening news server." (byte-code " 	  	? ǉ
 	?: !\" 4 	CB	%: 	\"	\"F  	\"\\ !!! ?f 	 \"w !!! !	\"!	\" 	\"!!" [nil gnus-nntp-server confirm gnus-secondary-servers gnus-nntp-service t gnus-server-opened "news.mit.edu" boundp completing-read "NNTP server: " read-string string-equal "" system-name string-match ":" require mhspool gnus-define-access-method message "Looking up private directory..." nnspool "Looking up local news spool..." nntp "Connecting to NNTP server on %s..." run-hooks gnus-Open-server-hook gnus-open-server error gnus-nntp-message format "Cannot open NNTP server on %s"] 24))

(defun gnus-server-opened nil (byte-code "" [nil] 1))

(defun gnus-close-server nil (byte-code "" [nil] 1))

(defun gnus-nntp-message (&optional message) "\
Return a message returned from NNTP server.
If no message is available and optional MESSAGE is given, return it." (byte-code " 	 ; GV  	*" [status message gnus-status-message "" 0] 3))

(defun gnus-define-access-method (method &optional access-methods) "\
Define access functions for the access METHOD.
Methods defintion is taken from optional argument ACCESS-METHODS or
the variable gnus-access-methods." (byte-code "	
 \"A? 	\"* * @@@AMA )" [bindings method access-methods gnus-access-methods assoc error "Unknown access method: %s"] 5))

(defun gnus-select-newsgroup (group &optional show-all) "\
Select newsgroup GROUP.
If optional argument SHOW-ALL is non-nil, all of articles in the group
are selected." (byte-code "!*\"\"!, \"\"!/ 	
!?A  	G
V ⏈Va Wq Z	\" W ZW Z	!S	\"\" ! 	\"	*	!\"\"	\"\"A\" @H  !H  )" [group articles nil gnus-newsgroup-name gnus-newsgroup-unreads gnus-unread-hashtb show-all gnus-active-hashtb t gnus-newsgroup-unselected gnus-large-newsgroup selected number gnus-newsgroup-headers gnus-newsgroup-marked gnus-marked-assoc gnus-newsgroup-begin gnus-newsgroup-end gnus-newsgroup-last-rmail gnus-newsgroup-last-mail gnus-newsgroup-last-folder gnus-newsgroup-last-file gnus-current-article gnus-current-headers gnus-current-history gnus-have-all-headers gnus-last-article gnus-request-group gnus-uncompress-sequence nthcdr 2 abbrev-expansion numberp (byte-code "	
#!\" 
 !)" [input gnus-newsgroup-name number selected read-string format "How many articles from %s (default %d): " string-equal "" string-to-int] 6) ((quit (byte-code "" [selected 0] 2))) 0 copy-sequence setcdr zerop gnus-set-difference gnus-retrieve-headers gnus-intersection mapcar (lambda (header) (byte-code "H" [header 0] 2)) append assoc gnus-last-element gnus-clear-hashtables-for-newsgroup-headers] 23))

(defun gnus-get-header-by-number (number) "\
Return a header specified by a NUMBER.
If the variable gnus-newsgroup-headers is updated, the hashed table
gnus-newsgroup-headers-hashtb-by-number must be set to nil to indicate
rehash is necessary." (byte-code "  	!\"" [gnus-newsgroup-headers-hashtb-by-number number gnus-make-headers-hashtable-by-number abbrev-expansion int-to-string] 5))

(defun gnus-get-header-by-id (id) "\
Return a header specified by an ID.
If the variable gnus-newsgroup-headers is updated, the hashed table
gnus-newsgroup-headers-hashtb-by-id must be set to nil to indicate
rehash is necessary." (byte-code "  	; 	\"" [gnus-newsgroup-headers-hashtb-by-id id gnus-make-headers-hashtable-by-id abbrev-expansion] 4))

(defun gnus-make-headers-hashtable-by-number nil "\
Make hashtable for the variable gnus-newsgroup-headers by number." (byte-code " 
% 
@H!\"L
A	 *" [header nil headers gnus-newsgroup-headers gnus-newsgroup-headers-hashtb-by-number make-abbrev-table intern int-to-string 0] 6))

(defun gnus-make-headers-hashtable-by-id nil "\
Make hashtable for the variable gnus-newsgroup-headers by id." (byte-code " 
# 
@H\"L
A	 *" [header nil headers gnus-newsgroup-headers gnus-newsgroup-headers-hashtb-by-id make-abbrev-table intern 6] 5))

(defun gnus-clear-hashtables-for-newsgroup-headers nil "\
Clear hash tables created for the variable gnus-newsgroup-headers." (byte-code "" [gnus-newsgroup-headers-hashtb-by-id nil gnus-newsgroup-headers-hashtb-by-number] 2))

(defun gnus-more-header-backward nil "\
Find new header backward." (byte-code "	
\"8@? V' SC!@ +" [first gnus-newsgroup-name gnus-active-hashtb artnum gnus-newsgroup-begin header nil 2 abbrev-expansion gnus-retrieve-headers] 5))

(defun gnus-more-header-forward nil "\
Find new header forward." (byte-code "	
\"8A? W' TC!@ +" [last gnus-newsgroup-name gnus-active-hashtb artnum gnus-newsgroup-end header nil 2 abbrev-expansion gnus-retrieve-headers] 5))

(defun gnus-extend-newsgroup (header &optional backward) "\
Extend newsgroup selection with HEADER.
Optional argument BACKWARD means extend toward backward." (byte-code "@ H 
B 
C\" 	>( 	B	\"	^	])" [header artnum gnus-newsgroup-headers backward gnus-newsgroup-unselected gnus-newsgroup-unreads gnus-newsgroup-begin gnus-newsgroup-end 0 append gnus-clear-hashtables-for-newsgroup-headers delq] 5))

(defun gnus-mark-article-as-read (article) "\
Remember that ARTICLE is marked as read." (byte-code "	\"	
\"" [gnus-newsgroup-unreads article gnus-newsgroup-marked delq] 4))

(defun gnus-mark-article-as-unread (article &optional clear-mark) "\
Remember that ARTICLE is marked as unread.
Optional argument CLEAR-MARK means ARTICLE should not be remembered
that it was marked as read once." (byte-code "	> 	B
 \"$ >$ B" [article gnus-newsgroup-unreads clear-mark gnus-newsgroup-marked delq] 3))

(defun gnus-clear-system nil "\
Clear all variables and buffer." (byte-code "	 @LA )	B 	!B 	!!	

i 
@!^ 
@!
A
L )" [variables gnus-variable-list nil gnus-active-hashtb gnus-octive-hashtb gnus-unread-hashtb gnus-newsgroup-headers gnus-newsgroup-headers-hashtb-by-id gnus-newsgroup-headers-hashtb-by-number gnus-current-startup-file buffers gnus-buffer-list get-file-buffer kill-buffer get-buffer] 8))

(defun gnus-configure-windows (action) "\
Configure GNUS windows according to the next ACTION.
The ACTION is either a symbol, such as `SelectNewsgroup', or a
configuration list such as `(1 1 2)'.  If ACTION is not a list,
configuration list is got from the variable gnus-window-configuration." (byte-code "	<	 	 	
\"A@!!!	?R ?8!=R ?8!=R ?8!=Y ʂi i i  !}   !  !  !  ! #\"! !! !K\"	8!? 8\"	\"]8!?8\"	\"]8!?8\"	\"]# !Z]!!?T!?J!?T\\!!?i!?i!!?z\"!!?\"!!? \".	" [windows action gnus-window-configuration grpwin gnus-Group-buffer subwin gnus-Subject-buffer artwin gnus-Article-buffer winsum nil height grpheight subheight artheight gnus-use-full-window t window-min-height assq get-buffer-window 0 zerop 1 2 select-window selected-window delete-other-windows window-height + switch-to-buffer norecord get-buffer delete-windows-on apply / * enlarge-window split-window-vertically other-window gnus-Article-setup-buffer] 54))

(defun gnus-find-header-by-number (headers number) "\
Return a header which is a element of HEADERS and has NUMBER." (byte-code "
 ?! 
@H= 
@
A )" [found nil headers number 0] 4))

(defun gnus-find-header-by-id (headers id) "\
Return a header which is a element of HEADERS and has Message-ID." (byte-code "
 ?\" 
@H\" 
@
A )" [found nil headers id string-equal 6] 5))

(defun gnus-version nil "\
Version numbers of this version of GNUS." (interactive) (byte-code "ň! ! 	
%; !' 	$; !6 	
$; 	#" [gnus-version nntp-version nnspool-version mhspool-version t nil boundp message "%s; %s; %s; %s" "%s; %s; %s" "%s; %s"] 11))

(defun gnus-Info-find-node nil "\
Find Info documentation of GNUS." (interactive) (byte-code "ň!= !	!# =# !
!\"\"A!)" [major-mode gnus-Group-buffer gnus-Subject-buffer Info-directory gnus-Info-directory nil gnus-Info-nodes require info gnus-Group-mode gnus-configure-windows (1 0 0) pop-to-buffer gnus-Subject-mode (0 1 0) expand-file-name Info-goto-node assq] 10))

(defun gnus-overload-functions (&optional overloads) "\
Overload functions specified by optional argument OVERLOADS.
If nothing is specified, use the variable gnus-overload-functions." (byte-code "
 
8 
@
A@!?- AA@- AA@#@A@M *" [defs nil overloads gnus-overload-functions fboundp load nomessage] 6))

(defun gnus-make-threads (newsgroup-headers) "\
Make conversation threads tree from NEWSGROUP-HEADERS." (byte-code "	t @A
!p 
H: 
H\": 
H!!O![ ?[ 
H\"H\"\"[ É
BB?p 
B !\"-" [headers newsgroup-headers h nil d roots dependencies gnus-thread-ignore-subject vectorp 7 string-match "\\(<[^<>]+>\\)[^>]*$" gnus-get-header-by-id match-beginning 1 match-end string-equal gnus-simplify-subject re mapcar (lambda (root) (byte-code "	\"" [root dependencies gnus-make-threads-1] 3)) nreverse] 12))

(defun gnus-make-threads-1 (parent dependencies) (byte-code ". @A
A* H
AH=* 
@B \"B+" [children nil d depends dependencies parent 6 mapcar (lambda (child) (byte-code "	\"" [child dependencies gnus-make-threads-1] 3))] 4))

(defun gnus-narrow-to-page (&optional arg) "\
Make text outside current page invisible except for page delimiter.
A numeric arg specifies to move forward or backward by that many pages,
thus showing a page other than the one point was originally in." (interactive "P") (byte-code " ! É! V$ !. W. S! `!l> o?D !`\")" [arg nil prefix-numeric-value 0 forward-page -1 widen narrow-to-region forward-line 1] 11))

(defun gnus-last-element (list) "\
Return last element of LIST." (byte-code "
 
A? 
@
A )" [last nil list] 3))

(defun gnus-set-difference (list1 list2) "\
Return a list of elements of LIST1 that do not appear in LIST2." (byte-code "!	 	@\"	A )" [list1 list2 copy-sequence delq] 5))

(defun gnus-intersection (list1 list2) "\
Return a list of elements that appear in both LIST1 and LIST2." (byte-code "
 
@> 
@B
A )" [result nil list2 list1] 3))

(defun gnus-setup-news-info (&optional rawfile) "\
Setup news information.
If optional argument RAWFILE is non-nil, force to read raw startup file." (byte-code "	 
  ?? ŉ# !   M  L @\"A5 ))" [init gnus-newsrc-assoc gnus-active-hashtb gnus-unread-hashtb rawfile nil new-newsgroups gnus-subscribe-newsgroup-method gnus-read-newsrc-file gnus-read-active-file gnus-expire-marked-articles gnus-get-unread-articles gnus-find-new-newsgroups funcall] 9))

(defun gnus-add-newsgroup (newsgroup) "\
Subscribe new NEWSGROUP safely and put it at top." (byte-code "	\"? 
\" \" D	@@\"" [newsgroup gnus-newsrc-assoc gnus-active-hashtb gnus-killed-assoc t assoc abbrev-expansion gnus-insert-newsgroup] 6))

(defun gnus-find-new-newsgroups nil "\
Looking for new newsgroups and return names.
`-n' option of options line in .newsrc file is recognized." (byte-code "\"
*" [group nil new-newsgroups gnus-active-hashtb mapatoms (lambda (sym) (byte-code "	!
? 
\"?  \"5 \"?5 \"?5 B" [group sym gnus-newsrc-options-n-no gnus-newsrc-options-n-yes gnus-killed-assoc gnus-newsrc-assoc new-newsgroups symbol-name string-match assoc] 7))] 3))

(defun gnus-kill-newsgroup (group) "\
Kill GROUP from gnus-newsrc-assoc, .newsrc and gnus-unread-hashtb." (byte-code "	
\"? Â. 
\"	\"\"B	\"L	\")" [info group gnus-newsrc-assoc nil gnus-killed-assoc gnus-unread-hashtb assoc delq intern gnus-update-newsrc-buffer delete] 8))

(defun gnus-insert-newsgroup (info &optional next) "\
Insert newsrc INFO entry before NEXT.
If optional argument NEXT is nil, appended to the last." (byte-code "?	 \"@	\"8\"\"	\"% 	\"@@\"7 B B	?J o @@\"^ ʉk A	A	B 	\"B\"+	\"\"	#	\"	
!
BBL*" [info group range gnus-active-hashtb gnus-newsrc-assoc next found nil rest tail t gnus-killed-assoc gnus-unread-hashtb error "Invalid argument: %s" gnus-difference-of-range 2 abbrev-expansion nthcdr assoc "Duplicated: %s" string-equal setcdr append delq gnus-update-newsrc-buffer intern gnus-number-of-articles] 19))

(defun gnus-check-killed-newsgroups nil "\
Check consistency between gnus-newsrc-assoc and gnus-killed-assoc." (byte-code "B @@?' \"?' ' \"9 \"?9 @
BA 
!+" [group nil new-killed old-killed gnus-killed-assoc gnus-newsrc-options-n-no gnus-newsrc-options-n-yes gnus-newsrc-assoc string-match assoc nreverse] 6))

(defun gnus-check-bogus-newsgroups (&optional confirm) "\
Delete bogus newsgroups.
If optional argument CONFIRM is non-nil, confirm deletion of newsgroups." (byte-code "
	!
R 
@@\"8 8 \"!?D 
@BI B
A ! @@\"~ \"?~ @BAY ! @\"A 	 	@@	@A \" 	@B	A	 
!." [group nil old-newsrc gnus-newsrc-assoc new-newsrc bogus old-killed gnus-killed-assoc new-killed old-marked gnus-marked-assoc new-marked gnus-active-hashtb confirm message "Checking bogus newsgroups..." abbrev-expansion y-or-n-p format "Delete bogus newsgroup: %s " nreverse assoc gnus-update-newsrc-buffer delete "Checking bogus newsgroups... done"] 13))

(defun gnus-get-unread-articles nil "\
Compute diffs between active and read articles." (byte-code "	!  s @
@\"8	I 	\"8\"I \"P Âj 
\"\"\"!BBLA !-" [read gnus-newsrc-assoc group-info nil group-name active range gnus-unread-hashtb gnus-active-hashtb gnus-octive-hashtb message "Checking new news..." make-abbrev-table 2 abbrev-expansion equal gnus-difference-of-range nthcdr intern gnus-number-of-articles "Checking new news... done"] 15))

(defun gnus-expire-marked-articles nil "\
Check expired article which is marked as unread." (byte-code "	h @AÉ@\"8@4 P @YG @BA. _ @B
BA 
." [marked-assoc gnus-marked-assoc updated-assoc nil marked articles updated begin gnus-active-hashtb 2 abbrev-expansion] 6))

(defun gnus-mark-as-read-by-xref (group headers unreads &optional subscribed-only) "\
Mark articles as read using cross references and return updated newsgroups.
Arguments are GROUP, HEADERS, UNREADS, and optional SUBSCRIBED-ONLY." (byte-code " @
H>%  
H! @@A	\" 
V \"8? \"A> \" A>}  AB\" DB)A- A !K\"." [xref-list nil header xrefs xref gname article headers unreads group subscribed-only gnus-newsrc-assoc gnus-marked-assoc group-xref 0 gnus-parse-xref-field 3 string-equal 1 assoc setcdr gnus-mark-xrefed-as-read mapcar car] 11))

(defun gnus-parse-xref-field (xref-value) "\
Parse Xref: field value, and return list of `(group . article-id)'." (byte-code "
 
\" 
!O 
S 
\"L 
!!O
!!O!BB
!OO  *" [xref-list nil xref-value "" string-match "^[ 	]*[^ 	,]+[ 	,]+\\(.*\\)$" match-beginning 1 "^[ 	,]*\\([^ 	,]+\\):\\([0-9]+\\)[^0-9]*" match-end string-to-int 2] 13))

(defun gnus-mark-xrefed-as-read (xrefs) "\
Update unread article information using XREFS alist." (byte-code "E @@@A\"\"!
6 
@\"
A\" #A +" [group nil idlist unread xrefs gnus-unread-hashtb gnus-uncompress-sequence nthcdr 2 abbrev-expansion delq gnus-update-unread-articles ignore] 9))

(defun gnus-update-unread-articles (group unread-list marked-list) "\
Update unread articles of GROUP using UNREAD-LIST and MARKED-LIST." (byte-code "	
\"8	\"? ? ł * A!\"/ A\"A\"!\"@VH AB	\"A\"\"\"	!< 	
\"		x 	\"  	B
B
)*" [active group gnus-active-hashtb unread gnus-unread-hashtb nil unread-list gnus-newsrc-assoc marked-list marked gnus-marked-assoc 2 abbrev-expansion setcdr gnus-compress-sequence ((0 . 0)) setcar gnus-number-of-articles nthcdr 0 1 assoc gnus-difference-of-range gnus-update-newsrc-buffer] 17))

(defun gnus-read-active-file nil "\
Get active file from NNTP server." (byte-code "!   q
  !)# !" [nntp-server-buffer gnus-octive-hashtb gnus-active-hashtb message "Reading active file..." gnus-request-list make-abbrev-table gnus-active-to-gnus-format "Reading active file... done" error "Cannot read active file from NNTP server."] 7))

(defun gnus-active-to-gnus-format nil "\
Convert active file format to internal format." (byte-code "eb!eb#K !!\"\"!!\"!!\"\"!!\"!!!\"!BEL
 " [gnus-ignore-newsgroups-regexp nil t gnus-active-hashtb delete-matching-lines re-search-forward "^\\([^ 	]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([ymn]\\).*$" intern buffer-substring match-beginning 1 match-end string-equal "y" 4 string-to-int 3 2] 28))

(defun gnus-read-newsrc-file (&optional rawfile) "\
Read startup FILE.
If optional argument RAWFILE is non-nil, the raw startup file is read." (byte-code "	!
 
@L
A )P!8!8	!qӏ
? !P \"z z 	z @	@Wz @	@Uz 8	8X   \"  \")-" [gnus-current-startup-file gnus-startup-file variables gnus-variable-list nil newsrc-file quick-file quick-loaded newsrc-mod quick-mod rawfile gnus-newsrc-assoc t gnus-make-newsrc-file ".el" 5 file-attributes find-file-noselect (byte-code "	$" [quick-loaded quick-file t load] 5) ((error (byte-code "" [nil] 1))) fboundp file-newer-than-file-p 1 message "Reading %s..." gnus-newsrc-to-gnus-format gnus-check-killed-newsgroups "Reading %s... Done"] 12))

(defun gnus-make-newsrc-file (file) "\
Make server dependent file name by catenating FILE and server host name." (byte-code "\"Q
! 
 *" [file nil real-file gnus-nntp-server expand-file-name "-" file-exists-p] 4))

(defun gnus-newsrc-to-gnus-format nil "\
Parse current buffer as .newsrc file." (byte-code "	eb#V !!\"\"V !O!@A)eb#!!\"	\"| \"	!!\"\"!!\"\" !!O!O\" !!O!!!O!BB \" !!BB  \"! 
!BB	B	Z 	!	-" [newsgroup nil subscribe ranges subrange read-list gnus-newsrc-options gnus-newsrc-options-n-yes gnus-newsrc-options-n-no gnus-newsrc-assoc t yes-and-no re-search-forward "^[ 	]*options[ 	]*\\(.*\\(
[ 	]+.*\\)*\\)[ 	]*$" buffer-substring match-beginning 1 match-end string-match "\\(^\\|[ 	
]\\)-n" gnus-parse-n-options 0 "^\\([^:! 	
]+\\)\\([:!]\\)[ 	]*\\(\\(...\\)*.*\\)$" assoc message "Ignore duplicated newsgroup: %s" string-equal ":" 2 3 "^[, 	]*\\([0-9-]+\\)" "^\\([0-9]+\\)-\\([0-9]+\\)$" string-to-int "^[0-9]+$" ding "Ignoring bogus lines of %s" sit-for nreverse] 42))

(defun gnus-parse-n-options (options) "\
Parse -n NEWSGROUPS options and return a cons of YES and NO regexps." (byte-code "\"k !!O!!O!!O\"K !O!OQ0 \"[ 
Bg \"g B ~ KA\"\"@R
 K
A\"\"
@RB," [yes nil no yes-or-no newsgroup options t string-match "^[ 	
,]*\\(!?\\)\\([^--- 	
,][^ 	
,]*\\)" match-beginning 1 match-end regexp-quote 2 "\\(^\\|\\\\[.]\\)all\\(\\\\[.]\\|$\\)" 0 ".+" string-equal "!" "^\\(" apply concat mapcar (lambda (newsgroup) (byte-code "P" [newsgroup "\\|"] 2)) "\\)" (lambda (newsgroup) (byte-code "P" [newsgroup "\\|"] 2))] 23))

(defun gnus-save-newsrc-file nil "\
Save to .newsrc FILE." (byte-code " 	X 
X 
!q ? !W 
\"! +!qp!  
P!+p!
\")" [gnus-newsrc-assoc gnus-killed-assoc gnus-current-startup-file make-backup-files t version-control nil require-final-newline find-file-noselect buffer-modified-p message "(No changes need to be saved)" "Saving %s..." run-hooks gnus-Save-newsrc-hook save-buffer get-buffer-create " *GNUS-newsrc*" buffer-flush-undo erase-buffer gnus-gnus-to-quick-newsrc-format write-file ".el" kill-buffer "Saving %s... Done"] 15))

(defun gnus-update-newsrc-buffer (group &optional delete next) "\
Incrementally update .newsrc buffer about GROUP.
If optional 1st argument DELETE is non-nil, delete the group.
If optional 2nd argument NEXT is non-nil, inserted before it." (byte-code "!
 !qeb!Q#3  `!`\"ŉ =  \"?N  	V { 	;j eb	!Q#r  { dbn{ c! !m? ! ! 8 ڂ \"\"!c)*)" [gnus-current-startup-file deleted nil buffer-read-only group t delete newsrc gnus-newsrc-assoc next get-file-buffer find-file-noselect re-search-forward "^" regexp-quote "[:!]" beginning-of-line delete-region forward-line 1 assoc "
" looking-at "^[ 	]*options\\([ 	]\\|$\\)" "^[ 	]+" insert ": " "! " gnus-ranges-to-newsrc-format nthcdr 2] 20))

(defun gnus-gnus-to-quick-newsrc-format nil "\
Insert GNUS variables such as gnus-newsrc-assoc in lisp format." (byte-code "cc 
8 
@!/ J/ !J!%
A +" [variable nil variables gnus-variable-list gnus-killed-assoc ";; GNUS internal format of .newsrc.
" ";; Touch .newsrc instead if you think to remove this file.
" gnus-check-killed-newsgroups boundp insert "(setq " symbol-name " '" prin1-to-string ")
"] 11))

(defun gnus-ranges-to-newsrc-format (ranges) "\
Insert ranges of read articles." (byte-code "
J 
@
A@AU4 @U% 1 @!c
1 cF @!A!#
F c )" [range nil ranges t 0 int-to-string "," insert "-"] 8))

(defun gnus-compress-sequence (numbers) "\
Convert list of sorted numbers to ranges." (byte-code "!K\"@@H 
@U Ă? 
T@U. @? 	
BB@@A 	
BB!," [numbers first last result nil t sort copy-sequence < nreverse] 6))

(defun gnus-uncompress-sequence (ranges) "\
Expand compressed format of sequence." (byte-code "9 @@@A
W* BT BA !+" [first nil last result ranges nreverse] 4))

(defun gnus-number-of-articles (range) "\
Compute number of articles from RANGE `((beg1 . end1) (beg2 . end2) ...)'." (byte-code "	% 	@A\" 	@A	@@Z#	A )" [count range 0 /= + 1] 7))

(defun gnus-difference-of-range (src obj) "\
Compute (SRC - OBJ) on range.
Range of SRC is expressed as `(beg . end)'.
Range of OBJ is expressed as `((beg1 . end1) (beg2 . end2) ...)." (byte-code "	@	A	 Y @@@A
V& ĉO WA S
^BBTO YO T]A* 	a 
Xk 
BBv !z BC+" [beg src end range nil obj beg1 end1 nreverse 0] 4))

(load "gnus-speedups")
