
%% lcd89.tex
%% The following is precisely the commutative diagram
%% (CD) segment of LamsteX 1989 %%
%% public domain software by Michael Spivak.
%% The full and up-to-date LamsTeX with 
%% necessary fonts can be obtained from
%% ftp ftp.uni-stuttgart.de [129.69.8.13]
%% The LamsTeX manal is available from
%% The Texplorators Corporation, 
%% 3701 W. Alabama, Suite 450-273, Houston Texas 77027 USA
%% or TeX users Group, 658 North Main Street, POBox 9506,
%% Providence, RI02940-9506 USA, tug@math.ams.org.

%%--------------- cut here
\def\East#1#2{\setboxz@h{$\m@th\ssize\;{#1}\;\;$}%
 \setbox@ne\hbox{$\m@th\ssize\;{#2}\;\;$}\setbox\tw@\hbox{$\m@th#2$}%
 \dimen@\minaw@
 \ifdim\wdz@>\dimen@ \dimen@\wdz@ \fi  \ifdim\wd@ne>\dimen@ \dimen@\wd@ne \fi
 \ifdim\wd\tw@>\z@
  \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}_{#2}}%
 \else
  \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}}%
 \fi}
\def\West#1#2{\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
 \setbox@ne\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox\tw@\hbox{$\m@th#2$}%
 \dimen@\minaw@
 \ifdim\wdz@>\dimen@ \dimen@\wdz@ \fi \ifdim\wd@ne>\dimen@ \dimen@\wd@ne \fi
 \ifdim\wd\tw@>\z@
  \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}_{#2}}%
 \else
  \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}}%
 \fi}
\font\arrow@i=lams1
\font\arrow@ii=lams2
\font\arrow@iii=lams3
\font\arrow@iv=lams4
\font\arrow@v=lams5
\newbox\zer@
\newdimen\standardcgap
\standardcgap=40\p@
\newdimen\hunit
\hunit=\tw@\p@
\newdimen\standardrgap
\standardrgap=32\p@
\newdimen\vunit
\vunit=1.6\p@
\def\Cgaps#1{\RIfM@
  \standardcgap=#1\standardcgap\relax \hunit=#1\hunit\relax
 \else \nonmatherr@\Cgaps \fi}
\def\Rgaps#1{\RIfM@
  \standardrgap=#1\standardrgap\relax \vunit=#1\vunit\relax
 \else \nonmatherr@\Rgaps \fi}
\newdimen\getdim@
\def\getcgap@#1{\ifcase#1\or\getdim@\z@\else\getdim@\standardcgap\fi}
\def\getrgap@#1{\ifcase#1\getdim@\z@\else\getdim@\standardrgap\fi}
\def\cgaps#1{\RIfM@
 \cgaps@{#1}\edef\getcgap@##1{\i@=##1\relax\the\toks@}\toks@{}\else
 \nonmatherr@\cgaps\fi}
\def\rgaps#1{\RIfM@
 \rgaps@{#1}\edef\getrgap@##1{\i@=##1\relax\the\toks@}\toks@{}\else
 \nonmatherr@\rgaps\fi}
\def\Gaps@@{\gaps@@}
\def\cgaps@#1{\toks@{\ifcase\i@\or\getdim@=\z@}%
 \gaps@@\standardcgap#1;\gaps@@\gaps@@
 \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap
  \noexpand\fi}%
 \toks@=\expandafter{\next@}}
\def\rgaps@#1{\toks@{\ifcase\i@\getdim@=\z@}%
 \gaps@@\standardrgap#1;\gaps@@\gaps@@
 \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardrgap
  \noexpand\fi}%
 \toks@=\expandafter{\next@}}
\def\gaps@@#1#2;#3{\mgaps@#1#2\mgaps@
 \edef\next@{\the\toks@\noexpand\or\noexpand\getdim@
  \noexpand#1\the\mgapstoks@@}%
 \global\toks@=\expandafter{\next@}%
 \DN@{#3}%
 \ifx\next@\Gaps@@\gdef\next@##1\gaps@@{}\else
  \gdef\next@{\gaps@@#1#3}\fi\next@}
\def\mgaps@#1{\let\mgapsnext@#1\FN@\mgaps@@}
\def\mgaps@@{\ifx\next\space@\DN@. {\FN@\mgaps@@}\else
 \DN@.{\FN@\mgaps@@@}\fi\next@.}
\def\mgaps@@@{\ifx\next\w\let\next@\mgaps@@@@\else
 \let\next@\mgaps@@@@@\fi\next@}
\newtoks\mgapstoks@@
\def\mgaps@@@@@#1\mgaps@{\getdim@\mgapsnext@\getdim@#1\getdim@
 \edef\next@{\noexpand\getdim@\the\getdim@}%
 \mgapstoks@@=\expandafter{\next@}}
\def\mgaps@@@@\w#1#2\mgaps@{\mgaps@@@@@#2\mgaps@
 \setbox\zer@\hbox{$\m@th\hskip15\p@\tsize@#1$}%
 \dimen@\wd\zer@
 \ifdim\dimen@>\getdim@ \getdim@\dimen@ \fi
 \edef\next@{\noexpand\getdim@\the\getdim@}%
 \mgapstoks@@=\expandafter{\next@}}
\def\changewidth#1#2{\setbox\zer@\hbox{$\m@th#2}%
 \hbox to\wd\zer@{\hss$\m@th#1$\hss}}
\atdef@({\FN@\ARROW@}
\def\ARROW@{\ifx\next)\let\next@\OPTIONS@\else
 \DN@{\csname\string @(\endcsname}\fi\next@}
\newif\ifoptions@
\def\OPTIONS@){\ifoptions@\let\next@\relax\else
 \DN@{\options@true\begingroup\optioncodes@}\fi\next@}
\newif\ifN@
\newif\ifE@
\newif\ifNESW@
\newif\ifH@
\newif\ifV@
\newif\ifHshort@
\expandafter\def\csname\string @(\endcsname #1,#2){%
 \ifoptions@\let\next@\endgroup\else\let\next@\relax\fi\next@
 \N@false\E@false\H@false\V@false\Hshort@false
 \ifnum#1>\z@\E@true\fi
 \ifnum#1=\z@\V@true\tX@false\tY@false\a@false\fi
 \ifnum#2>\z@\N@true\fi
 \ifnum#2=\z@\H@true\tX@false\tY@false\a@false\ifshort@\Hshort@true\fi\fi
 \NESW@false
 \ifN@\ifE@\NESW@true\fi\else\ifE@\else\NESW@true\fi\fi
 \arrow@{#1}{#2}%
 \global\options@false
 \global\scount@\z@\global\tcount@\z@\global\arrcount@\z@
 \global\s@false\global\sxdimen@\z@\global\sydimen@\z@
 \global\tX@false\global\tXdimen@i\z@\global\tXdimen@ii\z@
 \global\tY@false\global\tYdimen@i\z@\global\tYdimen@ii\z@
 \global\a@false\global\exacount@\z@
 \global\x@false\global\xdimen@\z@
 \global\X@false\global\Xdimen@\z@
 \global\y@false\global\ydimen@\z@
 \global\Y@false\global\Ydimen@\z@
 \global\p@false\global\pdimen@\z@
 \global\label@ifalse\global\label@iifalse
 \global\dl@ifalse\global\ldimen@i\z@
 \global\dl@iifalse\global\ldimen@ii\z@
 \global\short@false\global\unshort@false}
\newif\iflabel@i
\newif\iflabel@ii
\newcount\scount@
\newcount\tcount@
\newcount\arrcount@
\newif\ifs@
\newdimen\sxdimen@
\newdimen\sydimen@
\newif\iftX@
\newdimen\tXdimen@i
\newdimen\tXdimen@ii
\newif\iftY@
\newdimen\tYdimen@i
\newdimen\tYdimen@ii
\newif\ifa@
\newcount\exacount@
\newif\ifx@
\newdimen\xdimen@
\newif\ifX@
\newdimen\Xdimen@
\newif\ify@
\newdimen\ydimen@
\newif\ifY@
\newdimen\Ydimen@
\newif\ifp@
\newdimen\pdimen@
\newif\ifdl@i
\newif\ifdl@ii
\newdimen\ldimen@i
\newdimen\ldimen@ii
\newif\ifshort@
\newif\ifunshort@
\def\zero@#1{\ifnum\scount@=\z@
 \if#1e\global\scount@\m@ne\else
 \if#1t\global\scount@\tw@\else
 \if#1h\global\scount@\thr@@\else
 \if#1'\global\scount@6 \else
 \if#1`\global\scount@7 \else
 \if#1(\global\scount@8 \else
 \if#1)\global\scount@9 \else
 \if#1s\global\scount@12 \else
 \if#1H\global\scount@13 \else
 \Err@{\Invalid@@ option \string\0}\fi\fi\fi\fi\fi\fi\fi\fi\fi
 \fi}
\def\one@#1{\ifnum\tcount@=\z@
 \if#1e\global\tcount@\m@ne\else
 \if#1h\global\tcount@\tw@\else
 \if#1t\global\tcount@\thr@@\else
 \if#1'\global\tcount@4 \else
 \if#1`\global\tcount@5 \else
 \if#1(\global\tcount@10 \else
 \if#1)\global\tcount@11 \else
 \if#1s\global\tcount@12 \else
 \if#1H\global\tcount@13 \else
 \Err@{\Invalid@@ option \string\1}\fi\fi\fi\fi\fi\fi\fi\fi\fi
 \fi}
\def\a@#1{\ifnum\arrcount@=\z@
 \if#10\global\arrcount@\m@ne\else
 \if#1+\global\arrcount@\@ne\else
 \if#1-\global\arrcount@\tw@\else
 \if#1=\global\arrcount@\thr@@\else
 \Err@{\Invalid@@ option \string\a}\fi\fi\fi\fi
 \fi}
\def\ds@(#1;#2){\ifs@\else
 \global\s@true
 \sxdimen@\hunit \global\sxdimen@#1\sxdimen@\relax
 \sydimen@\vunit \global\sydimen@#2\sydimen@\relax
 \fi}
\def\dtX@(#1;#2){\iftX@\else
 \global\tX@true
 \tXdimen@i\hunit \global\tXdimen@i#1\tXdimen@i\relax
 \tXdimen@ii\vunit \global\tXdimen@ii#2\tXdimen@ii\relax
 \fi}
\def\dtY@(#1;#2){\iftY@\else
 \global\tY@true
 \tYdimen@i\hunit \global\tYdimen@i#1\tYdimen@i\relax
 \tYdimen@ii\vunit \global\tYdimen@ii#2\tYdimen@ii\relax
 \fi}
\def\da@#1{\ifa@\else\global\a@true\global\exacount@#1\relax\fi}
\def\dx@#1{\ifx@\else
 \global\x@true
 \xdimen@\hunit \global\xdimen@#1\xdimen@\relax
 \fi}
\def\dX@#1{\ifX@\else
 \global\X@true
 \Xdimen@\hunit \global\Xdimen@#1\Xdimen@\relax
 \fi}
\def\dy@#1{\ify@\else
 \global\y@true
 \ydimen@\vunit \global\ydimen@#1\ydimen@\relax
 \fi}
\def\dY@#1{\ifY@\else
 \global\Y@true
 \Ydimen@\vunit \global\Ydimen@#1\Ydimen@\relax
 \fi}
\def\p@@#1{\ifp@\else
 \global\p@true
 \pdimen@\hunit \divide\pdimen@\tw@ \global\pdimen@#1\pdimen@\relax
 \fi}
\def\L@#1{\iflabel@i\else
 \global\label@itrue \gdef\label@i{#1}%
 \fi}
\def\l@#1{\iflabel@ii\else
 \global\label@iitrue \gdef\label@ii{#1}%
 \fi}
\def\dL@#1{\ifdl@i\else
 \global\dl@itrue \ldimen@i\hunit \global\ldimen@i#1\ldimen@i\relax
 \fi}
\def\dl@#1{\ifdl@ii\else
 \global\dl@iitrue \ldimen@ii\hunit \global\ldimen@ii#1\ldimen@ii\relax
 \fi}
\def\s@{\ifunshort@\else\global\short@true\fi}
\def\uns@{\ifshort@\else\global\unshort@true\global\short@false\fi}
\def\optioncodes@{\let\0\zero@\let\1\one@\let\a\a@\let\ds\ds@\let\dtX\dtX@
 \let\dtY\dtY@\let\da\da@\let\dx\dx@\let\dX\dX@\let\dY\dY@\let\dy\dy@
 \let\p\p@@\let\L\L@\let\l\l@\let\dL\dL@\let\dl\dl@\let\s\s@\let\uns\uns@}
\def\slopes@{\\161\\152\\143\\134\\255\\126\\357\\238\\349\\45{10}\\56{11}%
 \\11{12}\\65{13}\\54{14}\\43{15}\\32{16}\\53{17}\\21{18}\\52{19}\\31{20}%
 \\41{21}\\51{22}\\61{23}}
\newcount\tan@i
\newcount\tan@ip
\newcount\tan@ii
\newcount\tan@iip
\newdimen\slope@i
\newdimen\slope@ip
\newdimen\slope@ii
\newdimen\slope@iip
\newcount\angcount@
\newcount\extracount@
\def\slope@{{\slope@i=\secondy@ \advance\slope@i-\firsty@
 \ifN@\else\multiply\slope@i\m@ne\fi
 \slope@ii=\secondx@ \advance\slope@ii-\firstx@
 \ifE@\else\multiply\slope@ii\m@ne\fi
 \ifdim\slope@ii<\z@
  \global\tan@i6 \global\tan@ii\@ne \global\angcount@23
 \else
  \dimen@\slope@i \multiply\dimen@6
  \ifdim\dimen@<\slope@ii
   \global\tan@i\@ne \global\tan@ii6 \global\angcount@\@ne
  \else
   \dimen@\slope@ii \multiply\dimen@6
   \ifdim\dimen@<\slope@i
    \global\tan@i6 \global\tan@ii\@ne \global\angcount@23
   \else
    \tan@ip\z@ \tan@iip \@ne
    \def\\##1##2##3{\global\angcount@=##3\relax
     \slope@ip\slope@i \slope@iip\slope@ii
     \multiply\slope@iip##1\relax \multiply\slope@ip##2\relax
     \ifdim\slope@iip<\slope@ip
      \global\tan@ip=##1\relax \global\tan@iip=##2\relax
     \else
      \global\tan@i=##1\relax \global\tan@ii=##2\relax
      \def\\####1####2####3{}%
     \fi}%
    \slopes@
    \slope@i=\secondy@ \advance\slope@i-\firsty@
    \ifN@\else\multiply\slope@i\m@ne\fi
    \multiply\slope@i\tan@ii \multiply\slope@i\tan@iip \multiply\slope@i\tw@
    \count@\tan@i \multiply\count@\tan@iip
    \extracount@\tan@ip \multiply\extracount@\tan@ii
    \advance\count@\extracount@
    \slope@ii=\secondx@ \advance\slope@ii-\firstx@
    \ifE@\else\multiply\slope@ii\m@ne\fi
    \multiply\slope@ii\count@
    \ifdim\slope@i<\slope@ii
     \global\tan@i=\tan@ip \global\tan@ii=\tan@iip
     \global\advance\angcount@\m@ne
    \fi
   \fi
  \fi
 \fi}%
}
\def\slope@a#1{{\def\\##1##2##3{\ifnum##3=#1\global\tan@i=##1\relax
 \global\tan@ii=##2\relax\fi}\slopes@}}
\newcount\i@
\newcount\j@
\newcount\colcount@
\newcount\Colcount@
\newcount\tcolcount@
\newdimen\rowht@
\newdimen\rowdp@
\newcount\rowcount@
\newcount\Rowcount@
\newcount\maxcolrow@
\newtoks\colwidthtoks@
\newtoks\Rowheighttoks@
\newtoks\Rowdepthtoks@
\newtoks\widthtoks@
\newtoks\Widthtoks@
\newtoks\heighttoks@
\newtoks\Heighttoks@
\newtoks\depthtoks@
\newtoks\Depthtoks@
\newif\iffirstCDcr@
\def\dotoks@i{%
 \global\widthtoks@=\expandafter{\the\widthtoks@\else\getdim@\z@\fi}%
 \global\heighttoks@=\expandafter{\the\heighttoks@\else\getdim@\z@\fi}%
 \global\depthtoks@=\expandafter{\the\depthtoks@\else\getdim@\z@\fi}}
\def\dotoks@ii{%
 \global\widthtoks@{\ifcase\j@}%
 \global\heighttoks@{\ifcase\j@}%
 \global\depthtoks@{\ifcase\j@}}
\def\preCD@#1\endCD{\setbox\zer@
 \vbox{%
  \def\arrow@##1##2{{}}%
  \rowcount@\m@ne \colcount@\z@ \Colcount@\z@
  \firstCDcr@true \toks@{}%
  \widthtoks@{\ifcase\j@}%
  \Widthtoks@{\ifcase\i@}%
  \heighttoks@{\ifcase\j@}%
  \Heighttoks@{\ifcase\i@}%
  \depthtoks@{\ifcase\j@}%
  \Depthtoks@{\ifcase\i@}%
  \Rowheighttoks@{\ifcase\i@}%
  \Rowdepthtoks@{\ifcase\i@}%
  \Let@
  \everycr{%
   \noalign{%
    \global\advance\rowcount@\@ne
    \ifnum\colcount@<\Colcount@
    \else
     \global\Colcount@=\colcount@ \global\maxcolrow@=\rowcount@
    \fi
    \global\colcount@\z@
    \iffirstCDcr@
     \global\firstCDcr@false
    \else
     \edef\next@{\the\Rowheighttoks@\noexpand\or\noexpand\getdim@\the\rowht@}%
      \global\Rowheighttoks@=\expandafter{\next@}%
     \edef\next@{\the\Rowdepthtoks@\noexpand\or\noexpand\getdim@\the\rowdp@}%
      \global\Rowdepthtoks@=\expandafter{\next@}%
     \global\rowht@\z@ \global\rowdp@\z@
     \dotoks@i
     \edef\next@{\the\Widthtoks@\noexpand\or\the\widthtoks@}%
      \global\Widthtoks@=\expandafter{\next@}%
     \edef\next@{\the\Heighttoks@\noexpand\or\the\heighttoks@}%
      \global\Heighttoks@=\expandafter{\next@}%
     \edef\next@{\the\Depthtoks@\noexpand\or\the\depthtoks@}%
      \global\Depthtoks@=\expandafter{\next@}%
     \dotoks@ii
    \fi}}%
  \tabskip\z@
  \halign{&\setbox\zer@\hbox{\vrule height10\p@ width\z@ depth\z@
   $\m@th\displaystyle{##}$}\copy\zer@
   \ifdim\ht\zer@>\rowht@ \global\rowht@\ht\zer@ \fi
   \ifdim\dp\zer@>\rowdp@ \global\rowdp@\dp\zer@ \fi
   \global\advance\colcount@\@ne
   \edef\next@{\the\widthtoks@\noexpand\or\noexpand\getdim@\the\wd\zer@}%
    \global\widthtoks@=\expandafter{\next@}%
   \edef\next@{\the\heighttoks@\noexpand\or\noexpand\getdim@\the\ht\zer@}%
    \global\heighttoks@=\expandafter{\next@}%
   \edef\next@{\the\depthtoks@\noexpand\or\noexpand\getdim@\the\dp\zer@}%
    \global\depthtoks@=\expandafter{\next@}%
   \cr#1\crcr}}%
 \Rowcount@=\rowcount@
 \global\Widthtoks@=\expandafter{\the\Widthtoks@\fi\relax}%
 \edef\Width@##1##2{\i@=##1\relax\j@=##2\relax\the\Widthtoks@}%
 \global\Heighttoks@=\expandafter{\the\Heighttoks@\fi\relax}%
 \edef\Height@##1##2{\i@=##1\relax\j@=##2\relax\the\Heighttoks@}%
 \global\Depthtoks@=\expandafter{\the\Depthtoks@\fi\relax}%
 \edef\Depth@##1##2{\i@=##1\relax\j@=##2\relax\the\Depthtoks@}%
 \edef\next@{\the\Rowheighttoks@\noexpand\fi\relax}%
 \global\Rowheighttoks@=\expandafter{\next@}%
 \edef\Rowheight@##1{\i@=##1\relax\the\Rowheighttoks@}%
 \edef\next@{\the\Rowdepthtoks@\noexpand\fi\relax}%
 \global\Rowdepthtoks@=\expandafter{\next@}%
 \edef\Rowdepth@##1{\i@=##1\relax\the\Rowdepthtoks@}%
 \colwidthtoks@{\fi}%
 \setbox\zer@\vbox{%
  \unvbox\zer@
  \count@\rowcount@
  \loop
   \unskip\unpenalty
   \setbox\zer@\lastbox
   \ifnum\count@>\maxcolrow@ \advance\count@\m@ne
   \repeat
  \hbox{%
   \unhbox\zer@
   \count@\z@
   \loop
    \unskip
    \setbox\zer@\lastbox
    \edef\next@{\noexpand\or\noexpand\getdim@\the\wd\zer@\the\colwidthtoks@}%
     \global\colwidthtoks@=\expandafter{\next@}%
    \advance\count@\@ne
    \ifnum\count@<\Colcount@
    \repeat}}%
 \edef\next@{\noexpand\ifcase\noexpand\i@\the\colwidthtoks@}%
  \global\colwidthtoks@=\expandafter{\next@}%
 \edef\Colwidth@##1{\i@=##1\relax\the\colwidthtoks@}%
 \colwidthtoks@{}\Rowheighttoks@{}\Rowdepthtoks@{}\widthtoks@{}%
 \Widthtoks@{}\heighttoks@{}\Heighttoks@{}\depthtoks@{}\Depthtoks@{}%
}
\newcount\xoff@
\newcount\yoff@
\newcount\endcount@
\newcount\rcount@
\newdimen\firstx@
\newdimen\firsty@
\newdimen\secondx@
\newdimen\secondy@
\newdimen\tocenter@
\newdimen\charht@
\newdimen\charwd@
\def\outside@{\Err@{This arrow points outside the \string\CD}}
\newif\ifsvertex@
\newif\iftvertex@
\def\arrow@#1#2{\xoff@=#1\relax\yoff@=#2\relax
 \count@\rowcount@ \advance\count@-\yoff@
 \ifnum\count@<\@ne \outside@ \else \ifnum\count@>\Rowcount@ \outside@ \fi\fi
 \count@\colcount@ \advance\count@\xoff@
 \ifnum\count@<\@ne \outside@ \else \ifnum\count@>\Colcount@ \outside@\fi\fi
 \tcolcount@\colcount@ \advance\tcolcount@\xoff@
 \Width@\rowcount@\colcount@ \tocenter@=-\getdim@ \divide\tocenter@\tw@
 \ifdim\getdim@=\z@
  \firstx@\z@ \firsty@\mathaxis@ \svertex@true
 \else
  \svertex@false
  \ifHshort@
   \Colwidth@\colcount@
    \ifE@ \firstx@=.5\getdim@ \else \firstx@=-.5\getdim@ \fi
  \else
   \ifE@ \firstx@=\getdim@ \else \firstx@=-\getdim@ \fi
   \divide\firstx@\tw@
  \fi
  \ifE@
   \ifH@ \advance\firstx@\thr@@\p@ \else \advance\firstx@-\thr@@\p@ \fi
  \else
   \ifH@ \advance\firstx@-\thr@@\p@ \else \advance\firstx@\thr@@\p@ \fi
  \fi
  \ifN@
   \Height@\rowcount@\colcount@ \firsty@=\getdim@
   \ifV@ \advance\firsty@\thr@@\p@ \fi
  \else
   \ifV@
    \Depth@\rowcount@\colcount@ \firsty@=-\getdim@
    \advance\firsty@-\thr@@\p@
   \else
    \firsty@\z@
   \fi
  \fi
 \fi
 \ifV@
 \else
  \Colwidth@\colcount@
  \ifE@ \secondx@=\getdim@ \else \secondx@=-\getdim@ \fi
  \divide\secondx@\tw@
  \ifE@ \else \getcgap@\colcount@ \advance\secondx@-\getdim@ \fi
  \endcount@=\colcount@ \advance\endcount@\xoff@
  \count@=\colcount@
  \ifE@
   \advance\count@\@ne
   \loop
    \ifnum\count@<\endcount@
    \Colwidth@\count@ \advance\secondx@\getdim@
    \getcgap@\count@ \advance\secondx@\getdim@
    \advance\count@\@ne
    \repeat
  \else
   \advance\count@\m@ne
   \loop
    \ifnum\count@>\endcount@
    \Colwidth@\count@ \advance\secondx@-\getdim@
    \getcgap@\count@ \advance\secondx@-\getdim@
    \advance\count@\m@ne
    \repeat
  \fi
  \Colwidth@\count@ \divide\getdim@\tw@
  \ifHshort@
  \else
   \ifE@ \advance\secondx@\getdim@ \else \advance\secondx@-\getdim@ \fi
  \fi
  \ifE@ \getcgap@\count@ \advance\secondx@\getdim@ \fi
  \rcount@\rowcount@ \advance\rcount@-\yoff@
  \Width@\rcount@\count@ \divide\getdim@\tw@
  \tvertex@false
  \ifH@\ifdim\getdim@=\z@\tvertex@true\Hshort@false\fi\fi
  \ifHshort@
  \else
   \ifE@ \advance\secondx@-\getdim@ \else \advance\secondx@\getdim@ \fi
  \fi
  \iftvertex@
   \advance\secondx@.4\p@
  \else
   \ifE@ \advance\secondx@-\thr@@\p@ \else \advance\secondx@\thr@@\p@ \fi
  \fi
 \fi
 \ifH@
 \else
  \ifN@
   \Rowheight@\rowcount@ \secondy@\getdim@
  \else
   \Rowdepth@\rowcount@ \secondy@-\getdim@
   \getrgap@\rowcount@ \advance\secondy@-\getdim@
  \fi
  \endcount@=\rowcount@ \advance\endcount@-\yoff@
  \count@=\rowcount@
  \ifN@
   \advance\count@\m@ne
   \loop
    \ifnum\count@>\endcount@
    \Rowheight@\count@ \advance\secondy@\getdim@
    \Rowdepth@\count@ \advance\secondy@\getdim@
    \getrgap@\count@ \advance\secondy@\getdim@
    \advance\count@\m@ne
    \repeat
  \else
   \advance\count@\@ne
   \loop
    \ifnum\count@<\endcount@
    \Rowheight@\count@ \advance\secondy@-\getdim@
    \Rowdepth@\count@ \advance\secondy@-\getdim@
    \getrgap@\count@ \advance\secondy@-\getdim@
    \advance\count@\@ne
    \repeat
  \fi
  \tvertex@false
  \ifV@\Width@\count@\colcount@\ifdim\getdim@=\z@\tvertex@true\fi\fi
  \ifN@
   \getrgap@\count@ \advance\secondy@\getdim@
   \Rowdepth@\count@ \advance\secondy@\getdim@
   \iftvertex@
    \advance\secondy@\mathaxis@
   \else
    \Depth@\count@\tcolcount@ \advance\secondy@-\getdim@
    \advance\secondy@-\thr@@\p@
   \fi
  \else
   \Rowheight@\count@ \advance\secondy@-\getdim@
   \iftvertex@
    \advance\secondy@\mathaxis@
   \else
    \Height@\count@\tcolcount@ \advance\secondy@\getdim@
    \advance\secondy@\thr@@\p@
   \fi
  \fi
 \fi
 \ifV@\else\advance\firstx@\sxdimen@\fi
 \ifH@\else\advance\firsty@\sydimen@\fi
 \iftX@
  \advance\secondy@\tXdimen@ii
  \advance\secondx@\tXdimen@i
  \slope@
 \else
  \iftY@
   \advance\secondy@\tYdimen@ii
   \advance\secondx@\tYdimen@i
   \slope@
   \secondy@=\secondx@ \advance\secondy@-\firstx@
   \ifNESW@ \else \multiply\secondy@\m@ne \fi
   \multiply\secondy@\tan@i \divide\secondy@\tan@ii \advance\secondy@\firsty@
  \else
   \ifa@
    \slope@
    \ifNESW@ \global\advance\angcount@\exacount@ \else
      \global\advance\angcount@-\exacount@ \fi
    \ifnum\angcount@>23 \angcount@23 \fi
    \ifnum\angcount@<\@ne \angcount@\@ne \fi
    \slope@a\angcount@
    \ifY@
     \advance\secondy@\Ydimen@
    \else
     \ifX@
      \advance\secondx@\Xdimen@
      \dimen@\secondx@ \advance\dimen@-\firstx@
      \ifNESW@\else\multiply\dimen@\m@ne\fi
      \multiply\dimen@\tan@i \divide\dimen@\tan@ii
      \advance\dimen@\firsty@ \secondy@=\dimen@
     \fi
    \fi
   \else
    \ifH@\else\ifV@\else\slope@\fi\fi
   \fi
  \fi
 \fi
 \ifH@\else\ifV@\else\ifsvertex@\else
  \dimen@=6\p@ \multiply\dimen@\tan@ii
  \count@=\tan@i \advance\count@\tan@ii \divide\dimen@\count@
  \ifE@ \advance\firstx@\dimen@ \else \advance\firstx@-\dimen@ \fi
  \multiply\dimen@\tan@i \divide\dimen@\tan@ii
  \ifN@ \advance\firsty@\dimen@ \else \advance\firsty@-\dimen@ \fi
 \fi\fi\fi
 \ifp@
  \ifH@\else\ifV@\else
   \getcos@\pdimen@ \advance\firsty@\dimen@ \advance\secondy@\dimen@
   \ifNESW@ \advance\firstx@-\dimen@ii \else \advance\firstx@\dimen@ii \fi
  \fi\fi
 \fi
 \ifH@\else\ifV@\else
  \ifnum\tan@i>\tan@ii
   \charht@=10\p@ \charwd@=10\p@
   \multiply\charwd@\tan@ii \divide\charwd@\tan@i
  \else
   \charwd@=10\p@ \charht@=10\p@
   \divide\charht@\tan@ii \multiply\charht@\tan@i
  \fi
  \ifnum\tcount@=\thr@@
   \ifN@ \advance\secondy@-.3\charht@ \else\advance\secondy@.3\charht@ \fi
  \fi
  \ifnum\scount@=\tw@
   \ifE@ \advance\firstx@.3\charht@ \else \advance\firstx@-.3\charht@ \fi
  \fi
  \ifnum\tcount@=12
   \ifN@ \advance\secondy@-\charht@ \else \advance\secondy@\charht@ \fi
  \fi
  \iftY@
  \else
   \ifa@
    \ifX@
    \else
     \secondx@\secondy@ \advance\secondx@-\firsty@
     \ifNESW@\else\multiply\secondx@\m@ne\fi
     \multiply\secondx@\tan@ii \divide\secondx@\tan@i
     \advance\secondx@\firstx@
    \fi
   \fi
  \fi
 \fi\fi
 \ifH@\harrow@\else\ifV@\varrow@\else\arrow@@\fi\fi}
\newdimen\mathaxis@
\mathaxis@90\p@ \divide\mathaxis@36
\def\harrow@b{\ifE@\hskip\tocenter@\hskip\firstx@\fi}
\def\harrow@bb{\ifE@\hskip\xdimen@\else\hskip\Xdimen@\fi}
\def\harrow@e{\ifE@\else\hskip-\firstx@\hskip-\tocenter@\fi}
\def\harrow@ee{\ifE@\hskip-\Xdimen@\else\hskip-\xdimen@\fi}
\def\harrow@{\dimen@\secondx@\advance\dimen@-\firstx@
 \ifE@ \let\next@\rlap \else  \multiply\dimen@\m@ne \let\next@\llap \fi
 \next@{%
  \harrow@b
  \smash{\raise\pdimen@\hbox to\dimen@
   {\harrow@bb\arrow@ii
    \ifnum\arrcount@=\m@ne \else \ifnum\arrcount@=\thr@@ \else
     \ifE@
      \ifnum\scount@=\m@ne
      \else
       \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
       \char120 \or\char121 \or\char122 \or\or\or\arrow@i\char125 \or
       \char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi
      \fi
     \else
      \ifnum\tcount@=\m@ne
      \else
       \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
       \char120\or\or\or\or\or\char121 \or\char122 \or\arrow@i\char125
       \or\char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi
      \fi
     \fi
    \fi\fi
    \dimen@\mathaxis@ \advance\dimen@.2\p@
    \dimen@ii\mathaxis@ \advance\dimen@ii-.2\p@
    \ifnum\arrcount@=\m@ne
     \let\leads@\null
    \else
     \ifcase\arrcount@
      \def\leads@{\hrule height\dimen@ depth-\dimen@ii}\or
      \def\leads@{\hrule height\dimen@ depth-\dimen@ii}\or
      \def\leads@{\hbox to10\p@{%
       \leaders\hrule height\dimen@ depth-\dimen@ii\hfil
       \hfil
      \leaders\hrule height\dimen@ depth-\dimen@ii\hskip\z@ plus2fil\relax
       \hfil
       \leaders\hrule height\dimen@ depth-\dimen@ii\hfil}}\or
     \def\leads@{\hbox{\hbox to10\p@{\dimen@\mathaxis@ \advance\dimen@1.2\p@
       \dimen@ii\dimen@ \advance\dimen@ii-.4\p@
       \leaders\hrule height\dimen@ depth-\dimen@ii\hfil}%
       \kern-10\p@
       \hbox to10\p@{\dimen@\mathaxis@ \advance\dimen@-1.2\p@
       \dimen@ii\dimen@ \advance\dimen@ii-.4\p@
       \leaders\hrule height\dimen@ depth-\dimen@ii\hfil}}}\fi
    \fi
    \cleaders\leads@\hfil
    \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
     \arrow@i
     \ifE@
      \ifnum\tcount@=\m@ne
      \else
       \ifcase\tcount@\char119 \or\or\char119 \or\char120 \or\char121 \or
       \char122 \or \or\or\or\or\char123\or\char124 \or
       \char125 \or\char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi
      \fi
     \else
      \ifcase\scount@\or\or\char120 \or\char119 \or\or\or\char121 \or\char122
      \or\char123 \or\char124 \or\or\or\char125 \or
      \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi
     \fi
    \fi\fi
    \harrow@ee}}%
  \harrow@e}%
 \iflabel@i
  \dimen@ii\z@ \setbox\zer@\hbox{$\m@th\tsize@@\label@i$}%
  \ifnum\arrcount@=\m@ne
  \else
   \advance\dimen@ii\mathaxis@
   \advance\dimen@ii\dp\zer@ \advance\dimen@ii\tw@\p@
   \ifnum\arrcount@=\thr@@ \advance\dimen@ii\tw@\p@ \fi
  \fi
  \advance\dimen@ii\pdimen@
  \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@
   {\harrow@bb\hskip\tw@\ldimen@i\hfil\box\zer@\hfil\harrow@ee}}\harrow@e}%
 \fi
 \iflabel@ii
  \ifnum\arrcount@=\m@ne
  \else
   \setbox\zer@\hbox{$\m@th\tsize@\label@ii$}%
   \dimen@ii-\ht\zer@ \advance\dimen@ii-\tw@\p@
   \ifnum\arrcount@=\thr@@ \advance\dimen@ii-\tw@\p@ \fi
   \advance\dimen@ii\mathaxis@ \advance\dimen@ii\pdimen@
   \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@
    {\harrow@bb\hskip\tw@\ldimen@ii\hfil\box\zer@\hfil\harrow@ee}}\harrow@e}%
  \fi
 \fi}
\let\tsize@\tsize
\def\tsizeCDlabels{\let\tsize@\tsize}
\def\ssizeCDlabels{\let\tsize@\ssize}
\def\tsize@@{\ifnum\arrcount@=\m@ne\else\tsize@\fi}
\def\varrow@{\dimen@\secondy@ \advance\dimen@-\firsty@
 \ifN@ \else \multiply\dimen@\m@ne \fi
 \setbox\zer@\vbox to\dimen@
  {\ifN@ \vskip-\Ydimen@ \else \vskip\ydimen@ \fi
   \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
    \hbox{\arrow@iii
     \ifN@
      \ifnum\tcount@=\m@ne
      \else
       \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
       \char120 \or\or\or\or\or\char121 \or\char122 \or\char123 \or
       \vbox{\hbox{\char117 }\nointerlineskip\vskip\thr@@\p@
       \hbox{\char117 }\vskip-\thr@@\p@}\fi
      \fi
     \else
      \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
      \char120 \or\char121 \or\char122 \or\or\or\char123 \or
      \vbox{\hbox{\char117 }\nointerlineskip\vskip\thr@@\p@
      \hbox{\char117 }\vskip-\thr@@\p@}\fi
     \fi}%
    \nointerlineskip
   \fi\fi
   \ifnum\arrcount@=\m@ne
    \let\leads@\null
   \else
    \ifcase\arrcount@\let\leads@\vrule\or\let\leads@\vrule\or
    \def\leads@{\vbox to10\p@{%
     \hrule height 1.67\p@ depth\z@ width.4\p@
     \vfil
     \hrule height 3.33\p@ depth\z@ width.4\p@
     \vfil
     \hrule height 1.67\p@ depth\z@ width.4\p@}}\or
    \def\leads@{\hbox{\vrule height\p@\hskip\tw@\p@\vrule}}\fi
   \fi
  \cleaders\leads@\vfill\nointerlineskip
   \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
    \hbox{\arrow@iv
     \ifN@
      \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
      \char120 \or\char121 \or\char122 \or\or\or\arrow@iii\char123 \or
      \vbox{\hbox{\char117 }\nointerlineskip\vskip-\thr@@\p@
      \hbox{\char117 }\vskip\thr@@\p@}\fi
     \else
      \ifnum\tcount@=\m@ne
      \else
       \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
       \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@iii\char123 \or
       \vbox{\hbox{\char117 }\nointerlineskip\vskip-\thr@@\p@
       \hbox{\char117 }\vskip\thr@@\p@}\fi
      \fi
     \fi}%
   \fi\fi
   \ifN@\vskip\ydimen@\else\vskip-\Ydimen@\fi}%
 \ifN@
  \dimen@ii\firsty@
 \else
  \dimen@ii-\firsty@ \advance\dimen@ii\ht\zer@ \multiply\dimen@ii\m@ne
 \fi
 \rlap{\smash{\hskip\tocenter@ \hskip\pdimen@ \raise\dimen@ii \box\zer@}}%
 \iflabel@i
  \setbox\zer@\vbox to\dimen@{\vfil
   \hbox{$\m@th\tsize@@\label@i$}\vskip\tw@\ldimen@i\vfil}%
  \rlap{\smash{\hskip\tocenter@ \hskip\pdimen@
  \ifnum\arrcount@=\m@ne \let\next@\relax \else \let\next@\llap \fi
  \next@{\raise\dimen@ii\hbox{\ifnum\arrcount@=\m@ne \hskip-.5\wd\zer@ \fi
   \box\zer@ \ifnum\arrcount@=\m@ne \else \hskip\tw@\p@ \fi}}}}%
 \fi
 \iflabel@ii
  \ifnum\arrcount@=\m@ne
  \else
   \setbox\zer@\vbox to\dimen@{\vfil
    \hbox{$\m@th\tsize@\label@ii$}\vskip\tw@\ldimen@ii\vfil}%
   \rlap{\smash{\hskip\tocenter@ \hskip\pdimen@
   \rlap{\raise\dimen@ii\hbox{\ifnum\arrcount@=\thr@@ \hskip4.5\p@ \else
    \hskip2.5\p@ \fi\box\zer@}}}}%
  \fi
 \fi
}
\newdimen\goal@
\newdimen\shifted@
\newcount\Tcount@
\newcount\Scount@
\newbox\shaft@
\newcount\slcount@
\def\getcos@#1{%
 \ifnum\tan@i<\tan@ii
  \dimen@#1%
  \ifnum\slcount@<8 \count@9 \else \ifnum\slcount@<12 \count@8 \else
   \count@7 \fi\fi
  \multiply\dimen@\count@ \divide\dimen@10
  \dimen@ii\dimen@ \multiply\dimen@ii\tan@i \divide\dimen@ii\tan@ii
 \else
  \dimen@ii#1%
  \count@-\slcount@ \advance\count@24
  \ifnum\count@<8 \count@9 \else \ifnum\count@<12 \count@8
   \else\count@7 \fi\fi
  \multiply\dimen@ii\count@ \divide\dimen@ii10
  \dimen@\dimen@ii \multiply\dimen@\tan@ii \divide\dimen@\tan@i
 \fi}
\newdimen\adjust@
\def\Nnext@{\ifN@\let\next@\raise\else\let\next@\lower\fi}
\def\arrow@@{\slcount@\angcount@
 \ifNESW@
  \ifnum\angcount@<10
   \let\arrowfont@=\arrow@i \advance\angcount@\m@ne \multiply\angcount@13
  \else
   \ifnum\angcount@<19
    \let\arrowfont@=\arrow@ii \advance\angcount@-10 \multiply\angcount@13
   \else
    \let\arrowfont@=\arrow@iii \advance\angcount@-19 \multiply\angcount@13
  \fi\fi
  \Tcount@\angcount@
 \else
  \ifnum\angcount@<5
   \let\arrowfont@=\arrow@iii \advance\angcount@\m@ne \multiply\angcount@13
   \advance\angcount@65
  \else
   \ifnum\angcount@<14
    \let\arrowfont@=\arrow@iv \advance\angcount@-5 \multiply\angcount@13
   \else
    \ifnum\angcount@<23
     \let\arrowfont@=\arrow@v \advance\angcount@-14 \multiply\angcount@13
    \else
     \let\arrowfont@=\arrow@i \angcount@=117
  \fi\fi\fi
  \ifnum\angcount@=117 \Tcount@=115 \else\Tcount@\angcount@ \fi
 \fi
 \Scount@\Tcount@
 \ifE@
  \ifnum\tcount@=\z@ \advance\Tcount@\tw@ \else\ifnum\tcount@=13
   \advance\Tcount@\tw@ \else \advance\Tcount@\tcount@ \fi\fi
  \ifnum\scount@=\z@ \else \ifnum\scount@=13 \advance\Scount@\thr@@ \else
   \advance\Scount@\scount@ \fi\fi
 \else
  \ifcase\tcount@\advance\Tcount@\thr@@\or\or\advance\Tcount@\thr@@\or
  \advance\Tcount@\tw@\or\advance\Tcount@6 \or\advance\Tcount@7
  \or\or\or\or\or \advance\Tcount@8 \or\advance\Tcount@9 \or
  \advance\Tcount@12 \or\advance\Tcount@\thr@@\fi
  \ifcase\scount@\or\or\advance\Scount@\thr@@\or\advance\Scount@\tw@\or
  \or\or\advance\Scount@4 \or\advance\Scount@5 \or\advance\Scount@10
  \or\advance\Scount@11 \or\or\or\advance\Scount@12 \or\advance
  \Scount@\tw@\fi
 \fi
 \ifcase\arrcount@\or\or\advance\angcount@\@ne\else\fi
 \ifN@ \shifted@=\firsty@ \else\shifted@=-\firsty@ \fi
 \ifE@ \else\advance\shifted@\charht@ \fi
 \goal@=\secondy@ \advance\goal@-\firsty@
 \ifN@\else\multiply\goal@\m@ne\fi
 \setbox\shaft@\hbox{\arrowfont@\char\angcount@}%
 \ifnum\arrcount@=\thr@@
  \getcos@{1.5\p@}%
  \setbox\shaft@\hbox to\wd\shaft@{\arrowfont@
   \rlap{\hskip\dimen@ii
    \smash{\ifNESW@\let\next@\lower\else\let\next@\raise\fi
     \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}%
   \rlap{\hskip-\dimen@ii
    \smash{\ifNESW@\let\next@\raise\else\let\next@\lower\fi
      \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}\hfil}%
 \fi
 \rlap{\smash{\hskip\tocenter@\hskip\firstx@
  \ifnum\arrcount@=\m@ne
  \else
   \ifnum\arrcount@=\thr@@
   \else
    \ifnum\scount@=\m@ne
    \else
     \ifnum\scount@=\z@
     \else
      \setbox\zer@\hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi
       \char\Scount@}%
      \ifNESW@
       \ifnum\scount@=\tw@
        \dimen@=\shifted@ \advance\dimen@-\charht@
        \ifN@\hskip-\wd\zer@\fi
        \Nnext@
        \next@\dimen@\copy\zer@
        \ifN@\else\hskip-\wd\zer@\fi
       \else
        \Nnext@
        \ifN@\else\hskip-\wd\zer@\fi
        \next@\shifted@\copy\zer@
        \ifN@\hskip-\wd\zer@\fi
       \fi
       \ifnum\scount@=12
        \advance\shifted@\charht@ \advance\goal@-\charht@
        \ifN@ \hskip\wd\zer@ \else \hskip-\wd\zer@ \fi
       \fi
       \ifnum\scount@=13
        \getcos@{\thr@@\p@}%
        \ifN@ \hskip\dimen@ \else \hskip-\wd\zer@ \hskip-\dimen@ \fi
        \adjust@\shifted@ \advance\adjust@\dimen@ii
        \Nnext@
        \next@\adjust@\copy\zer@
        \ifN@ \hskip-\dimen@ \hskip-\wd\zer@ \else \hskip\dimen@ \fi
       \fi
      \else
       \ifN@\hskip-\wd\zer@\fi
       \ifnum\scount@=\tw@
        \ifN@ \hskip\wd\zer@ \else \hskip-\wd\zer@ \fi
        \dimen@=\shifted@ \advance\dimen@-\charht@
        \Nnext@
        \next@\dimen@\copy\zer@
        \ifN@\hskip-\wd\zer@\fi
       \else
        \Nnext@
        \next@\shifted@\copy\zer@
        \ifN@\else\hskip-\wd\zer@\fi
       \fi
       \ifnum\scount@=12
        \advance\shifted@\charht@ \advance\goal@-\charht@
        \ifN@ \hskip-\wd\zer@ \else \hskip\wd\zer@ \fi
       \fi
       \ifnum\scount@=13
        \getcos@{\thr@@\p@}%
        \ifN@ \hskip-\wd\zer@ \hskip-\dimen@ \else \hskip\dimen@ \fi
        \adjust@\shifted@ \advance\adjust@\dimen@ii
        \Nnext@
        \next@\adjust@\copy\zer@
        \ifN@ \hskip\dimen@ \else \hskip-\dimen@ \hskip-\wd\zer@ \fi
       \fi	
      \fi
  \fi\fi\fi\fi
  \ifnum\arrcount@=\m@ne
  \else
   \loop
    \ifdim\goal@>\charht@
    \ifE@\else\hskip-\charwd@\fi
    \Nnext@
    \next@\shifted@\copy\shaft@
    \ifE@\else\hskip-\charwd@\fi
    \advance\shifted@\charht@ \advance\goal@ -\charht@
    \repeat
   \ifdim\goal@>\z@
    \dimen@=\charht@ \advance\dimen@-\goal@
    \divide\dimen@\tan@i \multiply\dimen@\tan@ii
    \ifE@ \hskip-\dimen@ \else \hskip-\charwd@ \hskip\dimen@ \fi
    \adjust@=\shifted@ \advance\adjust@-\charht@ \advance\adjust@\goal@
    \Nnext@
    \next@\adjust@\copy\shaft@
    \ifE@ \else \hskip-\charwd@ \fi
   \else
    \adjust@=\shifted@ \advance\adjust@-\charht@
   \fi
  \fi
  \ifnum\arrcount@=\m@ne
  \else
   \ifnum\arrcount@=\thr@@
   \else
    \ifnum\tcount@=\m@ne
    \else
     \setbox\zer@
      \hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi\char\Tcount@}%
     \ifnum\tcount@=\thr@@
      \advance\adjust@\charht@
      \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\zer@\fi\fi
     \else
      \ifnum\tcount@=12
       \advance\adjust@\charht@
       \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\zer@\fi\fi
      \else
       \ifE@\hskip-\wd\zer@\fi
     \fi\fi
     \Nnext@
     \next@\adjust@\copy\zer@
     \ifnum\tcount@=13
      \hskip-\wd\zer@
      \getcos@{\thr@@\p@}%
      \ifE@\hskip-\dimen@ \else\hskip\dimen@ \fi
      \advance\adjust@-\dimen@ii
      \Nnext@
      \next@\adjust@\box\zer@
     \fi
  \fi\fi\fi}}%
 \iflabel@i
  \rlap{\hskip\tocenter@
  \dimen@\firstx@ \advance\dimen@\secondx@ \divide\dimen@\tw@
  \advance\dimen@\ldimen@i
  \dimen@ii\firsty@ \advance\dimen@ii\secondy@ \divide\dimen@ii\tw@
  \multiply\ldimen@i\tan@i \divide\ldimen@i\tan@ii
  \ifNESW@ \advance\dimen@ii\ldimen@i \else \advance\dimen@ii-\ldimen@i \fi
  \setbox\zer@\hbox{\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@\else
   \hskip\tw@\p@\fi\fi
   $\m@th\tsize@@\label@i$\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else
   \hskip\tw@\p@\fi\fi}%
  \ifnum\arrcount@=\m@ne
   \ifNESW@ \advance\dimen@.5\wd\zer@ \advance\dimen@\p@ \else
    \advance\dimen@-.5\wd\zer@ \advance\dimen@-\p@ \fi
   \advance\dimen@ii-.5\ht\zer@
  \else
   \advance\dimen@ii\dp\zer@
   \ifnum\slcount@<6 \advance\dimen@ii\tw@\p@ \fi
  \fi
  \hskip\dimen@
  \ifNESW@ \let\next@\llap \else\let\next@\rlap \fi
  \next@{\smash{\raise\dimen@ii\box\zer@}}}%
 \fi
 \iflabel@ii
  \ifnum\arrcount@=\m@ne
  \else
   \rlap{\hskip\tocenter@
   \dimen@\firstx@ \advance\dimen@\secondx@ \divide\dimen@\tw@
   \ifNESW@ \advance\dimen@\ldimen@ii \else \advance\dimen@-\ldimen@ii \fi
   \dimen@ii\firsty@ \advance\dimen@ii\secondy@ \divide\dimen@ii\tw@
   \multiply\ldimen@ii\tan@i \divide\ldimen@ii\tan@ii
   \advance\dimen@ii\ldimen@ii
   \setbox\zer@\hbox{\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else
    \hskip\tw@\p@\fi\fi
    $\m@th\tsize@\label@ii$\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@
    \else\hskip\tw@\p@\fi\fi}%
   \advance\dimen@ii-\ht\zer@
   \ifnum\slcount@<9 \advance\dimen@ii-\thr@@\p@ \fi
   \ifNESW@ \let\next@\rlap \else \let\next@\llap \fi
   \hskip\dimen@\next@{\smash{\raise\dimen@ii\box\zer@}}}%
  \fi
 \fi
}
\def\outCD@#1{\def#1{\Err@{\string#1 must not be used within \string\CD}}}
\newskip\preCDskip@
\newskip\postCDskip@
\preCDskip@\z@
\postCDskip@\z@
\def\preCDspace#1{\RIfMIfI@
 \onlydmatherr@\preCDspace\else\advance\preCDskip@#1\relax\fi\else
 \onlydmatherr@\preCDspace\fi}
\def\postCDspace#1{\RIfMIfI@
 \onlydmatherr@\postCDspace\else\advance\postCDskip@#1\relax\fi\else
 \onlydmatherr@\postCDspace\fi}
\def\predisplayspace#1{\RIfMIfI@
 \onlydmatherr@\predisplayspace\else
 \advance\abovedisplayskip#1\relax
 \advance\abovedisplayshortskip#1\relax\fi
 \else\onlydmatherr@\preCDspace\fi}
\def\postdisplayspace#1{\RIfMIfI@
 \onlydmatherr@\postdisplayspace\else
 \advance\belowdisplayskip#1\relax
 \advance\belowdisplayshortskip#1\relax\fi
 \else\onlydmatherr@\postdisplayspace\fi}
\def\PreCDSpace#1{\global\preCDskip@#1\relax}
\def\PostCDSpace#1{\global\postCDskip@#1\relax}
\def\CD#1\endCD{%
 \outCD@\cgaps\outCD@\rgaps\outCD@\Cgaps\outCD@\Rgaps
 \preCD@#1\endCD
 \advance\abovedisplayskip\preCDskip@
 \advance\abovedisplayshortskip\preCDskip@
 \advance\belowdisplayskip\postCDskip@
 \advance\belowdisplayshortskip\postCDskip@
 \vcenter{\vskip\preCDskip@ \Let@ \colcount@\@ne \rowcount@\z@
  \everycr{%
   \noalign{%
    \ifnum\rowcount@=\Rowcount@
    \else
     \global\nointerlineskip
     \getrgap@\rowcount@ \vskip\getdim@
     \global\advance\rowcount@\@ne \global\colcount@\@ne
    \fi}}%
  \tabskip\z@
  \halign{&\global\xoff@\z@ \global\yoff@\z@
   \getcgap@\colcount@ \hskip\getdim@
   \hfil\vrule height10\p@ width\z@ depth\z@
   $\m@th\displaystyle{##}$\hfil
   \global\advance\colcount@\@ne\cr
   #1\crcr}\vskip\postCDskip@}%
 \preCDskip@\z@\postCDskip@\z@
 \def\getcgap@##1{\ifcase##1\or\getdim@\z@\else\getdim@\standardcgap\fi}%
 \def\getrgap@##1{\ifcase##1\getdim@\z@\else\getdim@\standardrgap\fi}%
 \let\Width@\relax\let\Height@\relax\let\Depth@\relax\let\Rowheight@\relax
 \let\Rowdepth@\relax\let\Colwdith@\relax
}
