%% %% This is file `xinttools.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% xint.dtx (with options: `xinttools') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from xinttools.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file xint.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% --------------------------------------------------------------- %% The xint bundle 1.2h 2016/11/20 %% Copyright (C) 2013-2016 by Jean-Francois Burnol %% xinttools: Expandable and non-expandable utilities %% --------------------------------------------------------------- \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode64=11 % @ \catcode35=6 % # \catcode44=12 % , \catcode45=12 % - \catcode46=12 % . \catcode58=12 % : \let\z\endgroup \expandafter\let\expandafter\x\csname ver@xinttools.sty\endcsname \expandafter\let\expandafter\w\csname ver@xintkernel.sty\endcsname \expandafter \ifx\csname PackageInfo\endcsname\relax \def\y#1#2{\immediate\write-1{Package #1 Info: #2.}}% \else \def\y#1#2{\PackageInfo{#1}{#2}}% \fi \expandafter \ifx\csname numexpr\endcsname\relax \y{xinttools}{\numexpr not available, aborting input}% \aftergroup\endinput \else \ifx\x\relax % plain-TeX, first loading of xinttools.sty \ifx\w\relax % but xintkernel.sty not yet loaded. \def\z{\endgroup\input xintkernel.sty\relax}% \fi \else \def\empty {}% \ifx\x\empty % LaTeX, first loading, % variable is initialized, but \ProvidesPackage not yet seen \ifx\w\relax % xintkernel.sty not yet loaded. \def\z{\endgroup\RequirePackage{xintkernel}}% \fi \else \aftergroup\endinput % xinttools already loaded. \fi \fi \fi \z% \XINTsetupcatcodes% defined in xintkernel.sty \XINT_providespackage \ProvidesPackage{xinttools}% [2016/11/20 1.2h Expandable and non-expandable utilities (JFB)]% \newtoks\XINT_toks \xint_firstofone{\let\XINT_sptoken= } %<- space here! \def\xintgodef {\global\xintodef }% \def\xintgoodef {\global\xintoodef }% \def\xintgfdef {\global\xintfdef }% \def\xintRevWithBraces {\romannumeral0\xintrevwithbraces }% \def\xintRevWithBracesNoExpand {\romannumeral0\xintrevwithbracesnoexpand }% \long\def\xintrevwithbraces #1% {% \expandafter\XINT_revwbr_loop\expandafter{\expandafter}% \romannumeral`&&@#1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \long\def\xintrevwithbracesnoexpand #1% {% \XINT_revwbr_loop {}% #1\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \long\def\XINT_revwbr_loop #1#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_revwbr_finish_a\xint_relax \XINT_revwbr_loop {{#9}{#8}{#7}{#6}{#5}{#4}{#3}{#2}#1}% }% \long\def\XINT_revwbr_finish_a\xint_relax\XINT_revwbr_loop #1#2\xint_bye {% \XINT_revwbr_finish_b #2\R\R\R\R\R\R\R\Z #1% }% \def\XINT_revwbr_finish_b #1#2#3#4#5#6#7#8\Z {% \xint_gob_til_R #1\XINT_revwbr_finish_c \xint_gobble_viii #2\XINT_revwbr_finish_c \xint_gobble_vii #3\XINT_revwbr_finish_c \xint_gobble_vi #4\XINT_revwbr_finish_c \xint_gobble_v #5\XINT_revwbr_finish_c \xint_gobble_iv #6\XINT_revwbr_finish_c \xint_gobble_iii #7\XINT_revwbr_finish_c \xint_gobble_ii \R\XINT_revwbr_finish_c \xint_gobble_i\Z }% \edef\XINT_revwbr_finish_c #1#2\Z {\noexpand\expandafter\space #1}% \def\xintZapFirstSpaces {\romannumeral0\xintzapfirstspaces }% \long\edef\xintzapfirstspaces #1% {\noexpand\XINT_zapbsp_a \space #1\xint_relax \space\space\xint_relax }% \xint_firstofone {\long\edef\XINT_zapbsp_a #1 } %<- space token here {% \noexpand\XINT_zapbsp_again? #1\noexpand\xint_bye\noexpand\XINT_zapbsp_b #1\space\space }% \long\def\XINT_zapbsp_again? #1{\xint_bye #1\XINT_zapbsp_again }% \xint_firstofone{\def\XINT_zapbsp_again\XINT_zapbsp_b} {\XINT_zapbsp_a }% \long\def\XINT_zapbsp_b #1\xint_relax #2\xint_relax {#1}% \def\xintZapLastSpaces {\romannumeral0\xintzaplastspaces }% \long\edef\xintzaplastspaces #1{\noexpand\XINT_zapesp_a {}\noexpand\empty#1% \space\space\noexpand\xint_bye\xint_relax}% \xint_firstofone {\long\def\XINT_zapesp_a #1#2 } %<- second space here {\expandafter\XINT_zapesp_b\expandafter{#2}{#1}}% \long\def\XINT_zapesp_b #1#2#3\xint_relax {\XINT_zapesp_end? #3\XINT_zapesp_e {#2#1}\empty #3\xint_relax }% \long\def\XINT_zapesp_end? #1{\xint_bye #1\XINT_zapesp_end }% \long\def\XINT_zapesp_end\XINT_zapesp_e #1#2\xint_relax { #1}% \long\edef\XINT_zapesp_e #1{\noexpand \XINT_zapesp_a {#1\space\space}}% \def\xintZapSpaces {\romannumeral0\xintzapspaces }% \long\edef\xintzapspaces #1% like \xintZapFirstSpaces. {\noexpand\XINT_zapsp_a \space #1\xint_relax \space\space\xint_relax }% \xint_firstofone {\long\edef\XINT_zapsp_a #1 } % {\noexpand\XINT_zapsp_again? #1\noexpand\xint_bye\noexpand\XINT_zapsp_b #1\space\space}% \long\def\XINT_zapsp_again? #1{\xint_bye #1\XINT_zapsp_again }% \xint_firstofone{\def\XINT_zapsp_again\XINT_zapsp_b} {\XINT_zapsp_a }% \xint_firstofone{\def\XINT_zapsp_b} {\XINT_zapsp_c }% \long\edef\XINT_zapsp_c #1\xint_relax #2\xint_relax {\noexpand\XINT_zapesp_a {}\noexpand \empty #1\space\space\noexpand\xint_bye\xint_relax }% \def\xintZapSpacesB {\romannumeral0\xintzapspacesb }% \long\def\xintzapspacesb #1{\XINT_zapspb_one? #1\xint_relax\xint_relax \xint_bye\xintzapspaces {#1}}% \long\def\XINT_zapspb_one? #1#2% {\xint_gob_til_xint_relax #1\XINT_zapspb_onlyspaces\xint_relax \xint_gob_til_xint_relax #2\XINT_zapspb_bracedorone\xint_relax \xint_bye {#1}}% \def\XINT_zapspb_onlyspaces\xint_relax \xint_gob_til_xint_relax\xint_relax\XINT_zapspb_bracedorone\xint_relax \xint_bye #1\xint_bye\xintzapspaces #2{ }% \long\def\XINT_zapspb_bracedorone\xint_relax \xint_bye #1\xint_relax\xint_bye\xintzapspaces #2{ #1}% \def\xintCSVtoList {\romannumeral0\xintcsvtolist }% \long\def\xintcsvtolist #1{\expandafter\xintApply \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstripped{#1}}}% \def\xintCSVtoListNoExpand {\romannumeral0\xintcsvtolistnoexpand }% \long\def\xintcsvtolistnoexpand #1{\expandafter\xintApply \expandafter\xintzapspacesb \expandafter{\romannumeral0\xintcsvtolistnonstrippednoexpand{#1}}}% \def\xintCSVtoListNonStripped {\romannumeral0\xintcsvtolistnonstripped }% \def\xintCSVtoListNonStrippedNoExpand {\romannumeral0\xintcsvtolistnonstrippednoexpand }% \long\def\xintcsvtolistnonstripped #1% {% \expandafter\XINT_csvtol_loop_a\expandafter {\expandafter}\romannumeral`&&@#1% ,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% \long\def\xintcsvtolistnonstrippednoexpand #1% {% \XINT_csvtol_loop_a {}#1,\xint_bye,\xint_bye,\xint_bye,\xint_bye ,\xint_bye,\xint_bye,\xint_bye,\xint_bye,\Z }% \long\def\XINT_csvtol_loop_a #1#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_bye #9\XINT_csvtol_finish_a\xint_bye \XINT_csvtol_loop_b {#1}{{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}% }% \long\def\XINT_csvtol_loop_b #1#2{\XINT_csvtol_loop_a {#1#2}}% \long\def\XINT_csvtol_finish_a\xint_bye\XINT_csvtol_loop_b #1#2#3\Z {% \XINT_csvtol_finish_b #3\R,\R,\R,\R,\R,\R,\R,\Z #2{#1}% }% \def\XINT_csvtol_finish_b #1,#2,#3,#4,#5,#6,#7,#8\Z {% \xint_gob_til_R #1\expandafter\XINT_csvtol_finish_dviii\xint_gob_til_Z #2\expandafter\XINT_csvtol_finish_dvii \xint_gob_til_Z #3\expandafter\XINT_csvtol_finish_dvi \xint_gob_til_Z #4\expandafter\XINT_csvtol_finish_dv \xint_gob_til_Z #5\expandafter\XINT_csvtol_finish_div \xint_gob_til_Z #6\expandafter\XINT_csvtol_finish_diii \xint_gob_til_Z #7\expandafter\XINT_csvtol_finish_dii \xint_gob_til_Z \R\XINT_csvtol_finish_di \Z }% \long\def\XINT_csvtol_finish_dviii #1#2#3#4#5#6#7#8#9{ #9}% \long\def\XINT_csvtol_finish_dvii #1#2#3#4#5#6#7#8#9{ #9{#1}}% \long\def\XINT_csvtol_finish_dvi #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}}% \long\def\XINT_csvtol_finish_dv #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}}% \long\def\XINT_csvtol_finish_div #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}}% \long\def\XINT_csvtol_finish_diii #1#2#3#4#5#6#7#8#9{ #9{#1}{#2}{#3}{#4}{#5}}% \long\def\XINT_csvtol_finish_dii #1#2#3#4#5#6#7#8#9% { #9{#1}{#2}{#3}{#4}{#5}{#6}}% \long\def\XINT_csvtol_finish_di\Z #1#2#3#4#5#6#7#8#9% { #9{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% \def\xintListWithSep {\romannumeral0\xintlistwithsep }% \def\xintListWithSepNoExpand {\romannumeral0\xintlistwithsepnoexpand }% \long\def\xintlistwithsep #1#2% {\expandafter\XINT_lws\expandafter {\romannumeral`&&@#2}{#1}}% \long\def\XINT_lws #1#2{\XINT_lws_start {#2}#1\xint_bye }% \long\def\xintlistwithsepnoexpand #1#2{\XINT_lws_start {#1}#2\xint_bye }% \long\def\XINT_lws_start #1#2% {% \xint_bye #2\XINT_lws_dont\xint_bye \XINT_lws_loop_a {#2}{#1}% }% \long\def\XINT_lws_dont\xint_bye\XINT_lws_loop_a #1#2{ }% \long\def\XINT_lws_loop_a #1#2#3% {% \xint_bye #3\XINT_lws_end\xint_bye \XINT_lws_loop_b {#1}{#2#3}{#2}% }% \long\def\XINT_lws_loop_b #1#2{\XINT_lws_loop_a {#1#2}}% \long\def\XINT_lws_end\xint_bye\XINT_lws_loop_b #1#2#3{ #1}% \def\xintNthElt {\romannumeral0\xintnthelt }% \def\xintNthEltNoExpand {\romannumeral0\xintntheltnoexpand }% \long\def\xintnthelt #1#2{\expandafter\XINT_nthelt_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintntheltnoexpand #1{\expandafter\XINT_nthelt_a\the\numexpr #1.}% \def\XINT_nthelt_a #1% {% \xint_UDzerominusfork #1-{\XINT_nthelt_zero }% 0#1{\XINT_nthelt_neg }% 0-{\XINT_nthelt_pos #1}% \krof }% \def\XINT_nthelt_zero .{\xintlength }% \long\def\XINT_nthelt_neg #1.#2% {% \expandafter\XINT_nthelt_neg_a\the\numexpr \XINT_length_loop 0.#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye +\xint_c_i -#1.% #2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_nthelt_neg_a #1% {% \xint_UDzerominusfork #1-{\XINT_nthelt_none }% 0#1{\XINT_nthelt_none }% 0-{\XINT_nthelt_loop_a #1}% \krof }% \long\def\XINT_nthelt_none #1\xint_bye{ }% \long\def\XINT_nthelt_pos #1.#2% {% \XINT_nthelt_loop_a #1.% #2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_nthelt_loop_a #1.% {% \ifnum #1>\xint_c_viii \expandafter\XINT_nthelt_loop_b \else \expandafter\XINT_nthelt_getit \fi #1.% }% \long\def\XINT_nthelt_loop_b #1.#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_nthelt_none\xint_relax \expandafter\XINT_nthelt_loop_a\the\numexpr #1-\xint_c_viii.% }% \def\XINT_nthelt_getit #1.% {% \expandafter\expandafter\expandafter\XINT_nthelt_finish \csname xint_gobble_\romannumeral\numexpr#1-\xint_c_i\endcsname }% \long\edef\XINT_nthelt_finish #1#2\xint_bye {\noexpand\xint_gob_til_xint_relax #1\noexpand\expandafter\space \noexpand\xint_gobble_ii\xint_relax\space #1}% \def\xintKeep {\romannumeral0\xintkeep }% \def\xintKeepNoExpand {\romannumeral0\xintkeepnoexpand }% \long\def\xintkeep #1#2{\expandafter\XINT_keep_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintkeepnoexpand #1{\expandafter\XINT_keep_a\the\numexpr #1.}% \def\XINT_keep_a #1% {% \xint_UDzerominusfork #1-{\XINT_keep_keepnone }% 0#1{\XINT_keep_neg }% 0-{\XINT_keep_pos #1}% \krof }% \long\def\XINT_keep_keepnone .#1{ }% \long\def\XINT_keep_neg #1.#2% {% \expandafter\XINT_keep_neg_a\the\numexpr \XINT_length_loop 0.#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye -#1.% #2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_keep_neg_a #1% {% \xint_UDzerominusfork #1-{\XINT_keep_keepall }% 0#1{\XINT_keep_keepall }% 0-{\XINT_trim_loop_a #1}% \krof }% \def\XINT_keep_keepall #1.{\XINT_keep_keepall_a \space}% \def\XINT_keep_keepall_a #1\xint_relax #2\xint_bye {#1}% \long\def\XINT_keep_pos #1.#2% {% \XINT_keep_loop_a #1.% {}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_keep_loop_a #1.% {% \ifnum #1>\xint_c_vi \expandafter\XINT_keep_loop_b \else \expandafter\XINT_keep_finish \fi #1.% }% \long\def\XINT_keep_loop_b #1.#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_keep_enda\xint_relax \expandafter\XINT_keep_loop_c\the\numexpr #1-\xint_c_vii.% {{#3}{#4}{#5}{#6}{#7}{#8}{#9}}{#2}% }% \long\def\XINT_keep_loop_c #1.#2#3{\XINT_keep_loop_a #1.{#3#2}}% \long\def\XINT_keep_enda #1.#2#3#4\xint_bye {% \XINT_keep_endb #4\W\W\W\W\W\W\Z #2{#3}% }% \def\XINT_keep_endb #1#2#3#4#5#6#7\Z {% \xint_gob_til_W #1\XINT_keep_endc_ #2\XINT_keep_endc_i #3\XINT_keep_endc_ii #4\XINT_keep_endc_iii #5\XINT_keep_endc_iv #6\XINT_keep_endc_v \W\XINT_keep_endc_vi\Z }% \long\def\XINT_keep_endc_ #1\Z #2#3#4#5#6#7#8#9{ #9}% \long\def\XINT_keep_endc_i #1\Z #2#3#4#5#6#7#8#9{#9{#2}}% \long\def\XINT_keep_endc_ii #1\Z #2#3#4#5#6#7#8#9{#9{#2}{#3}}% \long\def\XINT_keep_endc_iii #1\Z #2#3#4#5#6#7#8#9{#9{#2}{#3}{#4}}% \long\def\XINT_keep_endc_iv #1\Z #2#3#4#5#6#7#8#9{#9{#2}{#3}{#4}{#5}}% \long\def\XINT_keep_endc_v #1\Z #2#3#4#5#6#7#8#9{#9{#2}{#3}{#4}{#5}{#6}}% \long\def\XINT_keep_endc_vi\Z #1#2#3#4#5#6#7#8{#8{#1}{#2}{#3}{#4}{#5}{#6}}% \long\def\XINT_keep_finish #1.#2#3#4#5#6#7#8#9\xint_bye {% \XINT_keep_finish_a #1.% #3\xint_c_ #4\xint_c_i #5\xint_c_ii #6\xint_c_iii #7\xint_c_iv #8\xint_c_v\xint_relax\xint_c_vi\xint_bye {#3}{#4}{#5}{#6}{#7}{#8}\xint_bye {#2}% }% \long\def\XINT_keep_finish_a #1.#2\xint_relax #3#4\xint_bye {% \csname XINT_keep_finish_b\romannumeral\ifnum#1>#3#3\else#1\fi\endcsname }% \long\def\XINT_keep_finish_b #1\xint_bye #2{ #2}% \long\def\XINT_keep_finish_bi #1#2\xint_bye #3{#3{#1}}% \long\def\XINT_keep_finish_bii #1#2#3\xint_bye #4{#4{#1}{#2}}% \long\def\XINT_keep_finish_biii#1#2#3#4\xint_bye #5{#5{#1}{#2}{#3}}% \long\def\XINT_keep_finish_biv #1#2#3#4#5\xint_bye #6{#6{#1}{#2}{#3}{#4}}% \long\def\XINT_keep_finish_bv #1#2#3#4#5#6\xint_bye #7{#7{#1}{#2}{#3}{#4}{#5}}% \long\def\XINT_keep_finish_bvi #1\xint_bye #2{#2#1}% \def\xintKeepUnbraced {\romannumeral0\xintkeepunbraced }% \def\xintKeepUnbracedNoExpand {\romannumeral0\xintkeepunbracednoexpand }% \long\def\xintkeepunbraced #1#2% {\expandafter\XINT_keepunbr_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xintkeepunbracednoexpand #1% {\expandafter\XINT_keepunbr_a\the\numexpr #1.}% \def\XINT_keepunbr_a #1% {% \xint_UDzerominusfork #1-{\XINT_keep_keepnone }% 0#1{\XINT_keep_neg }% 0-{\XINT_keepunbr_pos #1}% \krof }% \long\def\XINT_keepunbr_pos #1.#2% {% \XINT_keepunbr_loop_a #1.% {}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_keepunbr_loop_a #1.% {% \ifnum #1>\xint_c_vi \expandafter\XINT_keepunbr_loop_b \else \expandafter\XINT_keepunbr_finish \fi #1.% }% \long\def\XINT_keepunbr_loop_b #1.#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_keepunbr_enda\xint_relax \expandafter\XINT_keepunbr_loop_c\the\numexpr #1-\xint_c_vii.% {#3}{#4}{#5}{#6}{#7}{#8}{#9}.{#2}% }% \long\def\XINT_keepunbr_loop_c #1.#2#3#4#5#6#7#8.#9% {\XINT_keepunbr_loop_a #1.{#9#2#3#4#5#6#7#8}}% \long\def\XINT_keepunbr_enda #1.#2.#3#4\xint_bye {% \XINT_keepunbr_endb #4\W\W\W\W\W\W\Z #2{#3}% }% \def\XINT_keepunbr_endb #1#2#3#4#5#6#7\Z {% \xint_gob_til_W #1\XINT_keepunbr_endc_ #2\XINT_keepunbr_endc_i #3\XINT_keepunbr_endc_ii #4\XINT_keepunbr_endc_iii #5\XINT_keepunbr_endc_iv #6\XINT_keepunbr_endc_v \W\XINT_keepunbr_endc_vi\Z }% \long\def\XINT_keepunbr_endc_ #1\Z #2#3#4#5#6#7#8#9{ #9}% \long\def\XINT_keepunbr_endc_i #1\Z #2#3#4#5#6#7#8#9{ #9#2}% \long\def\XINT_keepunbr_endc_ii #1\Z #2#3#4#5#6#7#8#9{ #9#2#3}% \long\def\XINT_keepunbr_endc_iii #1\Z #2#3#4#5#6#7#8#9{ #9#2#3#4}% \long\def\XINT_keepunbr_endc_iv #1\Z #2#3#4#5#6#7#8#9{ #9#2#3#4#5}% \long\def\XINT_keepunbr_endc_v #1\Z #2#3#4#5#6#7#8#9{ #9#2#3#4#5#6}% \long\def\XINT_keepunbr_endc_vi\Z #1#2#3#4#5#6#7#8{ #8#1#2#3#4#5#6}% \long\def\XINT_keepunbr_finish #1.#2#3#4#5#6#7#8#9\xint_bye {% \XINT_keepunbr_finish_a #1.% #3\xint_c_ #4\xint_c_i #5\xint_c_ii #6\xint_c_iii #7\xint_c_iv #8\xint_c_v\xint_relax\xint_c_vi\xint_bye {#3}{#4}{#5}{#6}{#7}{#8}\xint_bye {#2}% }% \long\def\XINT_keepunbr_finish_a #1.#2\xint_relax #3#4\xint_bye {% \csname XINT_keepunbr_finish_b\romannumeral\ifnum#1>#3#3\else#1\fi\endcsname }% \long\def\XINT_keepunbr_finish_b #1\xint_bye #2{ #2}% \long\def\XINT_keepunbr_finish_bi #1#2\xint_bye #3{ #3#1}% \long\def\XINT_keepunbr_finish_bii #1#2#3\xint_bye #4{ #4#1#2}% \long\def\XINT_keepunbr_finish_biii#1#2#3#4\xint_bye #5{ #5#1#2#3}% \long\def\XINT_keepunbr_finish_biv #1#2#3#4#5\xint_bye #6{ #6#1#2#3#4}% \long\def\XINT_keepunbr_finish_bv #1#2#3#4#5#6\xint_bye #7{ #7#1#2#3#4#5}% \long\def\XINT_keepunbr_finish_bvi #1#2#3#4#5#6\xint_bye #7{ #7#1#2#3#4#5#6}% \def\xintTrim {\romannumeral0\xinttrim }% \def\xintTrimNoExpand {\romannumeral0\xinttrimnoexpand }% \long\def\xinttrim #1#2{\expandafter\XINT_trim_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xinttrimnoexpand #1{\expandafter\XINT_trim_a\the\numexpr #1.}% \def\XINT_trim_a #1% {% \xint_UDzerominusfork #1-{\XINT_trim_trimnone }% 0#1{\XINT_trim_neg }% 0-{\XINT_trim_pos #1}% \krof }% \long\def\XINT_trim_trimnone .#1{ #1}% \long\def\XINT_trim_neg #1.#2% {% \expandafter\XINT_trim_neg_a\the\numexpr \XINT_length_loop 0.#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye -#1.% {}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_trim_neg_a #1% {% \xint_UDzerominusfork #1-{\XINT_trim_trimall }% 0#1{\XINT_trim_trimall }% 0-{\XINT_keep_loop_a #1}% \krof }% \long\def\XINT_trim_trimall #1\xint_bye { }% \long\def\XINT_trim_pos #1.#2% {% \XINT_trim_loop_a #1.% #2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_trim_loop_a #1.% {% \ifnum #1>\xint_c_vii \expandafter\XINT_trim_loop_b \else \expandafter\XINT_trim_finish \fi #1.% }% \long\def\XINT_trim_loop_b #1.#2#3#4#5#6#7#8#9% {% \xint_gob_til_xint_relax #9\XINT_trim_silentend\xint_relax \expandafter\XINT_trim_loop_a\the\numexpr #1-\xint_c_viii.% }% \def\XINT_trim_silentend #1\xint_bye { }% \def\XINT_trim_finish #1.% {% \expandafter\expandafter\expandafter\XINT_trim_finish_a \expandafter\expandafter\expandafter\space % avoids brace removal \csname xint_gobble_\romannumeral#1\endcsname }% \long\def\XINT_trim_finish_a #1\xint_relax #2\xint_bye {#1}% \def\xintTrimUnbraced {\romannumeral0\xinttrimunbraced }% \def\xintTrimUnbracedNoExpand {\romannumeral0\xinttrimunbracednoexpand }% \long\def\xinttrimunbraced #1#2% {\expandafter\XINT_trimunbr_a\the\numexpr #1\expandafter.% \expandafter{\romannumeral`&&@#2}}% \def\xinttrimunbracednoexpand #1% {\expandafter\XINT_trimunbr_a\the\numexpr #1.}% \def\XINT_trimunbr_a #1% {% \xint_UDzerominusfork #1-{\XINT_trim_trimnone }% 0#1{\XINT_trimunbr_neg }% 0-{\XINT_trim_pos #1}% \krof }% \long\def\XINT_trimunbr_neg #1.#2% {% \expandafter\XINT_trimunbr_neg_a\the\numexpr \XINT_length_loop 0.#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_relax\xint_bye -#1.% {}#2\xint_relax\xint_relax\xint_relax\xint_relax \xint_relax\xint_relax\xint_relax\xint_bye }% \def\XINT_trimunbr_neg_a #1% {% \xint_UDzerominusfork #1-{\XINT_trim_trimall }% 0#1{\XINT_trim_trimall }% 0-{\XINT_keepunbr_loop_a #1}% \krof }% \def\xintApply {\romannumeral0\xintapply }% \def\xintApplyNoExpand {\romannumeral0\xintapplynoexpand }% \long\def\xintapply #1#2% {% \expandafter\XINT_apply\expandafter {\romannumeral`&&@#2}% {#1}% }% \long\def\XINT_apply #1#2{\XINT_apply_loop_a {}{#2}#1\xint_bye }% \long\def\xintapplynoexpand #1#2{\XINT_apply_loop_a {}{#1}#2\xint_bye }% \long\def\XINT_apply_loop_a #1#2#3% {% \xint_bye #3\XINT_apply_end\xint_bye \expandafter \XINT_apply_loop_b \expandafter {\romannumeral`&&@#2{#3}}{#1}{#2}% }% \long\def\XINT_apply_loop_b #1#2{\XINT_apply_loop_a {#2{#1}}}% \long\def\XINT_apply_end\xint_bye\expandafter\XINT_apply_loop_b \expandafter #1#2#3{ #2}% \def\xintApplyUnbraced {\romannumeral0\xintapplyunbraced }% \def\xintApplyUnbracedNoExpand {\romannumeral0\xintapplyunbracednoexpand }% \long\def\xintapplyunbraced #1#2% {% \expandafter\XINT_applyunbr\expandafter {\romannumeral`&&@#2}% {#1}% }% \long\def\XINT_applyunbr #1#2{\XINT_applyunbr_loop_a {}{#2}#1\xint_bye }% \long\def\xintapplyunbracednoexpand #1#2% {\XINT_applyunbr_loop_a {}{#1}#2\xint_bye }% \long\def\XINT_applyunbr_loop_a #1#2#3% {% \xint_bye #3\XINT_applyunbr_end\xint_bye \expandafter\XINT_applyunbr_loop_b \expandafter {\romannumeral`&&@#2{#3}}{#1}{#2}% }% \long\def\XINT_applyunbr_loop_b #1#2{\XINT_applyunbr_loop_a {#2#1}}% \long\def\XINT_applyunbr_end\xint_bye\expandafter\XINT_applyunbr_loop_b \expandafter #1#2#3{ #2}% \def\xintSeq {\romannumeral0\xintseq }% \def\xintseq #1{\XINT_seq_chkopt #1\xint_bye }% \def\XINT_seq_chkopt #1% {% \ifx [#1\expandafter\XINT_seq_opt \else\expandafter\XINT_seq_noopt \fi #1% }% \def\XINT_seq_noopt #1\xint_bye #2% {% \expandafter\XINT_seq\expandafter {\the\numexpr#1\expandafter}\expandafter{\the\numexpr #2}% }% \def\XINT_seq #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\xint_firstoftwo_thenstop \or \expandafter\XINT_seq_p \else \expandafter\XINT_seq_n \fi {#2}{#1}% }% \def\XINT_seq_p #1#2% {% \ifnum #1>#2 \expandafter\expandafter\expandafter\XINT_seq_p \else \expandafter\XINT_seq_e \fi \expandafter{\the\numexpr #1-\xint_c_i}{#2}{#1}% }% \def\XINT_seq_n #1#2% {% \ifnum #1<#2 \expandafter\expandafter\expandafter\XINT_seq_n \else \expandafter\XINT_seq_e \fi \expandafter{\the\numexpr #1+\xint_c_i}{#2}{#1}% }% \def\XINT_seq_e #1#2#3{ }% \def\XINT_seq_opt [\xint_bye #1]#2#3% {% \expandafter\XINT_seqo\expandafter {\the\numexpr #2\expandafter}\expandafter {\the\numexpr #3\expandafter}\expandafter {\the\numexpr #1}% }% \def\XINT_seqo #1#2% {% \ifcase\ifnum #1=#2 0\else\ifnum #2>#1 1\else -1\fi\fi\space \expandafter\XINT_seqo_a \or \expandafter\XINT_seqo_pa \else \expandafter\XINT_seqo_na \fi {#1}{#2}% }% \def\XINT_seqo_a #1#2#3{ {#1}}% \def\XINT_seqo_o #1#2#3#4{ #4}% \def\XINT_seqo_pa #1#2#3% {% \ifcase\ifnum #3=\xint_c_ 0\else\ifnum #3>\xint_c_ 1\else -1\fi\fi\space \expandafter\XINT_seqo_o \or \expandafter\XINT_seqo_pb \else \xint_afterfi{\expandafter\space\xint_gobble_iv}% \fi {#1}{#2}{#3}{{#1}}% }% \def\XINT_seqo_pb #1#2#3% {% \expandafter\XINT_seqo_pc\expandafter{\the\numexpr #1+#3}{#2}{#3}% }% \def\XINT_seqo_pc #1#2% {% \ifnum #1>#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_pd \fi {#1}{#2}% }% \def\XINT_seqo_pd #1#2#3#4{\XINT_seqo_pb {#1}{#2}{#3}{#4{#1}}}% \def\XINT_seqo_na #1#2#3% {% \ifcase\ifnum #3=\xint_c_ 0\else\ifnum #3>\xint_c_ 1\else -1\fi\fi\space \expandafter\XINT_seqo_o \or \xint_afterfi{\expandafter\space\xint_gobble_iv}% \else \expandafter\XINT_seqo_nb \fi {#1}{#2}{#3}{{#1}}% }% \def\XINT_seqo_nb #1#2#3% {% \expandafter\XINT_seqo_nc\expandafter{\the\numexpr #1+#3}{#2}{#3}% }% \def\XINT_seqo_nc #1#2% {% \ifnum #1<#2 \expandafter\XINT_seqo_o \else \expandafter\XINT_seqo_nd \fi {#1}{#2}% }% \def\XINT_seqo_nd #1#2#3#4{\XINT_seqo_nb {#1}{#2}{#3}{#4{#1}}}% \long\def\xintloop #1#2\repeat {#1#2\xintloop_again\fi\xint_gobble_i {#1#2}}% \long\def\xintloop_again\fi\xint_gobble_i #1{\fi #1\xintloop_again\fi\xint_gobble_i {#1}}% \long\def\xintbreakloop #1\xintloop_again\fi\xint_gobble_i #2{}% \long\def\xintbreakloopanddo #1#2\xintloop_again\fi\xint_gobble_i #3{#1}% \long\def\xintloopskiptonext #1\xintloop_again\fi\xint_gobble_i #2{% #2\xintloop_again\fi\xint_gobble_i {#2}}% \def\xintiloop [#1+#2]{% \expandafter\xintiloop_a\the\numexpr #1\expandafter.\the\numexpr #2.}% \long\def\xintiloop_a #1.#2.#3#4\repeat{% #3#4\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3#4}}% \def\xintiloop_again\fi\xint_gobble_iii #1#2{% \fi\expandafter\xintiloop_again_b\the\numexpr#1+#2.#2.}% \long\def\xintiloop_again_b #1.#2.#3{% #3\xintiloop_again\fi\xint_gobble_iii {#1}{#2}{#3}}% \long\def\xintbreakiloop #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{}% \long\def\xintbreakiloopanddo #1.#2\xintiloop_again\fi\xint_gobble_iii #3#4#5{#1}% \long\def\xintiloopindex #1\xintiloop_again\fi\xint_gobble_iii #2% {#2#1\xintiloop_again\fi\xint_gobble_iii {#2}}% \long\def\xintouteriloopindex #1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii #3% {#3#1\xintiloop_again #2\xintiloop_again\fi\xint_gobble_iii {#3}}% \long\def\xintiloopskiptonext #1\xintiloop_again\fi\xint_gobble_iii #2#3{% \expandafter\xintiloop_again_b \the\numexpr#2+#3.#3.}% \long\def\xintiloopskipandredo #1\xintiloop_again\fi\xint_gobble_iii #2#3#4{% #4\xintiloop_again\fi\xint_gobble_iii {#2}{#3}{#4}}% \def\XINT_xflet #1% {% \def\XINT_xflet_macro {#1}\XINT_xflet_zapsp }% \def\XINT_xflet_zapsp {% \expandafter\futurelet\expandafter\XINT_token \expandafter\XINT_xflet_sp?\romannumeral`&&@% }% \def\XINT_xflet_sp? {% \ifx\XINT_token\XINT_sptoken \expandafter\XINT_xflet_zapsp \else\expandafter\XINT_xflet_zapspB \fi }% \def\XINT_xflet_zapspB {% \expandafter\futurelet\expandafter\XINT_tokenB \expandafter\XINT_xflet_spB?\romannumeral`&&@% }% \def\XINT_xflet_spB? {% \ifx\XINT_tokenB\XINT_sptoken \expandafter\XINT_xflet_zapspB \else\expandafter\XINT_xflet_eq? \fi }% \def\XINT_xflet_eq? {% \ifx\XINT_token\XINT_tokenB \expandafter\XINT_xflet_macro \else\expandafter\XINT_xflet_zapsp \fi }% \catcode`Z 3 \long\def\xintApplyInline #1#2% {% \long\expandafter\def\expandafter\XINT_inline_macro \expandafter ##\expandafter 1\expandafter {#1{##1}}% \XINT_xflet\XINT_inline_b #2Z% this Z has catcode 3 }% \def\XINT_inline_b {% \ifx\XINT_token Z\expandafter\xint_gobble_i \else\expandafter\XINT_inline_d\fi }% \long\def\XINT_inline_d #1% {% \long\def\XINT_item{{#1}}\XINT_xflet\XINT_inline_e }% \def\XINT_inline_e {% \ifx\XINT_token Z\expandafter\XINT_inline_w \else\expandafter\XINT_inline_f\fi }% \def\XINT_inline_f {% \expandafter\XINT_inline_g\expandafter{\XINT_inline_macro {##1}}% }% \long\def\XINT_inline_g #1% {% \expandafter\XINT_inline_macro\XINT_item \long\def\XINT_inline_macro ##1{#1}\XINT_inline_d }% \def\XINT_inline_w #1% {% \expandafter\XINT_inline_macro\XINT_item }% \def\XINT_tmpa #1#2{\ifnum #2<#1 \xint_afterfi {{#########2}}\fi}% \def\XINT_tmpb #1#2{\ifnum #1<#2 \xint_afterfi {{#########2}}\fi}% \def\XINT_tmpc #1% {% \expandafter\edef \csname XINT_for_left#1\endcsname {\xintApplyUnbraced {\XINT_tmpa #1}{123456789}}% \expandafter\edef \csname XINT_for_right#1\endcsname {\xintApplyUnbraced {\XINT_tmpb #1}{123456789}}% }% \xintApplyInline \XINT_tmpc {123456789}% \long\def\xintBreakFor #1Z{}% \long\def\xintBreakForAndDo #1#2Z{#1}% \def\xintFor {\let\xintifForFirst\xint_firstoftwo \futurelet\XINT_token\XINT_for_ifstar }% \def\XINT_for_ifstar {\ifx\XINT_token*\expandafter\XINT_forx \else\expandafter\XINT_for \fi }% \catcode`U 3 % with numexpr \catcode`V 3 % with xintfrac.sty (xint.sty not enough) \catcode`D 3 % with dimexpr \def\XINT_flet_zapsp {% \futurelet\XINT_token\XINT_flet_sp? }% \def\XINT_flet_sp? {% \ifx\XINT_token\XINT_sptoken \xint_afterfi{\expandafter\XINT_flet_zapsp\romannumeral0}% \else\expandafter\XINT_flet_macro \fi }% \long\def\XINT_for #1#2in#3#4#5% {% \expandafter\XINT_toks\expandafter {\expandafter\XINT_for_d\the\numexpr #2\relax {#5}}% \def\XINT_flet_macro {\expandafter\XINT_for_forever?\space}% \expandafter\XINT_flet_zapsp #3Z% }% \def\XINT_for_forever? #1Z% {% \ifx\XINT_token U\XINT_to_forever\fi \ifx\XINT_token V\XINT_to_forever\fi \ifx\XINT_token D\XINT_to_forever\fi \expandafter\the\expandafter\XINT_toks\romannumeral0\xintcsvtolist {#1}Z% }% \def\XINT_to_forever\fi #1\xintcsvtolist #2{\fi \XINT_forever #2}% \long\def\XINT_forx *#1#2in#3#4#5% {% \expandafter\XINT_toks\expandafter {\expandafter\XINT_forx_d\the\numexpr #2\relax {#5}}% \XINT_xflet\XINT_forx_forever? #3Z% }% \def\XINT_forx_forever? {% \ifx\XINT_token U\XINT_to_forxever\fi \ifx\XINT_token V\XINT_to_forxever\fi \ifx\XINT_token D\XINT_to_forxever\fi \XINT_forx_empty? }% \def\XINT_to_forxever\fi #1\XINT_forx_empty? {\fi \XINT_forever }% \catcode`U 11 \catcode`D 11 \catcode`V 11 \def\XINT_forx_empty? {% \ifx\XINT_token Z\expandafter\xintBreakFor\fi \the\XINT_toks }% \long\def\XINT_for_d #1#2#3% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks {{#3}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_for_d #1{#2}}% \futurelet\XINT_token\XINT_for_last? }% \long\def\XINT_forx_d #1#2#3% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks {{#3}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_toks {\XINT_x\let\xintifForFirst\xint_secondoftwo\XINT_forx_d #1{#2}}% \XINT_xflet\XINT_for_last? }% \def\XINT_for_last? {% \let\xintifForLast\xint_secondoftwo \ifx\XINT_token Z\let\xintifForLast\xint_firstoftwo \xint_afterfi{\xintBreakForAndDo{\XINT_x\xint_gobble_i Z}}\fi \the\XINT_toks }% \catcode`U 3 \catcode`D 3 \catcode`V 3 \let\xintegers U% \let\xintintegers U% \let\xintdimensions D% \let\xintrationals V% \def\XINT_forever #1% {% \expandafter\XINT_forever_a \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi a\expandafter\endcsname \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi i\expandafter\endcsname \csname XINT_?expr_\ifx#1UU\else\ifx#1DD\else V\fi\fi \endcsname }% \catcode`U 11 \catcode`D 11 \catcode`V 11 \def\XINT_?expr_Ua #1#2% {\expandafter{\expandafter\numexpr\the\numexpr #1\expandafter\relax \expandafter\relax\expandafter}% \expandafter{\the\numexpr #2}}% \def\XINT_?expr_Da #1#2% {\expandafter{\expandafter\dimexpr\number\dimexpr #1\expandafter\relax \expandafter s\expandafter p\expandafter\relax\expandafter}% \expandafter{\number\dimexpr #2}}% \catcode`Z 11 \def\XINT_?expr_Va #1#2% {% \expandafter\XINT_?expr_Vb\expandafter {\romannumeral`&&@\xintrawwithzeros{\xintZapSpacesB{#2}}}% {\romannumeral`&&@\xintrawwithzeros{\xintZapSpacesB{#1}}}% }% \catcode`Z 3 \def\XINT_?expr_Vb #1#2{\expandafter\XINT_?expr_Vc #2.#1.}% \def\XINT_?expr_Vc #1/#2.#3/#4.% {% \xintifEq {#2}{#4}% {\XINT_?expr_Vf {#3}{#1}{#2}}% {\expandafter\XINT_?expr_Vd\expandafter {\romannumeral0\xintiimul {#2}{#4}}% {\romannumeral0\xintiimul {#1}{#4}}% {\romannumeral0\xintiimul {#2}{#3}}% }% }% \def\XINT_?expr_Vd #1#2#3{\expandafter\XINT_?expr_Ve\expandafter {#2}{#3}{#1}}% \def\XINT_?expr_Ve #1#2{\expandafter\XINT_?expr_Vf\expandafter {#2}{#1}}% \def\XINT_?expr_Vf #1#2#3{{#2/#3}{{0}{#1}{#2}{#3}}}% \def\XINT_?expr_Ui {{\numexpr 1\relax}{1}}% \def\XINT_?expr_Di {{\dimexpr 0pt\relax}{65536}}% \def\XINT_?expr_Vi {{1/1}{0111}}% \def\XINT_?expr_U #1#2% {\expandafter{\expandafter\numexpr\the\numexpr #1+#2\relax\relax}{#2}}% \def\XINT_?expr_D #1#2% {\expandafter{\expandafter\dimexpr\the\numexpr #1+#2\relax sp\relax}{#2}}% \def\XINT_?expr_V #1#2{\XINT_?expr_Vx #2}% \def\XINT_?expr_Vx #1#2% {% \expandafter\XINT_?expr_Vy\expandafter {\romannumeral0\xintiiadd {#1}{#2}}{#2}% }% \def\XINT_?expr_Vy #1#2#3#4% {% \expandafter{\romannumeral0\xintiiadd {#3}{#1}/#4}{{#1}{#2}{#3}{#4}}% }% \def\XINT_forever_a #1#2#3#4% {% \ifx #4[\expandafter\XINT_forever_opt_a \else\expandafter\XINT_forever_b \fi #1#2#3#4% }% \def\XINT_forever_b #1#2#3Z{\expandafter\XINT_forever_c\the\XINT_toks #2#3}% \long\def\XINT_forever_c #1#2#3#4#5% {\expandafter\XINT_forever_d\expandafter #2#4#5{#3}Z}% \def\XINT_forever_opt_a #1#2#3[#4+#5]#6Z% {% \expandafter\expandafter\expandafter \XINT_forever_opt_c\expandafter\the\expandafter\XINT_toks \romannumeral`&&@#1{#4}{#5}#3% }% \long\def\XINT_forever_opt_c #1#2#3#4#5#6{\XINT_forever_d #2{#4}{#5}#6{#3}Z}% \long\def\XINT_forever_d #1#2#3#4#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#5}% \XINT_toks {{#2}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right#1\endcsname }% \XINT_x \let\xintifForFirst\xint_secondoftwo \expandafter\XINT_forever_d\expandafter #1\romannumeral`&&@#4{#2}{#3}#4{#5}% }% \catcode`j 3 \long\def\xintForpair #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \XINT_toks {\XINT_forpair_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forpair_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_i\endcsname}% \let\xintifForLast\xint_secondoftwo \ifx #5j\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi {\let\xintifForLast\xint_firstoftwo \xintBreakForAndDo {\XINT_x \xint_gobble_i Z}}% \XINT_x \let\xintifForFirst\xint_secondoftwo\XINT_forpair_d #1{#2}% }% \long\def\xintForthree #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \XINT_toks {\XINT_forthree_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forthree_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_ii\endcsname}% \let\xintifForLast\xint_secondoftwo \ifx #5j\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi {\let\xintifForLast\xint_firstoftwo \xintBreakForAndDo {\XINT_x \xint_gobble_i Z}}% \XINT_x \let\xintifForFirst\xint_secondoftwo\XINT_forthree_d #1{#2}% }% \long\def\xintForfour #1#2#3in#4#5#6% {% \let\xintifForFirst\xint_firstoftwo \XINT_toks {\XINT_forfour_d #2{#6}}% \expandafter\the\expandafter\XINT_toks #4jZ% }% \long\def\XINT_forfour_d #1#2#3(#4)#5% {% \long\def\XINT_y ##1##2##3##4##5##6##7##8##9{#2}% \XINT_toks \expandafter{\romannumeral0\xintcsvtolist{ #4}}% \long\edef\XINT_x {\noexpand\XINT_y \csname XINT_for_left#1\endcsname \the\XINT_toks \csname XINT_for_right\the\numexpr#1+\xint_c_iii\endcsname}% \let\xintifForLast\xint_secondoftwo \ifx #5j\expandafter\xint_firstoftwo \else\expandafter\xint_secondoftwo \fi {\let\xintifForLast\xint_firstoftwo \xintBreakForAndDo {\XINT_x \xint_gobble_i Z}}% \XINT_x \let\xintifForFirst\xint_secondoftwo\XINT_forfour_d #1{#2}% }% \catcode`Z 11 \catcode`j 11 \def\xintAssign{\def\XINT_flet_macro {\XINT_assign_fork}\XINT_flet_zapsp }% \def\XINT_assign_fork {% \let\XINT_assign_def\def \ifx\XINT_token[\expandafter\XINT_assign_opt \else\expandafter\XINT_assign_a \fi }% \def\XINT_assign_opt [#1]% {% \ifcsname #1def\endcsname \expandafter\let\expandafter\XINT_assign_def \csname #1def\endcsname \else \expandafter\let\expandafter\XINT_assign_def \csname xint#1def\endcsname \fi \XINT_assign_a }% \long\def\XINT_assign_a #1\to {% \def\XINT_flet_macro{\XINT_assign_b}% \expandafter\XINT_flet_zapsp\romannumeral`&&@#1\xint_relax\to }% \long\def\XINT_assign_b {% \ifx\XINT_token\bgroup \expandafter\XINT_assign_c \else\expandafter\XINT_assign_f \fi }% \long\def\XINT_assign_f #1\xint_relax\to #2% {% \XINT_assign_def #2{#1}% }% \long\def\XINT_assign_c #1% {% \def\xint_temp {#1}% \ifx\xint_temp\xint_brelax \expandafter\XINT_assign_e \else \expandafter\XINT_assign_d \fi }% \long\def\XINT_assign_d #1\to #2% {% \expandafter\XINT_assign_def\expandafter #2\expandafter{\xint_temp}% \XINT_assign_c #1\to }% \def\XINT_assign_e #1\to {}% \def\xintRelaxArray #1% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax}% \escapechar -1 \expandafter\def\expandafter\xint_arrayname\expandafter {\string #1}% \XINT_restoreescapechar \xintiloop [\csname\xint_arrayname 0\endcsname+-1] \global \expandafter\let\csname\xint_arrayname\xintiloopindex\endcsname\relax \ifnum \xintiloopindex > \xint_c_ \repeat \global\expandafter\let\csname\xint_arrayname 00\endcsname\relax \global\let #1\relax }% \def\xintAssignArray{\def\XINT_flet_macro {\XINT_assignarray_fork}% \XINT_flet_zapsp }% \def\XINT_assignarray_fork {% \let\XINT_assignarray_def\def \ifx\XINT_token[\expandafter\XINT_assignarray_opt \else\expandafter\XINT_assignarray \fi }% \def\XINT_assignarray_opt [#1]% {% \ifcsname #1def\endcsname \expandafter\let\expandafter\XINT_assignarray_def \csname #1def\endcsname \else \expandafter\let\expandafter\XINT_assignarray_def \csname xint#1def\endcsname \fi \XINT_assignarray }% \long\def\XINT_assignarray #1\to #2% {% \edef\XINT_restoreescapechar {\escapechar\the\escapechar\relax }% \escapechar -1 \expandafter\def\expandafter\xint_arrayname\expandafter {\string #2}% \XINT_restoreescapechar \def\xint_itemcount {0}% \expandafter\XINT_assignarray_loop \romannumeral`&&@#1\xint_relax \csname\xint_arrayname 00\expandafter\endcsname \csname\xint_arrayname 0\expandafter\endcsname \expandafter {\xint_arrayname}#2% }% \long\def\XINT_assignarray_loop #1% {% \def\xint_temp {#1}% \ifx\xint_brelax\xint_temp \expandafter\def\csname\xint_arrayname 0\expandafter\endcsname \expandafter{\the\numexpr\xint_itemcount}% \expandafter\expandafter\expandafter\XINT_assignarray_end \else \expandafter\def\expandafter\xint_itemcount\expandafter {\the\numexpr\xint_itemcount+\xint_c_i}% \expandafter\XINT_assignarray_def \csname\xint_arrayname\xint_itemcount\expandafter\endcsname \expandafter{\xint_temp }% \expandafter\XINT_assignarray_loop \fi }% \def\XINT_assignarray_end #1#2#3#4% {% \def #4##1% {% \romannumeral0\expandafter #1\expandafter{\the\numexpr ##1}% }% \def #1##1% {% \ifnum ##1<\xint_c_ \xint_afterfi {\xintError:ArrayIndexIsNegative\space }% \else \xint_afterfi {% \ifnum ##1>#2 \xint_afterfi {\xintError:ArrayIndexBeyondLimit\space }% \else\xint_afterfi {\expandafter\expandafter\expandafter\space\csname #3##1\endcsname}% \fi}% \fi }% }% \let\xintDigitsOf\xintAssignArray \def\xintTrim:f:csv {\romannumeral0\xinttrim:f:csv }% \def\xinttrim:f:csv #1#2% {% \expandafter\XINT_trim:f:csv_a\the\numexpr #1\expandafter.% \romannumeral`&&@#2\xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye }% \def\XINT_trim:f:csv_a #1% {% \xint_UDzerominusfork #1-{\XINT_trim:f:csv_zero }% 0#1{\XINT_trim:f:csv_neg }% 0-{\XINT_trim:f:csv_loop_a #1}% \krof }% \def\XINT_trim:f:csv_zero .#1\xint_relax #2\xint_bye{ #1}% \def\XINT_trim:f:csv_neg #1.#2\xint_relax% {% \expandafter\XINT_trim:f:csv_neg_b \the\numexpr\XINT_length:f:csv_a #2% \xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye -#1.#2\xint_relax }% \def\XINT_trim:f:csv_neg_b #1% {% \xint_UDzerominusfork #1-{\expandafter\space\xint_bye }% 0#1{\expandafter\space\xint_bye }% 0-{\XINT_keep:f:csv_pos #1}% \krof }% \def\XINT_trim:f:csv_loop_a #1.% {% \ifnum #1>\xint_c_vii \expandafter\XINT_trim:f:csv_loop_b \else \expandafter\XINT_trim:f:csv_finish \fi #1.% }% \def\XINT_trim:f:csv_loop_b #1.#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint_relax #9\XINT_trim:f:csv_silentend\xint_relax \expandafter\XINT_trim:f:csv_loop_a\the\numexpr #1-\xint_c_viii.% }% \def\XINT_trim:f:csv_silentend #1\xint_bye { }% \def\XINT_trim:f:csv_finish #1.% {% \expandafter\XINT_trim:f:csv_finish_a \romannumeral`&&@\csname xint_gobble:csv_\romannumeral#1\endcsname }% \def\xint_gobble:csv_ {}% \def\xint_gobble:csv_i #1,{}% \def\xint_gobble:csv_ii #1,#2,{}% \def\xint_gobble:csv_iii #1,#2,#3,{}% \def\xint_gobble:csv_iv #1,#2,#3,#4,{}% \def\xint_gobble:csv_v #1,#2,#3,#4,#5,{}% \def\xint_gobble:csv_vi #1,#2,#3,#4,#5,#6,{}% \def\xint_gobble:csv_vii #1,#2,#3,#4,#5,#6,#7,{}% \def\XINT_trim:f:csv_finish_a #1\xint_relax #2\xint_bye { #1}% \def\xintKeep:f:csv {\romannumeral0\xintkeep:f:csv }% \def\xintkeep:f:csv #1#2% {% \expandafter\XINT_keep:f:csv_a\the\numexpr #1\expandafter.% \romannumeral`&&@#2\xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye }% \def\XINT_keep:f:csv_a #1% {% \xint_UDzerominusfork #1-{\XINT_keep:f:csv_zero }% 0#1{\XINT_keep:f:csv_neg }% 0-{\XINT_keep:f:csv_pos #1}% \krof }% \def\XINT_keep:f:csv_zero .#1\xint_bye{ }% \def\XINT_keep:f:csv_neg #1.#2\xint_relax% {% \expandafter\XINT_keep:f:csv_neg_b \the\numexpr\XINT_length:f:csv_a #2% \xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye -#1.#2\xint_relax }% \def\XINT_keep:f:csv_neg_b #1% {% \xint_UDzerominusfork #1-{\XINT_keep:f:csv_all }% 0#1{\XINT_keep:f:csv_all }% 0-{\XINT_trim:f:csv_loop_a #1}% \krof }% \def\XINT_keep:f:csv_all #1.#2\xint_relax #3\xint_bye { #2}% \def\XINT_keep:f:csv_pos #1.{\expandafter\xint_gobble_thenstop \romannumeral`&&@\XINT_keep:f:csv_loop_a #1.{}}% \def\XINT_keep:f:csv_loop_a #1.% {% \ifnum #1>\xint_c_vi \expandafter\XINT_keep:f:csv_loop_b \else \expandafter\XINT_keep:f:csv_finish \fi #1.% }% \def\XINT_keep:f:csv_loop_b #1.#2#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint_relax #9\XINT_keep:f:csv_enda\xint_relax \expandafter\XINT_keep:f:csv_loop_c\the\numexpr #1-\xint_c_vii.% {,#3,#4,#5,#6,#7,#8,#9}{#2}% }% \def\XINT_keep:f:csv_loop_c #1.#2#3{\XINT_keep:f:csv_loop_a #1.{#3#2}}% \def\XINT_keep:f:csv_enda #1.#2#3#4\xint_bye {% \XINT_keep:f:csv_endb #2\xint_bye {#3}% }% \def\XINT_keep:f:csv_endb #1\xint_relax #2\xint_bye #3{ #3#1}% \def\XINT_keep:f:csv_finish #1.#2#3,#4,#5,#6,#7,#8,#9\xint_bye {% \csname XINT_keep:f:csv_finish_\romannumeral#1\endcsname ,#3,#4,#5,#6,#7,#8,\Z {#2}% }% \def\XINT_keep:f:csv_finish_ #1\Z #2{#2}% \def\XINT_keep:f:csv_finish_i ,#1,#2\Z {\XINT_keep:f:csv_finish_f ,#1\xint_relax\Z}% \def\XINT_keep:f:csv_finish_ii ,#1,#2,#3\Z {\XINT_keep:f:csv_finish_f ,#1,#2\xint_relax\Z}% \def\XINT_keep:f:csv_finish_iii ,#1,#2,#3,#4\Z {\XINT_keep:f:csv_finish_f ,#1,#2,#3\xint_relax\Z}% \def\XINT_keep:f:csv_finish_iv ,#1,#2,#3,#4,#5\Z {\XINT_keep:f:csv_finish_f ,#1,#2,#3,#4\xint_relax\Z}% \def\XINT_keep:f:csv_finish_v ,#1,#2,#3,#4,#5,#6\Z {\XINT_keep:f:csv_finish_f ,#1,#2,#3,#4,#5\xint_relax\Z}% \def\XINT_keep:f:csv_finish_vi ,#1,#2,#3,#4,#5,#6,#7\Z {\XINT_keep:f:csv_finish_f ,#1,#2,#3,#4,#5,#6\xint_relax\Z}% \def\XINT_keep:f:csv_finish_f #1\xint_relax #2\Z #3{#3#1}% \def\xintNthEltPy:f:csv {\romannumeral0\xintntheltpy:f:csv }% \def\xintntheltpy:f:csv #1{\expandafter\XINT_ntheltpy:f:csv\the\numexpr #1.}% \def\XINT_ntheltpy:f:csv #1% {% \xint_UDsignfork #1{\XINT_nthelt:f:csv_neg }% -{\XINT_nthelt:f:csv_pos #1}% \krof }% \long\def\XINT_nthelt:f:csv_neg #1.#2% {% \expandafter\XINT_nthelt:f:csv_neg_a \the\numexpr\expandafter\XINT_length:f:csv_a\romannumeral`&&@#2% \xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye -#1+\xint_c_i\expandafter.\romannumeral`&&@#2% \xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye }% \def\XINT_nthelt:f:csv_neg_a #1% {% \xint_UDzerominusfork #1-{\XINT_nthelt:f:csv_none }% 0#1{\XINT_nthelt:f:csv_none }% 0-{\XINT_nthelt:f:csv_loop_a #1}% \krof }% \def\XINT_nthelt:f:csv_none #1\xint_bye { }% \long\def\XINT_nthelt:f:csv_pos #1.#2% {% \expandafter\XINT_nthelt:f:csv_loop_a\the\numexpr #1+\xint_c_i\expandafter.% \romannumeral`&&@#2% \xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye }% \def\XINT_nthelt:f:csv_loop_a #1.% {% \ifnum #1>\xint_c_viii \expandafter\XINT_nthelt:f:csv_loop_b \else \expandafter\XINT_nthelt:f:csv_getit \fi #1.% }% \long\def\XINT_nthelt:f:csv_loop_b #1.#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint_relax #9\XINT_nthelt:f:csv_none\xint_relax \expandafter\XINT_nthelt:f:csv_loop_a\the\numexpr #1-\xint_c_viii.% }% \def\XINT_nthelt:f:csv_getit #1.% {% \expandafter\XINT_nthelt:f:csv_finish \romannumeral`&&@\csname xint_gobble:csv_\romannumeral \numexpr#1-\xint_c_i\endcsname }% \def\XINT_nthelt:f:csv_finish #1,#2\xint_bye {% \XINT_nthelt:f:csv_finishb #1\xint_relax\xint_bye }% \def\XINT_nthelt:f:csv_finishb #1\xint_relax #2\xint_bye { #1}% \def\xintReverse:f:csv {\romannumeral0\xintreverse:f:csv }% \def\xintreverse:f:csv #1% {% \expandafter\XINT_reverse:f:csv_loop \expandafter{\expandafter}\romannumeral`&&@#1,% \xint_relax,% \xint_bye,\xint_bye,\xint_bye,\xint_bye,% \xint_bye,\xint_bye,\xint_bye,\xint_bye,% \xint_relax }% \def\XINT_reverse:f:csv_loop #1#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_bye #9\XINT_reverse:f:csv_cleanup\xint_bye \XINT_reverse:f:csv_loop {,#9,#8,#7,#6,#5,#4,#3,#2#1}% }% \def\XINT_reverse:f:csv_cleanup\xint_bye\XINT_reverse:f:csv_loop #1#2\xint_relax {% \XINT_reverse:f:csv_finish #1% }% \def\XINT_reverse:f:csv_finish #1\xint_relax,{ }% \def\xintLength:f:csv {\romannumeral0\xintlength:f:csv }% \def\xintlength:f:csv #1% {% \expandafter\XINT_length:f:csv_a \romannumeral`&&@#1\xint_relax,\xint_relax,\xint_relax,\xint_relax,% \xint_relax,\xint_relax,\xint_relax,\xint_relax,\xint_bye }% \def\XINT_length:f:csv_a #1% {% \xint_gob_til_xint_relax #1\XINT_length:f:csv_empty\xint_relax \XINT_length:f:csv_loop 0.#1% }% \def\XINT_length:f:csv_empty #1\xint_bye { 0}% \def\XINT_length:f:csv_loop #1.#2,#3,#4,#5,#6,#7,#8,#9,% {% \xint_gob_til_xint_relax #9\XINT_length:f:csv_finish_a\xint_relax \expandafter\XINT_length:f:csv_loop\the\numexpr #1+\xint_c_viii.% }% \def\XINT_length:f:csv_finish_a\xint_relax \expandafter\XINT_length:f:csv_loop\the\numexpr #1+\xint_c_viii.#2\xint_bye {% \XINT_length:f:csv_finish_b #2\W,\W,\W,\W,\W,\W,\W,\Z {#1}% }% \def\XINT_length:f:csv_finish_b #1,#2,#3,#4,#5,#6,#7,#8\Z {% \xint_gob_til_W #1\XINT_length:f:csv_finish_c \xint_c_i #2\XINT_length:f:csv_finish_c \xint_c_ii #3\XINT_length:f:csv_finish_c \xint_c_iii #4\XINT_length:f:csv_finish_c \xint_c_iv #5\XINT_length:f:csv_finish_c \xint_c_v #6\XINT_length:f:csv_finish_c \xint_c_vi #7\XINT_length:f:csv_finish_c \xint_c_vii \W\XINT_length:f:csv_finish_c \xint_c_viii\Z }% \edef\XINT_length:f:csv_finish_c #1#2\Z #3% {\noexpand\expandafter\space\noexpand\the\numexpr #3+#1\relax}% \let\xintCSVTrim \xintTrim:f:csv \let\xintCSVKeep \xintKeep:f:csv \let\xintCSVNthEltPy \xintNthEltPy:f:csv \let\xintCSVReverse \xintReverse:f:csv \let\xintCSVLength \xintLength:f:csv \let\XINT_tmpa\relax \let\XINT_tmpb\relax \let\XINT_tmpc\relax \XINT_restorecatcodes_endinput% \endinput %% %% End of file `xinttools.sty'.