%% @texfile{ 
%%   author = "Karl Berry et al.", 
%%   version = "1.9", 
%%   date = "26 April 1991", 
%%   filename = "eplain.tex", 
%%   email = "karl@cs.umb.edu", 
%%   address = "135 Center Hill Rd. // Plymouth, MA 02360" 
%%   checksum = "1191   2708  35297", 
%%   codetable = "ISO/ASCII", 
%%   supported = "yes", 
%%   docstring = "This file defines macros that expand on plain TeX.", 
%% } 
\def\makeactive#1{\catcode`#1 = \active \ignorespaces}% 
\chardef\letter = 11 
\chardef\other = 12 
\catcode`@ = \letter 
\def\uncatcodespecials{% 
   \def\do##1{\catcode`##1 = \other}% 
   \dospecials 
}% 
{% 
   \makeactive\^^M 
   \long\gdef\letreturn#1{\let^^M = #1}% 
}% 
\def\gobble#1{}% 
\def\gobbletwo#1#2{}% 
\def\gobblethree#1#2#3{}% 
\def\@gobblemeaning#1:->{}% 
\def\sanitize{\expandafter\@gobblemeaning\meaning}% 
\def\futurenonspacelet#1{\def\cs{#1}% 
  \afterassignment\@stepone\let\nexttoken= 
}% 
\def\\{\let\@stoken= }% 
\\ % now \@stoken is a space token (\\ is a control symbol, so that 
\def\@stepone{\expandafter\futurelet\cs\@steptwo}% 
\def\@steptwo{\expandafter\ifx\cs\@stoken\let\@@next=\@stepthree 
  \else\let\@@next=\nexttoken\fi \@@next}% 
\def\@stepthree{\afterassignment\@stepone\let\@@next= }% 
\let\@plainwlog = \wlog 
\let\wlog = \gobble 
\newlinechar = `^^J 
\def\loggingall{\tracingcommands\tw@\tracingstats\tw@ 
   \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne 
   \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne 
   \showboxbreadth\maxdimen\showboxdepth\maxdimen 
}% 
\def\tracingboxes{\showboxbreadth = \maxdimen \showboxdepth = \maxdimen}% 
\newdimen\hruledefaultheight  \hruledefaultheight = 0.4pt 
\newdimen\hruledefaultdepth   \hruledefaultdepth = 0.0pt 
\newdimen\vruledefaultwidth   \vruledefaultwidth = 0.4pt 
\def\ehrule{\hrule height\hruledefaultheight depth\hruledefaultdepth}% 
\def\evrule{\vrule width\vruledefaultwidth}% 
\begingroup 
  \catcode`\{ = 12 \catcode`\} = 12 
  \catcode`\[ = 1 \catcode`\] = 2 
  \gdef\lbracechar[{]% 
  \gdef\rbracechar[}]% 
  \catcode`\% = \other 
  \gdef\percentchar[%]\endgroup 
\def^^L{\par}% 
\let\@ifempty = \iffalse 
\ifx\@undefinedmessage\@undefined 
  \def\@undefinedmessage 
    {No .aux file; I won't warn you about undefined labels.}% 
\fi 
%% @texfile{ 
%%   author = "Karl Berry and Oren Patashnik", 
%%   version = "0.99h", 
%%   date = "24 Apr 1991", 
%%   filename = "btxmac.tex", 
%%   address = "Please use electronic mail", 
%%   checksum = "812   4053  30557", 
%%   email = "opbibtex@neon.stanford.edu", 
%%   codetable = "ISO/ASCII", 
%%   supported = "yes", 
%%   docstring = "Defines macros that make BibTeX work with plain TeX", 
%% } 
\edef\cite{\the\catcode`@}% 
\catcode`@ = 11 
\let\@oldatcatcode = \cite 
\chardef\@letter = 11 
\chardef\@other = 12 
\def\@innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}% 
\@innerdef\@innernewcount{newcount}% 
\@innerdef\@innernewdimen{newdimen}% 
\@innerdef\@innernewif{newif}% 
\@innerdef\@innernewwrite{newwrite}% 
\def\@gobble#1{}% 
\ifx\inputlineno\@undefined 
   \let\@linenumber = \empty % Pre-3.0. 
\else 
   \def\@linenumber{\the\inputlineno:\space}% 
\fi 
\def\@getoptionalarg#1{\let\temp = #1\futurelet\next\@bracketcheck}% 
\def\@bracketcheck{\begingroup 
   \if [\next 
  \aftergroup\@@getoptionalarg 
   \else 
  \global\let\@optionalarg = \empty 
  \aftergroup\temp 
   \fi 
\endgroup}% 
\def\@@getoptionalarg[#1]{% 
   \def\@optionalarg{#1}% 
   \temp 
}% 
\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}% 
\def\@ttsA#1 #2\@ttsmarkA{% 
   \@ifempty{#1}\else 
  \@ttsB #1\@ttsmarkB 
  \@ifempty{#2}\else 
     \@spacesub\@ttsA#2\@ttsmarkA 
  \fi 
   \fi 
}% 
\def\@ttsB#1{% 
   \ifx #1\@ttsmarkB\else 
  \string #1% 
  \expandafter\@ttsB 
   \fi 
}% 
\def\@ttsmarkB{\@ttsmarkB}% should never be expanded 
\def\@spacesub{+}% 
\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}% 
\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}% 
\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain. 
\def\@nnil{\@nil}% 
\def\@fornoop#1\@@#2#3{}% 
\def\@for#1:=#2\do#3{% 
   \edef\@fortmp{#2}% 
   \ifx\@fortmp\empty \else 
  \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}% 
   \fi 
}% 
\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else 
   #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi 
}% 
\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil 
   \let\@nextwhile=\@fornoop \else 
  #4\relax\let\@nextwhile=\@iforloop\fi\@nextwhile#2\@@#3{#4}% 
}% 
\@innernewif\if@fileexists 
\def\@testfileexistence{\@getoptionalarg\@finishtestfileexistence}% 
\def\@finishtestfileexistence#1{% 
   \begingroup 
  \def\extension{#1}% 
  \immediate\openin0 = 
     \ifx\@optionalarg\empty\jobname\else\@optionalarg\fi 
     \ifx\extension\empty \else .#1\fi 
     \space 
  \ifeof 0 
     \global\@fileexistsfalse 
  \else 
     \global\@fileexiststrue 
  \fi 
  \immediate\closein0 
   \endgroup 
}% 
\toks0 = {% 
\def\bibliographystyle#1{% 
   \@readauxfile 
   \@writeaux{\string\bibstyle{#1}}% 
}% 
\let\bibstyle = \@gobble 
\def\bibliography#1{% 
   \@readauxfile 
   \@writeaux{\string\bibdata{#1}}% 
   \@testfileexistence{bbl}% 
   \if@fileexists 
  \@readbblfile 
   \fi 
}% 
\let\bibdata = \@gobble 
\def\nocite#1{% 
   \@readauxfile 
   \@writeaux{\string\citation{#1}}% 
}% 
\@innernewif\if@notfirstcitation 
\def\cite{\begingroup\catcode`_ = \@letter \@getoptionalarg\@cite}% 
\def\@cite#1{% 
   \nocite{#1}% 
   \printcitestart 
   \@notfirstcitationfalse 
   \@for \@citation :=#1\do 
   {% 
  \expandafter\@onecitation\@citation\@@ 
   }% 
   \ifx\empty\@optionalarg\else 
  \printcitenote{\@optionalarg}% 
   \fi 
   \printcitefinish 
   \endgroup 
}% 
\def\@onecitation#1\@@{% 
   \if@notfirstcitation 
  \printbetweencitations 
   \fi 
   \expandafter \ifx \csname\@citelabel{#1}\endcsname \relax 
  \if@citewarning 
     \message{\@linenumber Undefined citation `#1'.}% 
  \fi 
  \expandafter\gdef\csname\@citelabel{#1}\endcsname{% 
     {\tt \nobreak\hskip0pt#1\nobreak\hskip0pt}}% 
   \fi 
   \csname\@citelabel{#1}\endcsname 
   \@notfirstcitationtrue 
}% 
\def\@citelabel#1{\@tokstostring{b@#1}}% 
\def\@citedef#1{% 
   \begingroup 
  \@resetnumerals 
  \@finishcitedef{#1}% 
}% 
\def\@finishcitedef#1#2{% 
  \expandafter\gdef\csname\@citelabel{#1}\endcsname{#2}% 
   \endgroup 
}% 
\def\@resetnumerals{% 
   \catcode`0 = \@other \catcode`1 = \@other \catcode`2 = \@other 
   \catcode`3 = \@other \catcode`4 = \@other \catcode`5 = \@other 
   \catcode`6 = \@other \catcode`7 = \@other \catcode`8 = \@other 
   \catcode`9 = \@other \catcode`" = \@other \catcode`' = \@other 
   \catcode`` = \@other \catcode`, = \@other \catcode`. = \@other 
}% 
\def\@readbblfile{% 
   \@innernewcount\@itemnum 
   \begingroup 
  \def\begin##1##2{% 
     \setbox0 = \hbox{\biblabelcontents{##2}}% 
     \biblabelwidth = \wd0 
  }% 
  \def\end##1{}% ##1 is `thebibliography' again. 
  \@itemnum = 0 
  \def\bibitem{\futurelet\next\@bibitem}% 
  \def\@bibitem{% 
     \begingroup \if [\next 
    \aftergroup\@alphabibitem 
     \else 
    \aftergroup\@numberedbibitem 
     \fi \endgroup 
  }% 
  \def\@alphabibitem[##1]##2{% 
     \expandafter \xdef\csname\@citelabel{##2}\endcsname {##1}% 
     \@finishbibitem{##2}% 
  }% 
  \def\@numberedbibitem##1{% 
     \advance\@itemnum by 1 
     \expandafter \xdef\csname\@citelabel{##1}\endcsname{\number\@itemnum}% 
     \@finishbibitem{##1}% 
  }% 
  \def\@finishbibitem##1{% 
     \biblabelprint{\csname\@citelabel{##1}\endcsname}% 
     \@writeaux{\string\@citedef{##1}{\csname\@citelabel{##1}\endcsname}}% 
     \ignorespaces 
  }% 
  \let\em = \bblem 
  \let\newblock = \bblnewblock 
  \let\sc = \bblsc 
  \frenchspacing 
  \clubpenalty = 4000 \widowpenalty = 4000 
  \tolerance = 10000 \hfuzz = .5pt 
  \everypar = {\hangindent = \biblabelwidth 
          \advance\hangindent by \biblabelextrahang}% 
  \bblrm 
  \parskip = 1.5ex plus .5ex minus .5ex 
  \biblabelextrahang = .5em 
  \bblhook 
  \input \jobname.bbl 
   \endgroup 
}% 
\@innernewdimen\biblabelwidth 
\@innernewdimen\biblabelextrahang 
\def\biblabelprint#1{% 
   \noindent\hbox to \biblabelwidth{\biblabelcontents{#1}\hss}\enspace}% 
\def\biblabelcontents#1{\bblrm [#1]}% 
\def\bblrm{\rm}% 
\def\bblem{\it}% 
\def\bblsc{\ifx\@scfont\@undefined 
      \font\@scfont = cmcsc10 
       \fi 
       \@scfont 
}% 
\def\bblnewblock{\hskip .11em plus .33em minus .07em}% 
\let\bblhook = \empty 
\def\printcitestart{[}%     left bracket 
\def\printcitefinish{]}%    right bracket 
\def\printbetweencitations{, }% comma, space 
\def\printcitenote#1{, #1}%     comma, space, note (if it exists) 
\let\citation = \@gobble 
\@innernewcount\@numparams 
\def\newcommand#1{% 
   \def\@commandname{#1}% 
   \futurelet\@next\@continuenewcommand 
}% 
\def\@continuenewcommand{\begingroup 
   \if [\@next 
  \aftergroup\@newcommandwithargs 
   \else 
  \global\@numparams = 0 
  \aftergroup\@newcommand 
   \fi 
\endgroup}% 
\def\@newcommandwithargs[#1]{% 
   \global\@numparams = #1 
   \@newcommand 
}% 
\def\@newcommand#1{% 
   \def\@startdef{\expandafter\edef\@commandname}% 
   \ifnum\@numparams=0 
  \let\@paramdef = \empty 
   \else 
  \ifnum\@numparams>9 
     \errmessage{\the\@numparams\space is too many parameters}% 
  \else 
     \ifnum\@numparams<0 
    \errmessage{\the\@numparams\space is too few parameters}% 
     \else 
    \edef\@paramdef{% 
       \ifcase\@numparams 
      \empty  No arguments. 
       \or ####1% 
       \or ####1####2% 
       \or ####1####2####3% 
       \or ####1####2####3####4% 
       \or ####1####2####3####4####5% 
       \or ####1####2####3####4####5####6% 
       \or ####1####2####3####4####5####6####7% 
       \or ####1####2####3####4####5####6####7####8% 
       \or ####1####2####3####4####5####6####7####8####9% 
       \fi 
    }% 
     \fi 
  \fi 
   \fi 
   \expandafter\@startdef\@paramdef{#1}% 
}% 
}% 
\ifx\nobibtex\@undefined \the\toks0 \fi 
\def\@readauxfile{% 
   \if@auxfiledone \else % remember: \@auxfiledonetrue if \noauxfile is defined 
  \global\@auxfiledonetrue 
  \@testfileexistence{aux}% 
  \if@fileexists 
     \begingroup 
    \endlinechar = -1 
    \@setletters 
    \input \jobname.aux 
     \endgroup 
  \else 
     \message{\@undefinedmessage}% 
     \global\@citewarningfalse 
  \fi 
  \immediate\openout\@auxfile = \jobname.aux 
   \fi 
}% 
\newif\if@auxfiledone 
\ifx\noauxfile\@undefined \else \@auxfiledonetrue\fi 
\def\@setletters{% 
   \count255 = 0 
   \edef\temp{\ifx\inputlineno\@undefined 128\else 256\fi}% 
   \loop 
  \ifnum\catcode\count255 = \@other 
     \catcode\count255 = \@letter 
  \fi 
  \advance\count255 by 1 
  \ifnum\count255<\temp 
   \repeat 
   \catcode`\_ = \@letter 
}% 
\@innernewwrite\@auxfile 
\def\@writeaux#1{\ifx\noauxfile\@undefined \write\@auxfile{#1}\fi}% 
\ifx\@undefinedmessage\@undefined 
   \def\@undefinedmessage{No .aux file; I won't give you warnings about 
          undefined citations.}% 
\fi 
\@innernewif\if@citewarning 
\ifx\noauxfile\@undefined \@citewarningtrue\fi 
\catcode`@ = \@oldatcatcode 
\let\auxfile = \@auxfile 
\let\for = \@for 
\let\getoptionalarg = \@getoptionalarg 
\let\ifempty = \@ifempty 
\def\iffileexists{\if@fileexists}% 
\let\innerdef = \@innerdef 
\let\innernewcount = \@innernewcount 
\let\innernewdimen = \@innernewdimen 
\let\innernewif = \@innernewif 
\let\innernewwrite = \@innernewwrite 
\let\linenumber = \@linenumber 
\let\readauxfile = \@readauxfile 
\let\spacesub = \@spacesub 
\let\testfileexistence = \@testfileexistence 
\let\tokstostring = \@tokstostring 
\let\writeaux = \@writeaux 
\def\innerinnerdef#1{\expandafter\innerdef\csname inner#1\endcsname{#1}}% 
\innerinnerdef{newbox}% 
\innerinnerdef{newfam}% 
\innerinnerdef{newhelp}% 
\innerinnerdef{newinsert}% 
\innerinnerdef{newlanguage}% 
\innerinnerdef{newmuskip}% 
\innerinnerdef{newread}% 
\innerinnerdef{newskip}% 
\innerinnerdef{newtoks}% 
\def\immediatewriteaux#1{% 
  \ifx\noauxfile\@undefined 
    \immediate\write\@auxfile{#1}% 
  \fi 
}% 
\begingroup 
   \makeactive\^^M \makeactive\ % No spaces or ^^M's from here on. 
\gdef\obeywhitespace{% 
\makeactive\^^M\def^^M{\par\futurelet\next\@finishobeyedreturn}% 
\makeactive\ \def {\ }% 
\aftergroup\@removebox% 
\futurelet\next\@finishobeywhitespace% 
}% 
\gdef\@finishobeywhitespace{{% 
\ifx\next % 
\aftergroup\@obeywhitespaceloop% 
\else\ifx\next^^M% 
\aftergroup\gobble% 
\fi\fi}}% 
\gdef\@finishobeyedreturn{% 
\ifx\next^^M\vskip\blanklineskipamount\fi% 
\indent% 
}% 
\endgroup 
\def\@obeywhitespaceloop#1{\futurelet\next\@finishobeywhitespace}% 
\def\@removebox{% 
   \setbox0 = \lastbox 
   \ifdim\wd0=\parindent 
     \setbox2 = \hbox{\unhbox0}% 
     \ifdim\wd2=0pt 
   \ignorespaces 
     \else 
   \box2 % Put it back: it wasn't empty. 
     \fi 
   \else 
  \box0 % Put it back: it wasn't the right width. 
   \fi 
}% 
\newskip\blanklineskipamount 
\blanklineskipamount = 0pt 
\def\frac#1/#2{\leavevmode 
   \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}% 
   \kern-.1em $/$% 
   \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}% 
}% 
\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\null}% 
\def\LaTeX{L\kern -.26em \raise .6ex \hbox{\sevenrm A}\kern -.15em \TeX}% 
\def\AMSTeX{$\cal A\kern -.1667em 
   \lower .5ex\hbox{$\cal M$}% 
   \kern -.125em S$-\TeX 
}% 
\def\BibTeX{{\rm B\kern-.05em{\sevenrm I\kern-.025em B}\kern-.08em 
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}% 
\font\mflogo = cmss10 
\def\MF{{\mflogo META}{\tenrm \-}{\mflogo FONT}}% 
\def\blackbox{\vrule height .8ex width .6ex depth -.2ex }% square bullet 
\def\makeblankbox#1#2{% 
  \ifvoid0 
    \errmessage{Box 0 is void}% 
    \errhelp = \@makeblankboxhelp 
  \fi 
  \hbox{\lower\dp0 
    \vbox{\hidehrule{#1}{#2}% 
  \kern -#1% overlap rules 
  \hbox to \wd0{\hidevrule{#1}{#2}% 
    \raise\ht0\vbox to #1{}% vrule height 
    \lower\dp0\vtop to #1{}% vrule depth 
    \hfil\hidevrule{#2}{#1}% 
  }% 
  \kern-#1\hidehrule{#2}{#1}% 
    }% 
  }% 
}% 
\newhelp\@makeblankboxhelp{Assigning to the dimensions of a void^^J% 
  box has no effect.  Do `\string\setbox0=\string\null' before you^^J% 
  define its dimensions.}% 
\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2 \kern-#2}% 
\def\hidevrule#1#2{% 
  \kern-#1% 
  \dimen0=#1\advance\dimen0 by #2% 
  \vrule width\dimen0 
  \kern-#2% 
}% 
\newdimen\boxitspace \boxitspace = 3pt 
\def\boxit#1{% 
  \vbox{% 
    \hrule 
    \hbox{% 
  \vrule 
  \kern\boxitspace 
  \vbox{\kern\boxitspace \parindent = 0pt #1\kern\boxitspace}% 
  \kern\boxitspace 
  \vrule 
    }% 
    \hrule 
  }% 
}% 
\def\numbername#1{\ifcase#1% 
   zero% 
   \or one% 
   \or two% 
   \or three% 
   \or four% 
   \or five% 
   \or six% 
   \or seven% 
   \or eight% 
   \or nine% 
   \or ten% 
   \or #1% 
   \fi 
}% 
\def\environment#1{% 
   \ifx\@groupname\@undefined\else 
  \errhelp = \@unnamedendgrouphelp 
  \errmessage{`\@groupname' was not closed by \string\endenvironment}% 
   \fi 
   \def\@groupname{#1}% 
   \begingroup 
  \let\@groupname = \@undefined 
}% 
\def\endenvironment#1{% 
   \endgroup 
   \def\@thearg{#1}% 
   \ifx\@groupname\@thearg 
   \else 
  \ifx\@groupname\@undefined 
    \errhelp = \@isolatedendenvironmenthelp 
    \errmessage{Isolated \string\endenvironment\space for `#1'}% 
  \else 
    \errhelp = \@mismatchedenvironmenthelp 
    \errmessage{Environment `#1' ended, but `\@groupname' started}% 
     \endgroup % Probably a typo in the names. 
  \fi 
   \fi 
   \let\@groupname = \@undefined 
}% 
\newhelp\@unnamedendgrouphelp{Most likely, you just forgot an^^J% 
   \string\endenvironment.  Maybe you should try inserting another^^J% 
   \string\endgroup to recover.}% 
\newhelp\@isolatedendenvironmenthelp{You ended an environment X, but^^J% 
   no \string\environment\space to start it is anywhere in sight.^^J% 
   You might also be at an \string\endenvironment\space that would match^^J% 
   a \string\begingroup, i.e., you forgot an \string\endgroup.}% 
\newhelp\@mismatchedenvironmenthelp{You started an environment X, but^^J% 
   you ended it with Y.  Maybe you made a typo in one or the other^^J% 
   of the names.}% 
\newif\ifenvironment 
\def\checkenv{\ifenvironment \errhelp = \@interwovenenvhelp 
   \errmessage{Interwoven environments}% 
   \endgroup \fi 
}% 
\newhelp\@interwovenenvhelp{Perhaps you forgot to end the previous^^J% 
   environment? I'm finishing off the current group,^^J% 
   hoping that will fix it.}% 
\newif\ifeqno 
\newif\ifleqno 
\def\eq{\the\@eqtoks}% 
\def\eqn{\the\@eqnotoks}% 
\newtoks\@eqtoks 
\newtoks\@eqnotoks 
\long\def\displaysetup#1$${% 
  \@ddisplaytest#1\eqdef\eqdef\@ddisplaytest 
  \expandafter\@displaytest\the\toks0\eqno\eqno\@displaytest 
}% 
\def\@removetrailingspaces#1 #2 \endmark{#1}% 
\long\def\@ddisplaytest#1\eqdef#2\eqdef#3\@ddisplaytest{% 
  \if !\noexpand#3!% 
    \toks0 = {#1}% 
  \else 
    \toks2 = {#1}% 
    \begingroup 
  \def\temp{\@removetrailingspaces #2}% 
  \def\\{ }% 
  \xdef\temp{{\expandafter\temp\\ \endmark}}% 
    \endgroup 
    \toks4 = \expandafter\expandafter\expandafter{\expandafter\eqdef\temp}% 
    \edef\@setupeq{\toks0 = {\the\toks2 \the\toks4}}% 
    \@setupeq 
  \fi 
}% 
\long\def\@displaytest#1\eqno#2\eqno#3\@displaytest{% 
  \if !\noexpand#3!% 
    \@ldisplaytest#1\leqno\leqno\@ldisplaytest 
  \else 
    \eqnotrue 
    \leqnofalse 
    \@eqnotoks = {#2}% 
    \@eqtoks = {#1}% 
  \fi 
  \generaldisplay$$% 
}% 
\long\def\@ldisplaytest#1\leqno#2\leqno#3\@ldisplaytest{% 
   \@eqtoks = {#1}% 
   \if !\noexpand#3!% 
  \eqnofalse 
   \else 
  \eqnotrue 
  \leqnotrue 
  \@eqnotoks = {#2}% 
   \fi 
}% 
\newdimen\leftdisplayindent 
\newtoks\previouseverydisplay 
\newtoks\displayhook 
\def\leftdisplays{% 
   \previouseverydisplay = \everydisplay 
   \everydisplay = {\the\previouseverydisplay \the\displayhook \displaysetup}% 
   \def\generaldisplay{% 
  \leftline{% 
     \strut 
     \indent \hskip\leftskip \hskip\leftdisplayindent 
     \dimen0 = \parindent \advance\dimen0 by \leftskip 
       \advance\dimen0 by \leftdisplayindent 
     \advance\displaywidth by -\dimen0 
     \@redefinealignmentdisplays 
     \ifeqno\ifleqno 
    \kern-\dimen0\rlap{$\displaystyle\eqn$}\kern\dimen0 
     \fi\fi 
     $\displaystyle\eq$% 
     \ifeqno\ifleqno\else 
    \hfill $\displaystyle\eqn$% 
     \fi\fi 
  }% 
   }% 
}% 
\def\@redefinealignmentdisplays{% 
  \def\displaylines##1{\displ@y 
    \vcenter{% 
  \let\oldeqprint = \eqprint 
  \def\eqprint{\hfill\oldeqprint}% 
  \halign{\hbox to\displaywidth{$\@lign\displaystyle####\hfil$}\crcr 
      ##1\crcr}}}% 
  \def\eqalignno##1{\displ@y 
    \vcenter{% 
  \halign to\displaywidth{% 
     $\@lign\displaystyle{####}$\tabskip\z@skip 
    &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering 
    &\llap{$\@lign####$}\tabskip\z@skip\crcr 
    ##1\crcr}}}% 
  \def\leqalignno##1{\displ@y 
    \vcenter{% 
  \halign to\displaywidth{% 
     $\@lign\displaystyle{####}$\tabskip\z@skip 
    &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering 
    &\kern-\displaywidth 
     \rlap{\kern-\parindent\kern-\leftskip$\@lign####$}% 
     \tabskip\displaywidth\crcr 
    ##1\crcr}}}% 
}% 
\def\centereddisplays{\let\displaysetup = \relax}% 
\def\monthname{% 
   \ifcase\month 
  \or Jan\or Feb\or Mar\or Apr\or May\or Jun% 
  \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec% 
   \fi 
}% 
\def\fullmonthname{% 
   \ifcase\month 
  \or January\or February\or March\or April\or May\or June% 
  \or July\or August\or September\or October\or November\or December% 
   \fi 
}% 
\def\timestring{\begingroup 
   \count0 = \time 
   \divide\count0 by 60 
   \count2 = \count0   % The hour, from zero to 23. 
   \count4 = \time 
   \multiply\count0 by 60 
   \advance\count4 by -\count0   % The minute, from zero to 59. 
   \ifnum\count4<10 
  \toks1 = {0}% 
   \else 
  \toks1 = {}% 
   \fi 
   \ifnum\count2<12 
  \toks0 = {a.m.}% 
   \else 
  \toks0 = {p.m.}% 
  \advance\count2 by -12 
   \fi 
   \ifnum\count2=0 
  \count2 = 12 
   \fi 
   \number\count2:\the\toks1 \number\count4 \thinspace \the\toks0 
\endgroup}% 
\def\timestamp{\number\day\space\monthname\space\number\year\quad\timestring}% 
\newskip\abovelistskip  \abovelistskip = .5\baselineskip  
\newskip\interitemskip  \interitemskip = 0pt 
\newskip\belowlistskip  \belowlistskip = .5\baselineskip 
\newdimen\listleftindent    \listleftindent = 0pt 
\newdimen\listrightindent   \listrightindent = 0pt     
\def\listcompact{\interitemskip = 0pt \relax}% 
\newdimen\@listindent 
\def\beginlist{% 
   \@listindent = \parindent 
   \advance\@listindent by \listleftindent 
   \everydisplay = \expandafter{\the\everydisplay 
  \advance\displayindent by \@listindent 
  \advance\displaywidth by -\@listindent 
  \advance\displaywidth by -\listrightindent}% 
   \nobreak\vskip\abovelistskip 
   \advance\leftskip by \@listindent 
   \advance\rightskip by \listrightindent 
}% 
\def\printitem{% 
   \par 
   \vskip-\parskip 
   \noindent 
   \llap{\marker \enspace}% 
}% 
\def\endlist{\vskip\belowlistskip}% 
\newcount\numberedlistdepth 
\newcount\itemnumber 
\newcount\itemletter 
\def\numberedmarker{% 
   \ifcase\numberedlistdepth 
   (impossible)% 
   \or \itemnumberout)% 
   \or \itemletterout)% 
   \else *% 
   \fi 
}% 
\def\numberedlist{\environment{@numbered-list}% 
   \advance\numberedlistdepth by 1 
   \itemnumber = 1 
   \itemletter = `a 
   \beginlist 
   \let\marker = \numberedmarker 
   \def\li{% 
  \ifnum\itemnumber=1\else 
     \vskip\interitemskip 
  \fi 
  \printitem 
  \advance\itemnumber by 1 
  \advance\itemletter by 1 
   }% 
}% 
\def\itemnumberout{\number\itemnumber}% 
\def\itemletterout{\char\itemletter}% 
\def\endnumberedlist{% 
   \par 
   \endenvironment{@numbered-list}% 
   \endlist 
}% 
\newcount\unorderedlistdepth 
\def\unorderedmarker{% 
   \ifcase\unorderedlistdepth 
   (impossible)% 
   \or \blackbox 
   \or ---% 
   \else *% 
   \fi 
}% 
\def\unorderedlist{\environment{@unordered-list}% 
   \advance\unorderedlistdepth by 1 
   \beginlist 
   \itemnumber = 1 
   \let\marker = \unorderedmarker 
   \def\li{% 
  \ifnum\itemnumber=1\else 
     \vskip\interitemskip 
  \fi 
  \printitem 
  \advance\itemnumber by 1 
   }% 
}% 
\def\endunorderedlist{% 
   \par 
   \endenvironment{@unordered-list}% 
   \endlist 
}% 
\def\listing#1{% 
   \par \begingroup 
   \@setuplisting 
   \setuplistinghook 
   \input #1 
   \endgroup 
}% 
\let\setuplistinghook = \empty 
\def\@setuplisting{% 
   \uncatcodespecials 
   \obeywhitespace 
   \makeactive\` 
   \makeactive\^^I 
   \def^^L{\vfill\eject}% 
   \tt 
}% 
{% 
   \makeactive\` 
   \gdef`{\relax\lq}% Defeat ligatures. 
}% 
{% 
   \makeactive\^^I 
   \tt 
   \gdef^^I{\hskip8\fontdimen2\font \relax}% 
}% 
\newif\if@tocfileopened 
\newwrite\tocfile 
\def\opentocfile{% 
  \if@tocfileopened\else 
     \global\@tocfileopenedtrue 
     \immediate\openout\tocfile = \jobname.toc 
  \fi 
}% 
\def\writetocentry#1#2{\writenumberedtocentry{#1}{#2}\empty}% 
\def\writenumberedtocentry#1#2#3{% 
  \ifrewritetocfile 
    \opentocfile 
    \toks0 = {\expandafter\noexpand \csname toc#1entry\endcsname}% 
    \def\temp{#2}% 
    \def\cs{#3}% 
    \edef\@wr{% 
  \write\tocfile{% 
    \the\toks0 
    {\sanitize\temp}% 
    \ifx \empty\cs\else{#3}\fi 
    {\noexpand\folio}% 
  }% 
    }% 
    \@wr 
  \fi 
  \ignorespaces 
}% 
\newif\ifrewritetocfile   \rewritetocfiletrue 
\def\readtocfile{% 
   \testfileexistence{toc}% 
   \if@fileexists 
  \input \jobname.toc 
  \ifrewritetocfile 
     \opentocfile 
  \fi 
   \fi 
}% 
\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}% 
\def\tocsectionentry#1#2{\line{\quad\sl #1 \dotfill\ \rm #2}}% 
\def\tocsubsectionentry#1#2{\line{\qquad\rm #1 \dotfill\ #2}}% 
\def\xrdef#1{% 
  \@readauxfile 
  \begingroup 
    \xrlabel{#1}% 
    \edef\@wr{\@writexrdef{\the\xrlabeltoks}}% 
    \@wr 
  \endgroup 
  \ignorespaces 
}% 
\def\@writexrdef#1{% 
  \@writeaux{% 
    \string\gdef\expandafter\string\csname#1\endcsname {\noexpand\folio}% 
  }% 
}% 
\newtoks\xrlabeltoks 
\def\xrlabel#1{% 
   \begingroup 
  \escapechar = `\_ 
  \edef\tts{\tokstostring{#1_}}% 
  \global\xrlabeltoks = \expandafter{\tts}% 
   \endgroup 
}% 
\let\ifxrefwarning = \iftrue 
\def\xrefwarningtrue{\@citewarningtrue \let\ifxrefwarning = \iftrue}% 
\def\xrefwarningfalse{\@citewarningfalse let\ifxrefwarning = \iffalse}% 
\def\xrefn#1{% 
   \@readauxfile 
   \xrlabel{#1}% \xrlabeltoks now has the control sequence name. 
   \toks0 = \expandafter{\csname\the\xrlabeltoks\endcsname}% 
   \expandafter \ifx\the\toks0\relax 
  \if@citewarning 
     \message{\linenumber Undefined label `\tokstostring{#1}'.}% 
  \fi 
  \begingroup 
     \let\spacesub = \space 
     \expandafter\xdef\the\toks0{`{\tt \tokstostring{#1}}'}% 
  \endgroup 
   \fi 
   \the\toks0    % Always produce something. 
}% 
\def\xref#1{p.\thinspace\xrefn{#1}}% 
\newcount\eqnumber 
\def\eqdefn#1{% 
   \@readauxfile 
   \global\advance\eqnumber by 1 
   \begingroup 
     \xrlabel{#1}% \xrlabeltoks now has the control sequence name. 
     \edef\@wr{\@writeeqdef{\the\xrlabeltoks}{\the\eqnumber}}% 
     \@wr 
   \endgroup 
   \expandafter\xdef\csname\the\xrlabeltoks\endcsname{\the\eqnumber}% 
   \ignorespaces 
}% 
\def\@writeeqdef#1#2{% 
   \immediatewriteaux{% 
     \string\gdef\expandafter\string\csname#1\endcsname{#2}% 
   }% 
}% 
\def\eqdef#1{% 
  \@maybedisableeqno 
  \eqno \eqdefn{#1}\eqprint{\the\eqnumber}% 
  \@mayberestoreeqno 
  \ignorespaces 
}% 
\let\@mayberestoreeqno = \empty 
\def\@maybedisableeqno{% 
  \ifinner 
    \global\let\eqno = \relax 
    \global\let\@mayberestoreeqno = \@restoreeqno 
  \fi 
}% 
\let\@primitiveeqno = \eqno 
\def\@restoreeqno{% 
  \global\let\eqno = \@primitiveeqno 
  \global\let\@mayberestoreeqno = \empty 
}% 
\def\eqref#1{% 
   \@readauxfile 
   \xrlabel{#1}% \xrlabeltoks now has the control sequence name. 
   \toks0 = \expandafter{\csname\the\xrlabeltoks\endcsname}% 
   \expandafter \ifx\the\toks0\relax 
  \if@citewarning 
     \message{\linenumber Undefined equation label `\tokstostring{#1}'.}% 
  \fi 
  \begingroup 
     \let\spacesub = \space 
     \expandafter\xdef\the\toks0{`{\tt \tokstostring{#1}}'}% 
  \endgroup 
   \fi 
   \eqprint{\the\toks0}% 
}% 
\def\eqprint#1{(#1)}% 
\begingroup 
   \catcode `\^^M = \active % 
   \globaldefs = 1 % 
   \def\flushleft{\beforejustify % 
  \aftergroup\@endflushleft % 
  \def^^M{\null\hfil\break}% 
  \def\@eateol^^M{}% 
  \@eateol % 
   }% 
   \def\flushright{\beforejustify % 
  \aftergroup\@endflushright % 
  \def^^M{\break\null\hfil}% 
  \def\@eateol^^M{\hfil\null}% 
  \@eateol % 
   }% 
   \def\center {\beforejustify % 
  \aftergroup\@endcenter % 
  \def^^M{\hfil\break\null\hfil}% 
  \def\@eateol^^M{\hfil\null}% 
  \@eateol % 
   }% 
\endgroup 
\def\@endflushleft{\unpenalty{\parfillskip = 0pt plus 1 fil\par}\ignorespaces}% 
\def\@endflushright{% Remove the \hfil\null\break we just put on. 
   \unskip \setbox0=\lastbox \unpenalty 
   {\parfillskip = 0pt \par}\ignorespaces 
}% 
\def\@endcenter{% Remove the \hfil\null\break we just put on. 
   \unskip \setbox0=\lastbox \unpenalty 
   {\parfillskip = 0pt plus 1fil \par}\ignorespaces 
}% 
\def\beforejustify{% 
   \par\noindent 
   \catcode`\^^M = \active 
   \checkenv \environmenttrue 
}% 
\newcount\abovecolumnspenalty   \abovecolumnspenalty = 10000 
\newcount\@linestogo     % Lines remaining to process. 
\newcount\@linestogoincolumn % Lines remaining in column. 
\newcount\@columndepth   % Number of lines in a column. 
\newdimen\@columnwidth   % Width of each column. 
\newtoks\crtok  \crtok = {\cr}% 
\newcount\currentcolumn 
\def\makecolumns#1/#2: {\par \begingroup 
   \@columndepth = #1 
   \advance\@columndepth by #2 
   \advance\@columndepth by -1 
   \divide \@columndepth by #2 
   \@linestogoincolumn = \@columndepth 
   \@linestogo = #1 
   \currentcolumn = 1 
   \def\@endcolumnactions{% 
  \ifnum \@linestogo<2  
     \the\crtok \egroup \endgroup \par % End \valign and \makecolumns. 
  \else 
     \global\advance\@linestogo by -1 
     \ifnum\@linestogoincolumn<2 
    \global\advance\currentcolumn by 1 
    \global\@linestogoincolumn = \@columndepth 
    \the\crtok 
     \else 
    &\global\advance\@linestogoincolumn by -1 
     \fi 
  \fi 
   }% 
   \makeactive\^^M 
   \letreturn \@endcolumnactions 
   \@columnwidth = \hsize 
     \advance\@columnwidth by -\parindent 
     \divide\@columnwidth by #2 
   \penalty\abovecolumnspenalty 
   \noindent % It's not a paragraph (usually). 
   \valign\bgroup 
     &\hbox to \@columnwidth{\strut \hsize = \@columnwidth ##\hfil}\cr 
}% 
\newcount\footnotenumber 
\newdimen\footnotemarkseparation \footnotemarkseparation = .5em 
\newskip\interfootnoteskip \interfootnoteskip = 0pt 
\newtoks\everyfootnote 
\newdimen\footnoterulewidth \footnoterulewidth = 2true in 
\newdimen\footnoteruleheight \footnoteruleheight = 0.4pt 
\newdimen\belowfootnoterulespace \belowfootnoterulespace = 2.6pt 
\let\@plainfootnote = \footnote 
\let\@plainvfootnote = \vfootnote 
\def\vfootnote#1{\insert\footins\bgroup 
  \interlinepenalty\interfootnotelinepenalty 
  \splittopskip\ht\strutbox % top baseline for broken footnotes 
  \advance\splittopskip by \interfootnoteskip 
  \splitmaxdepth\dp\strutbox 
  \floatingpenalty\@MM 
  \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip 
  \everypar = {}% 
  \the\everyfootnote 
  \vskip\interfootnoteskip 
  \indent\llap{#1\kern\footnotemarkseparation}\footstrut\futurelet\next\fo@t 
}% 
\def\footnoterule{\dimen0 = \footnoteruleheight 
  \advance\dimen0 by \belowfootnoterulespace 
  \kern-\dimen0 
  \hrule width\footnoterulewidth height\footnoteruleheight depth0pt 
  \kern\belowfootnoterulespace 
  \vskip-\interfootnoteskip 
}% 
\def\numberedfootnote{% 
  \global\advance\footnotenumber by 1 
  \@plainfootnote{$^{\number\footnotenumber}$}% 
}% 
\newdimen\paperheight \paperheight = 11in 
\def\topmargin{\afterassignment\@finishtopmargin \dimen0}% 
\def\@finishtopmargin{% 
  \dimen2 = \voffset		% Remember the old \voffset. 
  \voffset = \dimen0 \advance\voffset by -1in 
  \advance\dimen2 by -\voffset	% Compute the change in \voffset. 
  \advance\vsize by \dimen2	% Change type area accordingly. 
}% 
\def\advancetopmargin{% 
  \dimen0 = 0pt \afterassignment\@finishadvancetopmargin \advance\dimen0 
}% 
\def\@finishadvancetopmargin{% 
  \advance\voffset by \dimen0 
  \advance\vsize by -\dimen0 
}% 
\def\bottommargin{\afterassignment\@finishbottommargin \dimen0}% 
\def\@finishbottommargin{% 
  \@computebottommargin		% Result in \dimen2. 
  \advance\dimen2 by -\dimen0	% Compute the change in the bottom margin. 
  \advance\vsize by \dimen2	% Change the type area. 
}% 
\def\advancebottommargin{% 
  \dimen0 = 0pt \afterassignment\@finishadvancebottommargin \advance\dimen0 
}% 
\def\@finishadvancebottommargin{% 
  \advance\vsize by -\dimen0 
}% 
\def\@computebottommargin{% 
  \dimen2 = \paperheight	% The total paper size. 
  \advance\dimen2 by -\vsize	% Less the text size. 
  \advance\dimen2 by -\voffset	% Less the offset at the top. 
  \advance\dimen2 by -1in	% Less the default offset. 
}% 
\newdimen\paperwidth \paperwidth = 8.5in 
\def\leftmargin{\afterassignment\@finishleftmargin \dimen0}% 
\def\@finishleftmargin{% 
  \dimen2 = \hoffset		% Remember the old \hoffset. 
  \hoffset = \dimen0 \advance\hoffset by -1in 
  \advance\dimen2 by -\hoffset	% Compute the change in \hoffset. 
  \advance\hsize by \dimen2	% Change type area accordingly. 
}% 
\def\advanceleftmargin{% 
  \dimen0 = 0pt \afterassignment\@finishadvanceleftmargin \advance\dimen0 
}% 
\def\@finishadvanceleftmargin{% 
  \advance\hoffset by \dimen0 
  \advance\hsize by -\dimen0 
}% 
\def\rightmargin{\afterassignment\@finishrightmargin \dimen0}% 
\def\@finishrightmargin{% 
  \@computerightmargin		% Result in \dimen2. 
  \advance\dimen2 by -\dimen0	% Compute the change in the right margin. 
  \advance\hsize by \dimen2	% Change the type area. 
}% 
\def\advancerightmargin{% 
  \dimen0 = 0pt \afterassignment\@finishadvancerightmargin \advance\dimen0 
}% 
\def\@finishadvancerightmargin{% 
  \advance\hsize by -\dimen0 
}% 
\def\@computerightmargin{% 
  \dimen2 = \paperwidth		% The total paper size. 
  \advance\dimen2 by -\hsize	% Less the text size. 
  \advance\dimen2 by -\hoffset	% Less the offset at the left. 
  \advance\dimen2 by -1in	% Less the default offset. 
}% 
\newskip\abovedoublecolumnskip \abovedoublecolumnskip = \bigskipamount 
\newskip\belowdoublecolumnskip \belowdoublecolumnskip = \bigskipamount 
\newdimen\gutter \gutter = 2pc 
\newdimen\doublecolumnhsize 
\newbox\@partialpage \newdimen\singlecolumnhsize \newdimen\singlecolumnvsize 
\newtoks\previousoutput 
\def\doublecolumns{% 
   \doublecolumnhsize = \hsize   % If \hsize changed, get the new value. 
   \par   % Shouldn't start in horizontal mode. 
   \previousoutput = \expandafter{\the\output}% 
   \advance\doublecolumnhsize by -\gutter 
   \divide\doublecolumnhsize by 2 
   \output = {% 
  \global\setbox\@partialpage = 
     \vbox{\unvbox255\vskip\abovedoublecolumnskip}% 
   }% 
   \pagegoal = \pagetotal 
   \break % Now expand the \output just above. 
   \output = {\doublecolumnoutput}% 
   \singlecolumnhsize = \hsize 
   \singlecolumnvsize = \vsize 
   \hsize = \doublecolumnhsize 
   \vsize = 2\vsize 
}% 
\def\@doublecolumnsplit{% 
   \splittopskip = \topskip 
   \splitmaxdepth = \maxdepth 
   \dimen0 = \singlecolumnvsize 
  \advance\dimen0 by -\ht\@partialpage 
  \advance\dimen0 by -\ht\footins 
  \ifvoid\footins\else \advance\dimen0 by -\skip\footins \fi 
  \advance\dimen0 by -\ht\topins 
  \ifvoid\topins\else \advance\dimen0 by -\skip\topins \fi 
   \begingroup 
  \vbadness = 10000 
  \global\setbox1 = \vsplit255 to \dimen0 
  \wd1 = \hsize 
  \global\setbox3 = \vsplit255 to \dimen0 
  \wd3 = \hsize	 
   \endgroup 
   \global\setbox4 = \vbox{\unvbox255 \penalty\outputpenalty}% 
   \global\setbox255 
     = \vbox{% 
     \unvbox\@partialpage 
     \hbox to \singlecolumnhsize{\box1\hfil\box3}% 
   }% 
}% 
\def\doublecolumnoutput{% 
   \@doublecolumnsplit 
   \hsize = \singlecolumnhsize % Local to the \output group. 
   \vsize = \singlecolumnvsize 
   \the\previousoutput 
   \unvbox4 
}% 
\def\singlecolumn{% 
   \par % Shouldn't start in horizontal mode. 
   \output = {\global\setbox1 = \box255}% 
   \pagegoal = \pagetotal 
   \break     % Exercise the page builder, i.e., \output. 
   \setbox255 = \box1 % Retrieve what the fake \output set. 
   \begingroup 
  \singlecolumnvsize = \ht\@partialpage 
  \advance\singlecolumnvsize by \ht\footins 
  \ifvoid\footins\else \advance\singlecolumnvsize by \skip\footins\fi 
  \advance\singlecolumnvsize by \ht\topins 
  \ifvoid\topins\else \advance\singlecolumnvsize by \skip\topins\fi 
  \dimen0 = \ht255 \divide\dimen0 by 2 
  \advance\singlecolumnvsize by \dimen0 
  \advance\singlecolumnvsize by .5\baselineskip 
  \@doublecolumnsplit 
   \endgroup 
   \hsize = \singlecolumnhsize 
   \vsize = \singlecolumnvsize 
   \output = \expandafter{\the\previousoutput}% 
   \unvbox255 
   \vskip\belowdoublecolumnskip 
   \nointerlineskip 
}% 
\let\wlog = \@plainwlog 
\catcode`@ = \other 
\def\fmtname{eplain}% 
\def\eplain{t}% 
{\edef\plainversion{\fmtversion}% 
 \xdef\fmtversion{1.9: 26 April 1991 (and plain \plainversion)}% 
}% 
