\input hyperbasics

\expandafter\edef\csname hypers@fe\endcsname{\catcode
                                            `\noexpand@=\the\catcode`\@}%
\catcode`\@=11
{\setbox0=\hbox{
\errhelp{lhyper needs a higher revision of hyperbasics.}
\ifx\hyperv@rsion\hyper@ndefined
 \errmessage{Need at least version 1 of hyperbasics. You have %
             version 0}%
 \egroup\egroup\expandafter\stop
\else
 \ifnum2>\hyperv@rsion
 \errmessage{Need at least version 1 of hyperbasics. You have %
             version \hyperv@rsion}%
 \egroup\egroup\expandafter\expandafter\expandafter\stop
 \fi
\fi}}

\let\hypernoname=\relax
% Change all places where \@currentlabel is being set.
% Tempoarily, put a \hyperdef at precisely those points.
\def\refstepcounter#1{\stepcounter{#1}\let\@tempa\protect
\def\protect{\noexpand\protect\noexpand}%
\hyperdef\hypernoname{#1}{\csname the#1\endcsname}{}%
\edef\@currentlabel{\hyper@\hyperpr@ref\hypernoname%
                 {\csname p@#1\endcsname\csname the#1\endcsname}}%
\let\protect\@tempa}%

% Equations are special too
\def\equation{$$% $$ BRACE MATCHING HACK
\let\hyper@n@=\hyperdef
\let\hyperdef=\hyper@nique\refstepcounter{equation}%
\let\hyperdef=\hyper@n@\let\hyper@qn@=\theequation
\def\theequation{\hyperdef\hypernoname{equation}{\hyper@qn@}{\hyper@qn@}}%
}


\def\eqnarray{\stepcounter{equation}%
\global\@eqnswtrue\m@th
\global\@eqcnt\z@\tabskip\@centering\let\\\@eqncr
\let\hyper@qn@=\theequation
\hyper@nique\hypernoname{equation}{\hyper@qn@}{}%
\edef\@currentlabel{%
\hyper@\hyperpr@ref\hypernoname{\theequation}}%
$$%
\def\theequation{\hyperdef\hypernoname{equation}{\hyper@qn@}{\hyper@qn@}}%
\edef\@currentlabel{%
\hyper@\hyperpr@ref\noexpand\hypernoname{\noexpand\hyper@qn@}}%
\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering
 $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
 \hskip 2\arraycolsep \hfil${##}$\hfil
 &\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil
  \tabskip\@centering&\llap{##}\tabskip\z@\cr}

% footnotes are special. We simply redefine all occurances of \@thefnmark.

\def\footnote{\@ifnextchar[{\@xfootnote}{\stepcounter{\@mpfn}%
    \hyper@nique\hypernoname{footnote}{\thempfn}{}%
    \begingroup\let\protect\noexpand
      \xdef\@thefnmark{\hyper@\hyperpr@ref\hypernoname
                       {\thempfn}}\endgroup
    \@footnotemark\@footnotetext}}

\def\@xfootnote[#1]{
  \hyper@nique\hypernoname{footnote}{\thempfn}{}%
  \begingroup \csname c@\@mpfn\endcsname #1\relax
  \let\protect\noexpand
  \xdef\@thefnmark{\hyper@\hyperpr@ref\hypernoname
                   {\thempfn}}\endgroup
  \@footnotemark\@footnotetext}

\def\footnotemark{\@ifnextchar[{\@xfootnotemark}{\stepcounter{footnote}%
    \hyper@nique\hypernoname{footnote}{\thefootnote}{}%
    \begingroup\let\protect\noexpand
      \xdef\@thefnmark{\hyper@\hyperpr@ref\hypernoname
                       {\thefootnote}}\endgroup
    \@footnotemark}}

\def\@xfootnotemark[#1]{\begingroup \c@footnote #1\relax
    \hyper@nique\hypernoname{footnote}{\thefootnote}{}%
  \let\protect\noexpand
  \xdef\@thefnmark{\hyper@\hyperpr@ref\hypernoname
                   {\thefootnote}}\endgroup \@footnotemark}

\def\footnotetext{\@ifnextchar [{\@xfootnotenext}%
  {\begingroup\let\protect\noexpand
    \hyper@nique\hypernoname{footnote}{\thempfn}{}%
     \xdef\@thefnmark{\hyper@\hyperpr@ref\hypernoname
                      {\thempfn}}\endgroup
   \@footnotetext}}

\def\@xfootnotenext[#1]{\begingroup \csname c@\@mpfn\endcsname #1\relax
  \let\protect\noexpand
    \hyper@nique\hypernoname{footnote}{\thempfn}{}%
  \xdef\@thefnmark{\hyper@\hyperpr@ref\hypernoname
                   {\thempfn}}\endgroup \@footnotetext}


% The footnote has to be defined when insertion being generated.
\def\hyper@eat#1\hyperpr@ref#2#3#4#5{#5}%
\long\def\@footnotetext#1{\insert\footins{\reset@font\footnotesize
   \interlinepenalty\interfootnotelinepenalty
   \splittopskip\footnotesep
   \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
   \hsize\columnwidth \@parboxrestore
  \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
   {\edef\@thefnmark{\expandafter\hyper@eat\@thefnmark}%
    \edef\@thefnmark{\noexpand\hyperdef\noexpand\hypernoname{footnote}%
    {\@thefnmark}{\@thefnmark}}%
    \@makefntext
    {\rule{\z@}{\footnotesep}\ignorespaces
     #1\strut}}}}

% Similarly references are special
\def\@lbibitem[#1]#2{\item[\hyperdef\hypernoname{reference}{#1}%
                          {\@biblabel{#1}}\hfill]\if@filesw
     {\def\protect##1{\string ##1\space}\immediate
      \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}

\def\@bibitem#1{\@noitemargtrue\@item
               [\hyperdef\hypernoname{reference}{\the\value{\@listctr}}%
               {\the\value{\@listctr}}]\if@filesw \immediate\write\@auxout
      {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}

\def\bibcite#1#2{\expandafter\xdef\csname b@#1\endcsname{\hyper@\hyperpr@ref
                {}{reference}{#2}{#2}}%
                \expandafter\gdef\csname hyperb@#1\endcsname{#2}}


%
% Sectioning macros
%
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
    \let\@svsec\@empty\else
    \let\hyper@n@=\hyperdef
    \let\hyperdef=\hyper@nique
    \refstepcounter{#1}%
    \let\hyperdef=\relax\let\hypernoname=\relax
    \edef\@svsec{\hyperdef\hypernoname{#1}%
      {\csname the#1\endcsname}{\csname the#1\endcsname\hskip 1em}}%
    \let\hyperdef=\hyper@n@\fi
    \@tempskipa #5\relax
     \ifdim \@tempskipa>\z@
       \begingroup #6\relax
         \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
       \endgroup
      \csname #1mark\endcsname{#7}\addcontentsline
        {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                     \protect\numberline{\hyper@\hyperpr@ref\hypernoname
                     {\hbox{\hskip1pt\relax\csname the#1\endcsname}%
                      }\hskip-1pt\relax}\fi
                   #7}\else
       \def\@svsechd{#6\hskip #3\relax  %% \relax added 2 May 90
                  \@svsec #8\csname #1mark\endcsname
                     {#7}\addcontentsline
                          {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                            \protect\numberline{\hyper@\hyperpr@ref\hypernoname
                          {\hbox{\hskip1pt\relax\csname the#1\endcsname}%
                           }\hskip-1pt\relax}\fi
                      #7}}\fi
    \@xsect{#5}}

%
% Captions
%
\def\caption{\let\hyper@n@=\hyperdef
            \let\hyperdef=\hyper@nique
            \refstepcounter\@captype
            \let\hyperdef=\hyper@n@
            \@dblarg{\@caption\@captype}}
\long\def\@caption#1[#2]#3{\par\begingroup
   \@parboxrestore
   \normalsize
   \@makecaption{\hyperdef\hypernoname{#1}{\csname the#1\endcsname}%
                 {\csname fnum@#1\endcsname}}{\ignorespaces #3}\par
   \addcontentsline{\csname
   ext@#1\endcsname}{#1}{\protect\numberline{\csname
   the#1\endcsname}{\ignorespaces #2}}%
 \endgroup}

%
% toc
%
\def\@outputpage{\begingroup\catcode`\ =10
    \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
   \if@specialpage
    \global\@specialpagefalse\@nameuse{ps@\@specialstyle}\fi
    \if@twoside
      \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
           \let\@themargin\oddsidemargin
         \else \let\@thehead\@evenhead
         \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
    \fi\fi
    \shipout
    \vbox{\reset@font %% RmS 91/08/15
          {\let\hyperdef\relax\let\hyperref\relax\let\hypernoname\relax\setbox0=\hbox{\@thefoot}%
           \global\ifnum\wd0=0\let\hyper@mpty=\hss\else\let\hyper@mpty=\relax
          \fi}%
          \normalsize \baselineskip\z@ \lineskip\z@
          \let\par\@@par %% 15 Sep 87
          \vskip \topmargin \moveright\@themargin
          \vbox{\setbox\@tempboxa
                  \vbox to\headheight{\vfil \hbox to\textwidth
                                      {\let\label\@gobble \let\index\@gobble
                                       \let\glossary\@gobble %% 21 Jun 91
                                        \@thehead}}% %% 22 Feb 87
                \dp\@tempboxa\z@
                \box\@tempboxa
                \vskip \headsep
                \box\@outputbox
                \baselineskip\footskip
                \hbox to\textwidth{\let\label\@gobble
                          \let\index\@gobble  %% 22 Feb 87
                          \let\glossary\@gobble %% 21 Jun 91
                          \hyperdef\hypernoname{page}{\thepage}%
                          {\hyper@mpty\@thefoot}%
                          }}}\global\@colht\textheight
          \endgroup\stepcounter{page}\let\firstmark\botmark}


\edef\contentsline#1#2#3{\noexpand\hyper@nique\noexpand\hypernoname
                        {page}{#3}{}%
                        \noexpand\csname l@#1\noexpand\endcsname{#2}%
                        {\hyper@\hyperpr@ref\noexpand\hypernoname{#3}}}

% Some style files change this setup. After loading a style file check if
% the corresponding .hty file exists. Load it in that case.
\newread\hyper@inputcheck
\def\hyper@nput #1.sty{\input #1.sty\relax
                      \immediate\openin\hyper@inputcheck #1.hty\relax
                      \ifeof\hyper@inputcheck\relax
                        \immediate\closein\hyper@inputcheck\relax
                      \else\immediate\closein\hyper@inputcheck\relax
                        \input #1.hty\relax
                      \fi}%
\def\@documentstyle[#1]#2{\makeatletter
  \def\@optionlist{#1}\gdef\@optionfiles{}\hyper@nput #2.sty\relax
  \let\@elt\hyper@nput \@optionfiles \let\@elt\relax \makeatother}

\def\hyper@pen#1{\immediate\openin\hyper@inputcheck #1.hty\relax
                \ifeof\hyper@inputcheck\relax
                  \immediate\closein\hyper@inputcheck\relax
                \else\immediate\closein\hyper@inputcheck\relax
                  \input #1.hty\relax
                \fi}

\def\enddocument{\@checkend{document}\clearpage\begingroup
\if@filesw \immediate\closeout\@mainaux
\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
\def\bibcite{\@testdef {hyperb}}\@tempswafalse \makeatletter\input \jobname.aux
\if@tempswa \@@warning{Label(s) may have changed.  Rerun to get
cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}

\hypers@fe
\endinput
% Leave this line in the file