%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% th4.4ht                               2009-05-21-09:32 %
% Copyright (C) 1997--2009       Eitan M. Gurari         %
%                                                        %
% This work may be distributed and/or modified under the %
% conditions of the LaTeX Project Public License, either %
% version 1.3c of this license or (at your option) any   %
% later version. The latest version of this license is   %
% in                                                     %
%   http://www.latex-project.org/lppl.txt                %
% and version 1.3c or later is part of all distributions %
% of LaTeX version 2005/12/01 or later.                  %
%                                                        %
% This work has the LPPL maintenance status "maintained".%
%                                                        %
% This Current Maintainer of this work                   %
% is Eitan M. Gurari.                                    %
%                                                        %
% If you modify this program your changing its signature %
% with a directive of the following form will be         %
% appreciated.                                           %
%            \message{signature}                         %
%                                                        %
%                             gurari@cse.ohio-state.edu  %
%                 http://www.cse.ohio-state.edu/~gurari  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\immediate\write-1{version 2009-05-21-09:32}


\ifHtml
   \:CheckOption{javascript}
      \if:Option  \else\:CheckOption{th4}\fi
   \if:Option
      \ScriptCommand{\JavaScript}{\vbox\bgroup \linepenalty1000 \NoFonts
  \Configure{HVerbatim+}{\z@}{\nobreak\space}%
  \A:JavaScript }{\B:JavaScript \EndNoFonts
  \ht:special{t4ht@(}\egroup  \ht:special{t4ht@)}}
\NewConfigure{JavaScript}[2]{\def\A:JavaScript{\ht:everypar{}#1}%
   \def\B:JavaScript{#2}}
\def\javascript#1{\b:jv#1\e:jv}
\def\b:jv{\begingroup \vrb:tt
   \leftskip\z@  \parindent\z@
   \Configure{HVerbatim}{}{}{}{}\Configure{HVerbatim+}{\z@}{ }%
   \NoFonts \A:JavaScript \ht:special{t4ht@@}}
\def\e:jv{\ht:special{t4ht@@}%
   \B:JavaScript\EndNoFonts\endgroup}

   \else
      \Log:Note{for javascript support,
          use the command line option `javascript'}
   \fi
   \:CheckOption{java}
       \if:Option  \else\:CheckOption{th4}\fi
   \if:Option
      \Odef\Applet[#1]#2{\Appl:[#1]#2,,,!*?: }
\def\Appl:[#1]#2,#3,#4,#5!*?: {%
  \def\:temp{#3}\def\LastApplet{#4}%
  \HCode{<applet code="#2.class"
    \ifx \:temp\empty \else width="#3" \fi
    \ifx \LastApplet\empty \else HEIGHT="#4" \fi #1\Hnewline >}%
  \xdef\LastApplet{#2}\Applet:Needs{#2}}
\def\EndApplet{\HCode{</applet>}}

\def\AppletInfo{\def\Applet:Needs##1}
\AppletInfo{\Needs-{needs #1.class}}

   \else
      \Log:Note{for java support,
          use the command line option `java'}
   \fi
   \:CheckOption{image-maps}
      \if:Option  \else\:CheckOption{th4}\fi
   \if:Option
      \Odef\Ar:a[#1]#2{{\def\tag:A{area}\Link[#1 ]{#2}{}\EndLink}}
\Odef\Map[#1]#2#3{%
   \def\:tempd{\Map:[#1]{#2}{#3}}%
   \rm:attr{#1}\ifx \:tempB\empty  \expand:after{\let\:tempc}\csname
                   cw:)#2\endcsname
\ifx\:tempc\relax\else
   \edef\:tempd{\noexpand\in:mp\:tempc!*?: {#1}}%
   \def\:temp{#3}\ifx \:temp\empty\else
      \Tag{)#3}{\:tempc}%
\fi \fi
\fi  \:tempd}

\def\in:mp#1=#2=#3==#4!*?: #5{\IMG:LINK{#1}{#4#5}{#2}{#3}}
\def\rm:attr#1{\edef\:tempB{\noexpand\rm:atr#1 !*?: }\:tempB}
\def\rm:atr#1 #2!*?: {\def\:tempB{#1}}

\Odef\Map:[#1]#2#3{%
   \NewHaddr\:tempA    \def\:temp##1-{##1-imap}%
\edef\:tempA{\expandafter\:temp\:tempA}%
%
   \NewHaddr\alt:map
   \def\:temp{#3}\ifx \:temp\:empty\else
   \rm:attr{#1}%
   \Tag{)#3}{\alt:map=\:tempA=#2==\:tempB}\fi
\edef\:tempB{\noexpand\IMG:LINK{\noexpand\alt:map}{#1}}\:tempB
   \:tempA{#2}\let\:Map\empty
%
   \HCode{<map\Hnewline name="\GetHname\:tempA" id="imap-\:tempA">}%
   \def\EndMap{%
      \HPage[\alt:map]{}{\let\set:mp\st:mp \:Map}\EndHPage{}%
      \HCode{</map>}%
      \let\u:map\empty}}

\let\set:mp\relax
\def\st:mp#1#2#3{\def\:temp{#1#2}\ifx \:temp\empty  \else
      [\Link[#1]{#2}{}#3\EndLink]
   \fi }
\def\IMG:LINK#1#2#3#4{\Link[\RefFile{#1}]{}{}%
   {\def\tag:A{img}\def\HREF:{src=}\def\empty:lnk{/}%
    \Link[#2 alt="textual map"  usemap="\GetHref#3"]{#4}{}}\EndLink}
\def\RectArea(#1){\bgroup\def\:tempa{\M:nMx#1,}\def\:tempb{rect}\Are:}
\def\CircleArea(#1){\bgroup\def\:tempa{#1}\def\:tempb{circle}\Are:}
\def\PolyArea(#1){\bgroup\def\:tempa{#1}\def\:tempb{poly}\Are:}
\def\M:nMx#1,#2,#3,#4,{\M:n{#1}{#3},%
                       \M:n{#2}{#4},\M:x{#1}{#3},\M:x{#2}{#4}}
\Odef\Are:[#1]#2#3{%
   \xdef\:Map{\:Map\set:mp{#1}{#2}{#3}}%
   \Ar:a[#1\Hnewline shape="\:tempb"\Hnewline
         coords="\:tempa"\Hnewline alt="#3"]{#2}\egroup}
\def\M:n#1#2{\ifnum #1<#2 #1\else #2\fi}
\def\M:x#1#2{\ifnum #1<#2 #2\else #1\fi}

   \else
      \Log:Note{for image maps support,
          use the command line option `image-maps'}
   \fi
   \:CheckOption{frames-}
      \if:Option  \else\:CheckOption{frames}\fi
      \if:Option  \else\:CheckOption{th4}\fi
   \if:Option
      \def\HorFrames{\def\:tempa{cols}\:Frames}
\def\VerFrames{\def\:tempa{rows}\:Frames}
\Odef\:Frames[#1]#2{%
   \PushStack\Frm:Stc{</frameset>}%
   \HCode{<frameset\Hnewline \:tempa="#2" #1>}}
\def\NoFrames{%
   \PopStack\Frm:Stc\:temp
   \PushStack\Frm:Stc{</body></noframes></frameset>}
   \HCode{<noframes><body>}}
\def\EndFrames{\PopStack\Frm:Stc\:tempc \HCode{\:tempc}}
\Odef\Frame[#1]#2{{\def\HREF:{ src=}\def\tag:A{frame}%
                   \def\empty:lnk{ /}\Link[#1]{#2}{}}}

      \Log:Note{for frames support,
          use the command line option `frames-' or `frames'}
   \fi
   \:CheckOption{ShowFont}
      \if:Option  \else\:CheckOption{th4}\fi
   \if:Option
      \:CheckOption{ShowFont}     \if:Option
   \def\HObey{\SaveEverypar \par \ht:everypar{}%
   {\parindent\z@ \leftskip\z@ \leavevmode
    \HCode{ <table \Hnewline \:zbsp{HObey}
          width="100\%"><tr class="HObey"><td\Hnewline
      class="HObey"><pre class="HObey">}\par}}
\def\EndHObey{\HCode{</pre>}\IgnoreIndent
    \end:TTT \RecallEverypar}

   \def\ShowFont#1{{\ifx \sevenrm\Undef \let\sevenrm\rm\fi
      \Picture*{ \a:@Picture{ShowFont}}\begingroup   \HObey
         % Variants of Knuth's macros
         \postdisplaypenalty=-10000 \global\tmp:cnt=0 #1
         \tabskip0.06\hsize  \def\:{\setbox0=\hbox{\char\tmp:cnt}%
  \ifdim\ht0>7.5pt\reposition
  \else\ifdim\dp0>2.5pt\reposition\fi\fi
  \box0\global\advance\tmp:cnt by1 }%
\def\cr:line{\cr  \noalign{\nointerlineskip}
  \multispan{17}\hrulefill&
  \cr \noalign{\nointerlineskip}}%
\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}%
\def\chartLine##1{\hbox to 13.8pt{\hfil\sevenrm ##1 }}%
\HAssign\:tempc0
\def\:tempd{\chartLine\:tempc
   \vrule   &\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\cr:line
   \noalign{\nointerlineskip}%
   \gHAdvance\:tempc by 8 \ifnum \:tempc<256  \expandafter\:tempd \fi}%
%
         \halign to\hsize\bgroup  \lower4.5pt\vbox to14pt{}%
##\tabskip\z@ plus10pt& &\hfil##\hfil&\vrule##\cr
\lower6.5pt\null
\chartLine{}\vrule   &\sevenrm 0&&\sevenrm 1&&\sevenrm
   2&&\sevenrm 3&&\sevenrm 4&&\sevenrm 5&&\sevenrm 6&&\sevenrm 7&\cr:line
\:tempd \cr
%
         \egroup
      \EndHObey  \endgroup  \EndPicture}}
   \csname newread\endcsname\in:strm
\def\Uii:{\expandafter\Uii:o\in:buf xxxxxxxxx;}
\def\Uii:o#1x#2#3#4xxxx;{#2#3}
\catcode`\@=6
\catcode`\#=12
\def\Uiv:{\expandafter\Uiv:o\in:buf '&#xxxxxxxxx;}
\def\Uiv:o@1'&#x@2@3@4@5@6xxxx;{@2@3@4@5}
\catcode`\@=11
\catcode`\#=6

\def\:gobbleM#1->{}
\def\Uni:symbols{\ifnum \char:n<256
  \HCode{\Hnewline<tr><td>}\char:n{}\HCode{</td>}
  \bgroup \catcode`\#=12 \catcode`\\=12
      \catcode`\%=12 \catcode`\{=12 \catcode`\}=12
      \catcode`\_=12 \catcode`\^=12 \catcode`\~=12
%     \ifeof\in:strm \else
        \read\in:strm to\in:buf
        \ifeof\in:strm  \gHAssign\char:n=256 \else
           \def\:temp{\par}
           \ifx\in:buf\:temp\else
              \edef\:tempa{\Uiv:}\def\:temp{xxxx}
              \ifx \:temp\:tempa \let\:tempa=\:gobble
              \else              \let\:tempa=\empty\fi
             \HCode{<td>}
              \:tempa{\Picture{http://charts.unicode.org/Unicode.charts%
                                    /Small.Glyphs/\Uii:/U\Uiv:.gif}}
                    \HCode{</td><td>}
              \:tempa{\Picture{http://www.w3.org/TR/PR-math/chap6/glyphs/%
                                    \Uii:/U\Uiv:.gif}}
              \HCode{</td><td>}{\font:nm\char\char:n}
              \HCode{</td><td>}{\font:nm \Picture+{}\char
                                 \char:n\EndPicture}
              \HCode{</td><td class="htf">}\:tempa\Uiv:
                 \:tempa\:gobble{\tt\expandafter\:gobbleM\meaning\in:buf}
              \HCode{</td>}
     \fi\fi%\fi
   \egroup
   \HCode{</tr>}
   \HAdvance\char:n by 1 \expandafter\Uni:symbols\fi}
\def\ShowFontU#1#2{%
   \font\font:nm=#2
   \openin\in:strm=#1\relax
   \ifeof\in:strm  \immediate\write16{.........can't  open #1}\else
     \read\in:strm to\in:buf\relax
     \HAssign\char:n=0 \HCode{<table class="unicodes" border="1"><tr>
        <td>char<br\xml:empty>number</td>
        <td>unicode<br\xml:empty>org</td>
        <td>ams<br\xml:empty>org</td>
        <td>htf +<br\xml:empty>browser</td>
        <td>actual<br\xml:empty>(la)tex<br\xml:empty>symbol</td>
        <td>htf<br\xml:empty>entry</td>
        </tr>}
        \Uni:symbols
     \HCode{</table>}
     \Css{.unicodes{border:solid 1px;}}
     \Css{.unicodes td{text-align:center;}}
     \Css{.unicodes td.htf{text-align:left;}}
   \fi
   \closein\in:strm}

\fi

   \fi
\fi
\:CheckOption{th4}\if:Option
   \edef\:temp{\meaning\everypar}
   \edef\:tempa{\string\everypar}
   \ifx \:temp\:tempa
      \let\ht:everypar\everypar
   \fi
   \def\Verb{\bgroup  \no:catcodes0{255}{12}\catcode`\ = 10
   \catcode`\^^M = 10 \catcode`\^^I = 10  \leavevmode \:ctgs}

\ifHtml  \def\:ctgs#1{\def\:eat##1#1{{\vrb:tt
   ##1}\egroup}\:eat }

\fi

   \long\def\c:Item:#1#2{\c:def\a:Item{#1}\c:def\b:Item{#2}}
\def\Begin:Block#1{\begingroup \def\:EndBlock{#1}}

\def\End:Block#1{%
   \expandafter\ifx \csname :EndBlock\endcsname\relax
      \:warning{Block #1 is already closed}%
   \else
      \def\:test{#1}%
      \ifx \:test\:EndBlock \endgroup
      \else
      \:warning{End environment #1 within
               environment \:EndBlock?}%
   \fi\fi}
   \Def:Section\Chapter{\theChapterCounter}{#1}
\Def:Section\LikeChapter{\theChapterCounter}{#1}
\Def:Section\Appendix{\theChapterCounter}{#1}
\NewConfigure{Chapter}[4]{%
  \Configure:Sec {Chapter}{#3}%
     {#4\xdef\:curch{Q1-\file:id-\TitleCount }%
}%
     {\ifnum \ChapterCounter<1           \gdef\ChapterCounter{1}%
                        \else \gHAdvance\ChapterCounter  1 \fi
\ifnum \pageno<0 \global\pageno1 \fi
   \gHAssign\SectionCounter0
%
#1}{#2}}
\NewConfigure{Appendix}[4]{%
  \Configure:Sec {Appendix}{#3}%
     {#4\xdef\:curch{Q1-\file:id-\TitleCount }%
}%
     {\ifnum \pageno<0 \global\pageno1 \fi
\ifnum \ChapterCounter<0       \gHAdvance\ChapterCounter  -1
                         \else \gdef\ChapterCounter{-1}\fi
   \gHAssign\SectionCounter0
%
#1}{#2}}
\NewConfigure{LikeChapter}[4]{%
  \Configure:Sec {LikeChapter}{#3}%
     {#4\xdef\:curch{Q1-\file:id-\TitleCount }%
}%
     {\gHAssign\ChapterCounter0
   \gHAssign\SectionCounter0
%
#1}{#2}}
\ifx\ChapterFonts\:UnDef
   \font\:ChFont=cmbx10 scaled \magstep5

   \def\ChapterFonts{\let\bf\:ChFont
       \baselineskip29.85pt}
\fi
\gHAssign\ChapterCounter0

\def\theChapterCounter{%
   \ifnum       \ChapterCounter>0 \ChapterCounter
   \else \ifnum \ChapterCounter<0 \:Alph{-\ChapterCounter}\fi\fi}
\def\:Alph#1{\ifcase  #1\or
   A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
   K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or
   U\or V\or W\or X\or Y\or Z\else    \fi}

\Def:Section\Section{\theSectionCounter}{#1}
\Def:Section\LikeSection{}{#1}
\def\theSection{\theSectionCounter}
\ifx \SectionFonts\:UnDef
   \font\:SecBF=cmbx10 scaled \magstep3
   \font\:SecTT=cmtt10 scaled \magstep3

   \def\SectionFonts{\let\tt\:SecTT
      \let\bf\:SecBF  \baselineskip20.74pt}
\fi
\gHAssign\SectionCounter0

\def\theSectionCounter{%
   \ifnum \ChapterCounter=0 \else \theChapterCounter.\fi
   \SectionCounter  }

\Def:Section\SubSection{}{#1}
\ifx\SubSectionFonts\:UnDef
   \font\:SubSecFont=cmbx10 scaled \magstep2
   \def\SubSectionFonts{\let\bf\:SubSecFont \baselineskip17.28pt}
\fi

\Def:Section\Part{}{#1}
\def\OddPartHPage{%
   \def\:HPageBeforePart{\ifodd \pageno \else \leavevmode\ \newpage\fi}%
   \def\:HPageAfterPart{\newpage\leavevmode\ }}
\def\:NoOddChapterHPage{\def\:HPageBeforePart{}\def\:HPageAfterPart{}}
\:NoOddChapterHPage

\ht:everypar{\if:nopar  \hskip -\parindent
               \ShowPar   \fi}
   \expandafter\csname newtoks\endcsname\EveryItem
\def\ListParSkip{\def\:ListParSkip}
\ifHtml
  \ListParSkip{\HtmlPar}
\fi
\def\lbl:tm{%
   \def\:ord{\a:Item\ListCounter\b:Item}%
   \def\:roman{\a:Item\romannumeral\ListCounter\b:Item}%
   \def\:alph{{\Advance: \ListCounter  96
               \a:Item \char\ListCounter\b:Item}}%
   \def\:Roman{\a:Item\uppercase{\romannumeral\ListCounter}\b:Item}%
   \def\:Alph{{\Advance: \ListCounter  64
               \a:Item \char\ListCounter\b:Item}}%
}
\def\:lbl#1{\a:Item#1\b:Item}

   \def\Verbatim{\par\V:rbatim}
   \def\c:Verbatim:{\Configure{HVerbatim}}
   \expandafter\def\csname c:Verbatim+:\endcsname
      {\Configure{HVerbatim+}}
   \if:latex \else
      \def\TableOfContents{\futurelet\:temp\:TOC}
\def\:TOC{\ifx [\:temp \expandafter\:TableOfContents
          \else \:TableOfContents[Part,Chapter,LikeChapter,Appendix,%
                                  Section,LikeSection]\fi}

      \ifHtml \def\tocPart#1#2#3{\IgnorePar\HCode{<div
    align="center">}#2\HCode{</div>}\IgnoreIndent}%
\def\tocChapter#1#2#3{%
   \ifx \tocSubSection:idnt\:UnDef
   \def\tocSection:idnt{\ }%
   \def\tocSubSection:idnt{\ \ }%
\fi
%
   \par\ignorespaces #1 #2\par }
\def\tocLikeChapter{\tocChapter}
\def\tocAppendix{\tocChapter}
\def\tocSection#1#2#3{%
   \ifx \tocSubSection:idnt\:UnDef
   \let\tocSection:idnt\empty
   \def\tocSubSection:idnt{\ }%
\else
   \ifx \SubSection:idnt\:UnDef   
       \let\tocSection:idnt\empty
       \def\tocSubSection:idnt{\ }%
   \fi
\fi
%
   \par\tocSection:idnt \ignorespaces #1 #2\par}%
\def\tocLikeSection{\tocSection}
\def\tocSubSection#1#2#3{\par\csname tocSubSection:idnt\endcsname
   \ignorespaces #1 #2\par}

   \fi\fi
   \ifHtml
        \def\({\leavevmode\st:math}
  \def\){\ed:math}
\NewConfigure{()}[2]{\def\st:math{#1}\def\ed:math{#2}}
  \def\[{\st:Math}
  \def\]{\ed:Math}
\NewConfigure{[]}[2]{\def\st:Math{#1}\def\ed:Math{#2}}
\Configure{()}{$}{$}
\Configure{[]}{$$}{$$}


      
      

\def\TagCh#1{\Tag{#1(C }{\theChapterCounter}\Tag
                                               {#1(c }{\:curch}}
\def\RefCh#1{\Link{\LikeRef{#1(c }}{}Chapter\ \Ref
                                               {#1(C }\EndLink}
\def\TagApp#1{\Tag{#1(A }{\theChapterCounter}\Tag
                                               {#1(a }{\:curch}}
\def\RefApp#1{\Link{\LikeRef{#1(a }}{}Appendix\ \Ref
                                               {#1(A }\EndLink}
\def\TagSec#1{\Tag{#1(S }{\theSectionCounter}\Tag
                                               {#1(s }{\:cursec}}
\def\RefSec#1{\Link{\LikeRef{#1(s }}{}Section\ \Ref
                                               {#1(S }\EndLink}
\def\TagPage#1{%
   \Link{}{page#1}\EndLink\Tag{#1}{}}
\def\RefPage#1{\Link{page#1}{}\Ref{#1}\EndLink}

      \def\List#1{\begingroup  {\hfil\break\IgnorePar}%
   \HAssign\ListCounter0
   \let\:temp\empty \def\:tempA{#1}%
                                              \def\:tempB{ord}%
\ifx\:tempA\:tempB \else \let\:temp\:tempA  \def\:tempB{1}\fi
\ifx\:tempA\:tempB \else                      \def\:tempB{a}\fi
\ifx\:tempA\:tempB \else                      \def\:tempB{A}\fi
\ifx\:tempA\:tempB \else                      \def\:tempB{i}\fi
\ifx\:tempA\:tempB \else                      \def\:tempB{I}\fi
\let\item\:LIitem
\ifx       \:tempA\:tempB {\a:OList}%
\def\EndList{\b:OList\endgroup }%
%
                          \let\a:List\c:OList
\else                                        \def\:tempB{}%
   \ifx    \:tempA\:tempB \a:DList \let\item\:DLitem \let\End:dd\empty
\def\EndList{\b:DList\endgroup }%
%
   \else                                     \def\:tempB{button}%
      \ifx \:tempA\:tempB \a:buttonList
\let\Item\It:em
\edef\but:file{\RefFileNumber\FileNumber}%
\ifx \but:file\empty  \edef\but:file{\j:bname tmp.\:html}\fi
\def\ALL:file##1.##2!*?: {\def\ALL:file{##1-}}%
\NewFileName\all:file \expandafter\ALL:file\all:file.!*?: %
\HPage<\all:file>{}\IgnorePar
\let\item\B:item
\def\EndList{%
   \ifnum \ListCounter>1 \l:Bd{#1}\fi
   \EndHPage{}%
   \b:buttonList \endgroup  }%
%
      \else               \a:UList \def\EndList{\b:UList\endgroup }%
%
                          \let\a:List\c:UList
\fi\fi\fi
\let\Li:Par\:ListParSkip
\ht:everypar{\if:nopar \else \HtmlPar\fi}%
%
   \lbl:tm
%
}
\NewConfigure{OList}{3}
\NewConfigure{UList}{3}
\NewConfigure{DList}{4}
\let\:UL:\empty
\def\:LIitem{%
   {\parindent=0pt\leavevmode}\:noparfalse    \ht:everypar{\Li:Par}%
    \Advance:\ListCounter  1  \a:List
}
\def\:DLitem#1{%
   \Advance:\ListCounter   1
   \c:DList #1\d:DList    \ht:everypar{\Li:Par}%
}
\def\B:item#1{%
   \ifnum \ListCounter>0 \l:Bd{#1}\fi
   \Advance:\ListCounter  1
   \FileStream\but:file
      \Recall:Link\bt:fl  \Recall:HPage\hpg:fl \Recall:HPageTag\hptg:fl
   \L:Ba{#1}\Link[\all:file]{\ALL:file
                             \ListCounter}{\ALL:file\ListCounter}%
   \L:Bb{#1}\EndLink
   \L:Bc{#1}\FileStream\all:file
      \Save:Link\bt:fl    \Save:HPage\hpg:fl   \Save:HPageTag\hptg:fl
   \l:Ba{#1}\Link[\but:file]{\ALL:file
                             \ListCounter}{\ALL:file\ListCounter}%
   \l:Bb{#1}\EndLink
   \l:Bc{#1}\HtmlEnv}
\def\It:em{\bgroup  \csname no:catcodes\endcsname0{255}{12}%
                    \catcode`\^^I=13\relax\:Itm}
\bgroup
   \global\let\:grp\egroup
   \def\:temp{%
      \csname no:catcodes\endcsname0{255}{12}
      \catcode`\/0 \catcode`\{1 \catcode`\}2  \catcode`\#6
      \catcode`\:11 \catcode`\g11 \catcode`\r11 \catcode`\p11
      \gdef\:Itm }
\:temp#1\ContItem{/:grp/g:rp{#1}}/:grp

                                          \catcode`\^^I=13
\def\g:rp#1{%
   \immediate\openout15=\jobname.tmp
    {\newlinechar`\^^M \def^^I{\space\space}%
     \immediate\write15{\string\ignorespaces\space#1}}%
   \immediate\closeout15
   \B:item{\input \jobname.tmp}}
                                          \catcode`\^^I=10
\NewConfigure{buttonList}[5]{\def\a:buttonList{#1}%
   \def\b:buttonList{#2}%
   \def\L:Ba##1{#3}\def\L:Bb##1{#5}\def\L:Bc##1{#4}}
\NewConfigure{buttonList+}[4]{%
    \def\l:Ba##1{#1}\def\l:Bb##1{#4}\def\l:Bc##1{#2}\def\l:Bd##1{#3}}

      \def\Margin{\HCode{<table \Hnewline
      align="right"><tr><td \Hnewline>}}
\def\EndMargin{\HCode{</td></tr></table>}}
\def\add:col{\Advance:\:cols  -1 \HAdvance\HCol  1\relax
   \ifnum \:cols>0
      \c:Cols \vsplit0 to \tmp:dim  \d:Cols  \expandafter\add:col
   \fi}
\NewConfigure{Columns}{4}
\def\c:Cols{\edef\sv:dim{\the\tmp:dim}\c:Columns}
\def\d:Cols{\d:Columns \tmp:dim\sv:dim }
\def\ColMag#1{\tmp:dim  #1\tmp:dim}
\def\Columns#1{%
   \a:Columns
   \HAssign\:cols#1  \setbox0=\vbox\bgroup
   \divide\hsize  #1  }
\def\EndColumns{\egroup   \HAssign\HCol0
  \tmp:dim\ht0  \advance\tmp:dim  \dp0  \divide\tmp:dim  \:cols
  \add:col \c:Cols \box0 \d:Cols \b:Columns}

      \def\HTable{%
   \let\:TR\empty
   \let\TABLE:\empty
   \futurelet\:temp\T:ABLE}
\def\T:ABLE{%
   \ifx \bgroup\:temp  \let\:temp\HT:ble
   \else  \ifx [\:temp \let\:temp\HT:ble
          \else \let\:tempb\TA:BLE
\ifx B\:temp  \edef\TABLE:{\HTable:B \TABLE:}%
              \def\:tempb##1{\futurelet\:temp\T:ABLE}%
\fi
\HTable:brdr P{cellpadding}%
\HTable:brdr S{cellspacing}%
\let\:temp\:tempb
%
   \fi \fi                 \:temp}

\def\TA:BLE#1{%
   \let\:tempb\:TR   \al:gn\:TR#1%
   \ifx \:tempb\:TR \expand:after{\HT:ble#1}%
   \else  \expand:after{\futurelet\:temp\T:ABLE}\fi
}
\def\HTable:brdr#1#2{\ifx #1\:temp
      \def\:tempb##1{\afterassignment\:tempa\tmp:cnt}%
      \def\:tempa{%
         \edef\TABLE:{#2="\the\tmp:cnt" \TABLE:}%
         \futurelet\:temp\T:ABLE }%
   \fi}
\def\arg:HTable#1#2{%
   \def\:temp{#1}\ifx \:temp\empty \else
      \expandafter\def\csname HTable:\string#1\endcsname{#2}%
      \expandafter\arg:HTable
   \fi
}
\NewConfigure{HTable+}[2]{\arg:HTable{#1}{#2}}
\def\al:gn#1#2{%
   \add:TD#1<#2{\csname HTable:<\endcsname }%
   \add:TD#1>#2{\csname HTable:>\endcsname }%
   \add:TD#1-#2{\csname HTable:-\endcsname }%
   \add:TD#1^#2{\csname HTable:\string^\endcsname }%
   \add:TD#1|#2{\csname HTable:|\endcsname }%
   \add:TD#1_#2{\csname HTable:\string_\endcsname }%
   \add:TD#1=#2{\csname HTable:=\endcsname  }%
}
\def\add:TD#1#2#3#4{\chardef\:temp`#2
                    \chardef\:tempa`#3
                    \ifnum \:temp=\:tempa\edef#1{#1\space #4}\fi}
\let\:TR\empty
\def\HT:ble{\bgroup  \let\sv:row\HRow  \let\sv:col\HCol
   \gHAssign\HRow1 \gHAssign\HCol0
   \htbl: }
\def\htbl:{%
   \let\GetInt\Get:Int
   \let\GetArg\Get:Arg    \a:HTable
   \let\:EndHTableScript\:EndHTblScript
\let\:HTableScript\:HTblScript
\let\:HTbleAtt\:HTblAtt
\let\:EndHTblScript\empty
\let\:HTblScript\empty
\let\:HTblAtt\empty
%
%
   \c:HTable\hfil\break
   \ht:everypar{}\futurelet\:temp\tbl:bd }
\NewConfigure{HTable}{6}
\def\EndHTable{%
   \end:cell  \d:HTable   \b:HTable
   \global\let\HRow\sv:row  \global\let\HCol\sv:col  \egroup
   \let\:EndHTblScript\empty
\let\:HTblScript\empty
\let\:HTblAtt\empty
}
\def\tbl:bd{\ifx \:temp\bgroup  \let\tbl:typ\tbl:bdy
   \else    \ifx /\:temp        \def\tbl:typ##1{\env:tbl}%
   \else  \let\tbl:typ\env:tbl
   \fi \fi \tbl:typ }
\long\def\tbl:bdy#1{%
   \def\hfil{\ifx \EndPicture\:UnDef \space \else\:hfil\fi}%
   \def\hfill{\ifx \EndPicture\:UnDef \space \else\:hfill\fi}%
   \expandafter\let\csname cr\endcsname\:cr
   \:HTable#1&\EndH:Table }
\let\:hfil\hfil
\let\:hfill\hfill
\def\env:tbl{\def\&{\end:cell \TD:cell }\TD:cell }
\def\CR{\end:cell
   \gHAdvance\HRow  1  \gHAssign\HCol0
   \d:HTable\c:HTable\hfil\break  \TD:cell }
\long\def\:HTable#1&#2\EndH:Table{%
   \def\:htbend{#2}%
   \insert:TD#1\tok:nmath
   \def\:temp{#2}\ifx\:temp\empty \EndHTable
   \else  \expand:after{\end:cell
                        \:HTable#2\EndH:Table}\fi }
\def\tok:nmath{\empty}
\def\end:cell{\:EndHTableScript   \f:HTable}
\def\:cr{\ifx \EndPicture\:UnDef \expandafter\:cR
          \else                  \expandafter\:c:r\fi}
\expandafter\let\csname :c:r\endcsname\cr
\long\def\:cR#1{\relax
   \ifx\:htbend\empty
      \def\:temp{#1}%
      \ifx\:temp\NoArg \else \expandafter\mpty:cr\fi
   \else                      \mpty:cr
   \fi        #1}%

\def\mpty:cr{%
   \expand:after{\end:cell  \gHAdvance\HRow  1  \gHAssign\HCol0
   \d:HTable\c:HTable \insert:TD}}
\def\TD:cell{\gHAdvance\HCol  1   \futurelet\:temp\TD:cll }
\def\TD:cll{%
   \ifx [\:temp  \let\:temp\T:D
   \else  \expandafter\ifx\space\:temp
      \expand:after{\def\:temp}\space{\futurelet\:temp\TD:cll}\else
      \tbl:ch
   \fi \fi \:temp}
\catcode`\^=13  \catcode`\_=13
\def\tbl:ch{{\def^{\string^}\def_{\string_}%
       \xdef\:temp{\noexpand\T:D[\:HTbleAtt]}}}
\catcode`\^=7  \catcode`\_=8
\def\insert:TD{\futurelet\:tempc\TD:}

\def\TD:{%
   \ifx \par\:tempc \def\:temp\par{\insert:TD}\go:out\:temp\fi
   \expandafter\ifx \space\:tempc
          \expand:after{\def\:temp}\space{\insert:TD}%
                                \go:out\:temp      \fi
   \ifx \EndH:Table\:tempc     \go:out\empty\fi
   \gHAdvance\HCol  1    \chk:tblop   \tbl:ch \go:out\:temp\empty
   \:out}

\def\chk:tblop{\ifx [\:tempc \go:out\T:D  \fi}
\def\T:D[{\def\TD:typ{td}\let\TD:more\empty \scan:TD}
\def\scan:TD#1{%
   \ifx ]#1\e:HTable
      \go:out\:HTableScript  \fi
   \ifx /#1\def\:temp##1]{\edef\TD:more{\TD:more\space##1}\scan:TD]}%
          \go:out\:temp  \fi
   \ifx H#1\def\TD:typ{th}\go:out\scan:TD\fi
   \ifx R#1\SP:N{rowspan}\fi
   \ifx C#1\SP:N{colspan}\fi
   \al:gn\TD:more#1%
   \go:out\scan:TD\empty\:out   }

\def\SP:N#1{%
   \def\:temp{\edef\TD:more{ #1="\the\tmp:cnt"\TD:more
                 \Hnewline}\scan:TD}%
   \def\:tempa##1{\afterassignment\:temp \tmp:cnt##1}%
   \go:out\:tempa}
\def\HTableScript{\futurelet\:temp\tblScrpt:}
\def\tblScrpt:{\ifx [\:temp  \expandafter\:tblScrpt
               \else  \expand:after{\:tblScrpt[]}\fi }
\long\def\:tblScrpt[#1]#2#3{%
    \def\:HTblAtt{#1}%
    \def\:HTblScript{#2\go:out\empty!*?: \:out}%
    \def\:EndHTblScript{#3}}
\let\:EndHTblScript\empty
\let\:HTblScript\empty
\let\:HTblAtt\empty

\def\go:out#1{\expand:after{\g:out#1}}
\long\def\g:out#1#2\:out{#1}
\long\def\Get:Int#1#2!*?: \:out{%
   \def\:next{%
      \edef\:next{\the\tmp:cnt\space}%
      \HAssign#1\:next #2!*?: \:out}%
   \afterassignment\:next
   \tmp:cnt }
\def\DefGetArg#1#2#3{\def\:temp{#3}%
   \ifx \:temp\NoArg  \D:fGetArg{#1}{#2}#3#3\else
                       \D:fGetArg{#1}{#2}{#3}{}\fi
}
\def\D:fGetArg#1#2#3#4{%
   \expand:after{\long\def}\csname
        Get:Arg:#1:#2\endcsname##1##2!*?: \:out{%
      \def\:next####1#3{\def##1{####1}%
                        \ifx \tbl:typ\tbl:bdy  \else
   \ifx    ##1\&\let##1\NoArg\fi
   \ifx ##1\CR  \let##1\NoArg\fi
\fi
#4##2!*?: \:out}%
      \:next }}

\DefGetArg{}{}{}
\def\stgt:arg#1#2{%
  \expand:after{\let\:tempa=}\csname Get:Arg:#1:#2\endcsname
  \ifx \:tempa\relax \else \let\:temp\:tempa \fi }
\def\Get:Arg{%
  \let\:temp\Get:Arg::\stgt:arg{}\HCol \stgt:arg\HRow{}%
  \stgt:arg\HRow\Col \:temp}
\def\NoArg{\tok:nmath}

      \ifHtml
   \:CheckOption{postscript}  \if:Option
      \expandafter\def\csname i:0\endcsname{0}
\expandafter\def\csname i:1\endcsname{1}
\expandafter\def\csname i:2\endcsname{2}
\expandafter\def\csname i:3\endcsname{3}
\expandafter\def\csname i:4\endcsname{4}
\expandafter\def\csname i:5\endcsname{5}
\expandafter\def\csname i:6\endcsname{6}
\expandafter\def\csname i:7\endcsname{7}
\expandafter\def\csname i:8\endcsname{8}
\expandafter\def\csname i:9\endcsname{9}
\def\i:A{10}  \let\i:a\i:A
\def\i:B{11}  \let\i:b\i:B
\def\i:C{12}  \let\i:c\i:C
\def\i:D{13}  \let\i:d\i:D
\def\i:E{14}  \let\i:e\i:E
\def\i:F{15}  \let\i:f\i:F

\def\Hex:Frac#1#2{\tmp:cnt\csname i:#1\endcsname
   \multiply\tmp:cnt by 16
   \advance\tmp:cnt\csname i:#2\endcsname
   \multiply\tmp:cnt by 100
   \divide\tmp:cnt by 255
   \edef\:temp{\ifnum \tmp:cnt>99 1.0\else 0.\the\tmp:cnt\fi}}

\def\df:clr#1#2#3#4#5#6#7{\Hex:Frac#2#3\let#1\:temp
   \Hex:Frac#4#5\edef#1{ #1 \:temp}%
   \Hex:Frac#6#7\edef#1{#1 \:temp\space setrgbcolor }}

\def\DefPsColor#1#2{\df:clr#1#2}
\let\PsCode\relax
%
\def\MarkPsLoc(#1){%
  \PsCode{ currentpoint
   /Psy#1  exch  def
   /PsX#1  exch  def
}}
\def\RecallPsLoc(#1){ PsX#1  Psy#1 }

      \ifx \PsCodeSpecial\:UnDef \def\PsCodeSpecial{ps:}\fi

   \fi
\fi

      \:CheckOption{draw}     \if:Option
   \NewConfigure{Fig}{2}
\Odef\Fig[#1]{\bgroup
   \ifx  \EndPicture\:Undef
      \ifx  \EndFig\:Undef
         \def\EndFig{\b:Fig\egroup}%
         \def\AltFig{#1}\a:Fig
      \else  \let\EndFig\egroup \fi
   \else  \let\EndFig\egroup \fi
   \HAssign\y::=0
   \def\Text##1"##2"{\raise \y:: pt \hbox to 0pt{##2\hss}\ignorespaces}%
   \def\Line{\afterassignment\Ln:A\tmp:cnta}%
   \def\Move{\afterassignment\Mv:A\tmp:cnta}\ignorespaces}

\def\Ln:A{\afterassignment\Ln:B\tmp:cntb}
\def\Ln:B{\bgroup \leavevmode
  \HAssign\I::=\ifnum \tmp:cnta<0 -\fi \tmp:cnta
\HAssign\J::=\ifnum \tmp:cntb<0 -\fi \tmp:cntb
\ifnum \I::>\J:: \HAssign\J::=\I:: \fi \relax
\ifnum \J::>0
   \tmp:dim=\tmp:cnta pt
   \ifnum \tmp:cnta<0
       \tmp:dim-\tmp:dim
       \vrule depth \z@ height \z@ width \tmp:cnta pt
       \HAdvance\y:: by \tmp:cntb    \tmp:cntb-\tmp:cntb
   \fi
   \divide\tmp:dim by \J::  \edef\C::{\the\tmp:dim}%
   \tmp:dima=\tmp:cntb pt  \divide\tmp:dima by \J::
   \edef\D::{\the\tmp:dima}%
   \tmp:dima \y:: pt
   \HAssign\I::-1  \tmp:dim\z@  \Ln:C
   \ifnum \tmp:cnta>0  \else
      \vrule depth \z@ height \z@ width -\tmp:cnta pt
\fi\fi
%
   \egroup \Mv:B  }

\def\Ln:C{\ifnum \I::<\J::
   \vrule depth \z@ height \z@ width \tmp:dim
   \raise \tmp:dima \hbox{\vrule height 0.5pt depth 0.5pt  width 1pt}%
   \vrule depth \z@ height \z@ width -\tmp:dim
   \vrule depth \z@ height \z@ width -1.0pt
   \advance\tmp:dim by  \C::
   \advance\tmp:dima by  \D::
   \Advance:\I:: by  1
   \expandafter\Ln:C  \fi  }

\def\Mv:A{\afterassignment\Mv:B\tmp:cntb}
\def\Mv:B{\leavevmode
   \vrule depth \z@ height \z@ width \tmp:cnta pt
   \Advance:\y:: by \tmp:cntb     \ignorespaces  }

\csname newcount\endcsname\tmp:cnta
\csname newcount\endcsname\tmp:cntb
\csname newdimen\endcsname\tmp:dima

\fi

      \:CheckOption{index} \if:Option
   \let\mi:nus=\-
\def\-{\futurelet\:temp\:idxentry}
\def\:idxentry{\ifx \:temp- \expandafter\:addidx
   \else\expandafter\mi:nus\fi}
\def\:addidx-#1/#2/#3/{{\def\:ii{#2}%
   \csname a:--\endcsname
%
   \ifx\:ii\empty
      \edef\:temp{\write\:idx{\string\--{#1}{ }{#3}%
        {\csname b:--\endcsname
}\relax}}%
   \else
      \edef\:temp{\write\:idx{\string\--{#1}{#2}{#3}%
        {\csname b:--\endcsname
}\relax}}%
   \fi  \:temp}}
\csname newwrite\endcsname\:idx
\openout\:idx=\jobname.idx
\def\Index{%
  \def\--{\IndexEntry}%
  \openin15=\jobname.xdi
  \ifeof15      \write\:idx{ \pageno=\the\pageno}
  \else
     {\a:index \input \jobname.xdi \b:index }
  \fi}
\def\IndexEntry#1#2#3#4{%
   \gdef\:temp{#1}\let\:tempa\empty
   \ifx \:temp\prev:A  \gdef\:temp{#2}\ifx \:temp\prev:B
      \let\:tempa\relax
   \fi\fi
   \ifx \:tempa\relax ,\else
      \gdef\:temp{#1}\ifx \:temp\prev:A \else  \c:index #1\d:index\fi
      \def\:temp{#2}\ifx \:temp\space
      \else   \hfill\break    \e:index#2\f:index\fi
   \fi
   \g:index #4\h:index
   \gdef\prev:A{#1}\gdef\prev:B{#2}%
}
\NewConfigure{index}{8}
\ifx  \IndexFonts\:UnDef
   \def\IndexFonts{%
     \setbox\strutbox=\hbox{\vrule height8.0pt depth3.0pt width0pt}
     \font\ninerm=cmr9  \font\ninebf=cmbx9   \font\ninesl=cmsl9
     \font\nineit=cmti9 \font\ninett=cmtt9   \font\ninei =cmmi9
     \font\ninesy=cmsy9 \font\nineex=cmex10
     \textfont0=\ninerm \textfont1=\ninei    \textfont2=\ninesy
     \textfont3=\nineex \scriptfont3=\nineex \scriptscriptfont3=\nineex
     \textfont\bffam=\ninebf  \textfont\slfam=\ninesl
     \textfont\itfam=\ninei   \textfont\ttfam=\ninett
     \def\rm{\fam=0     \ninerm}%
     \def\bf{\fam=\bffam\ninebf}%
     \def\sl{\fam=\slfam\ninesl}%
     \def\it{\fam=\itfam\nineit}%
     \def\tt{\fam=\ttfam\ninett}%
     \def\cal{\fam=2}%
     \def\mit{\fam=1}%
     \skewchar\ninei   =127    \skewchar\ninesy   =46    \rm
     \baselineskip=11pt       }
\fi
\NewConfigure{--}{2}
\Configure{--}
  {\html:addr \Link-{}{index\last:haddr}\EndLink}
  {\string\csname\space :gobble\string\endcsname{\html:lbl}%
    \string\Link[\FileName]{index\last:haddr}{}\folio
    \string\EndLink
  }

\fi

%      \expand:after{\Hinput{th4}}
   \else
      \def\List#1{%
   \def\:tempa##1##2{%
      \ifx\:tempA\:tempB \def\:tempb{\L:st{##1}}\fi \def\:tempB{##2}}%
   \def\:tempb{\L:st{#1}}\def\:tempA{#1}\def\:tempB{ord}%
   \:tempa\:ord1%
   \:tempa{\:ord}{a}%
   \:tempa{\:alph}{A}%
   \:tempa{\:Alph}{i}%
   \:tempa{\:roman}{I}%
   \:tempa{\:Roman}{disc}%
   \:tempa{$\bullet$}{circle}%
   \:tempa{$\circle$}{square}%
   \:tempa{\vrule  depth \z@ height 1ex width 1ex}{}%
   \:tempa{\:lbl}{}%
   \:tempb }

\def\L:st#1{\par \nobreak
   {\advance \medskipamount  -\parskip \:medskip}%
   \:noparfalse
   \Begin:Block{List}%
      \Configure{Item}{}{.}%
%
      \lbl:tm
%
      \advance \leftskip  1.5em
      \parindent0em
      \HAssign\ListCounter0
\def\item{%
   \par \leavevmode      \parskip\:ListParSkip
   \Advance:\ListCounter  1
   \the\EveryItem}%
\def\:temp{#1}\def\:tempa{\:lbl}\ifx   \:temp\:tempa
       \EveryItem={\hskip-1.5em\:ListItem}%
\else  \EveryItem={%
                   \llap{#1\hskip 0.5em}}\fi
%
}
\def\EndList{\par
   \End:Block{List}%
   {\advance\medskipamount  -\parskip \:medskip}}
\expandafter\csname newskip\endcsname\ListParSkip
\def\:ListParSkip{\ListParSkip}
\ListParSkip4.5pt plus 1.5pt minus 1.5pt
\def\:ListItem#1{\:lbl{#1}\hskip 0.5em\ignorespaces}

      \let\Columns\:gobble
\let\EndColumns\empty
\def\:bigskip{%
 \ifvmode
   \ifdim \lastskip<\bigskipamount
   \vskip -\lastskip \bigskip \fi
 \else \bigskip\fi}

\def\:medskip{%
 \ifvmode
   \ifdim \lastskip<\medskipamount
   \vskip -\lastskip \medskip \fi
 \else \medskip\fi}

\def\:smallskip{%
 \ifvmode
   \ifdim \lastskip<\smallskipamount
   \vskip -\lastskip \smallskip \fi
 \else \smallskip \fi}

      
      
      \def\Verb:sp{\phantom{x}}
\let\Verb:boln\empty
\let\Verb:eoln\empty
\Configure{VerbatimEnv}
   {\medskip \parskip0pt}
   {\smallskip }
\let\vrb:tt\tt

      \def\:StartSec#1#2#3{%
   %
   \expandafter\ifx \csname a:#1\endcsname\relax  \else
      \csname a:#1\endcsname{#3}%
   \fi
   \:Ttle{#1}{#2}{\csname #1:ttl\endcsname{#3}}%
   \expandafter\ifx \csname b:#1\endcsname\relax  \else
      \csname b:#1\endcsname{#3}%
   \fi
   %
}
\let\html:addr\empty
\let\protect:wrtoc\empty
\let\html:tocsec \empty
\let\html:sectoc\empty

      
      
      
      
      \def\:ctgs#1{\def\:eat##1#1{{\vrb:tt ##1}\egroup}\:eat}

   \fi
\fi
\ifHtml        \expand:after{\Hinput{th4}}\fi
\endinput

