From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/algorithmicx/README | 4 + macros/latex/contrib/algorithmicx/algc.sty | 49 + .../latex/contrib/algorithmicx/algcompatible.sty | 89 + macros/latex/contrib/algorithmicx/algmatlab.sty | 68 + macros/latex/contrib/algorithmicx/algorithmicx.pdf | 2899 ++++++++++++++++++++ macros/latex/contrib/algorithmicx/algorithmicx.sty | 786 ++++++ macros/latex/contrib/algorithmicx/algorithmicx.tex | 1768 ++++++++++++ macros/latex/contrib/algorithmicx/algpascal.sty | 44 + .../latex/contrib/algorithmicx/algpseudocode.sty | 92 + 9 files changed, 5799 insertions(+) create mode 100644 macros/latex/contrib/algorithmicx/README create mode 100644 macros/latex/contrib/algorithmicx/algc.sty create mode 100644 macros/latex/contrib/algorithmicx/algcompatible.sty create mode 100644 macros/latex/contrib/algorithmicx/algmatlab.sty create mode 100644 macros/latex/contrib/algorithmicx/algorithmicx.pdf create mode 100644 macros/latex/contrib/algorithmicx/algorithmicx.sty create mode 100644 macros/latex/contrib/algorithmicx/algorithmicx.tex create mode 100644 macros/latex/contrib/algorithmicx/algpascal.sty create mode 100644 macros/latex/contrib/algorithmicx/algpseudocode.sty (limited to 'macros/latex/contrib/algorithmicx') diff --git a/macros/latex/contrib/algorithmicx/README b/macros/latex/contrib/algorithmicx/README new file mode 100644 index 0000000000..97b93dc13c --- /dev/null +++ b/macros/latex/contrib/algorithmicx/README @@ -0,0 +1,4 @@ +This package provides many possibilities to customize the layout of algorithms. +You can use one of the predefined layouts (pseudocode, pascal, +c, and others), with or without modifications, or you can define a +completely new layout for your specific needs. \ No newline at end of file diff --git a/macros/latex/contrib/algorithmicx/algc.sty b/macros/latex/contrib/algorithmicx/algc.sty new file mode 100644 index 0000000000..c42b44f2d1 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algc.sty @@ -0,0 +1,49 @@ +% C ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@sourceforge.net +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algc}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - c/c++ environments for use with the `algorithmicx' style}% +% +\ProcessOptions% +% +% +% *** DECLARATIONS *** +% +% +\algnewlanguage{c}% +\alglanguage{c}% +% +% *** KEYWORDS *** +% +\let\ALG@cbegin\{% +\let\ALG@cend\}% +\algnewcommand\algorithmicbegin{\ALG@cbegin}% +\algnewcommand\algorithmicend{\ALG@cend}% +\algnewcommand\textkeyword{\textbf}% +% +% *** DECLARED BLOCKS AND LOOPS *** +% +\algdef{SEi}{Begin}{End}{0cm}{\algorithmicbegin}{\algorithmicend}% +% +\algdef{lS}{For}[3]{\textkeyword{for}\ (\(#1\); \(#2\); \(#3\))}% +\algdef{lS}{While}[1]{\textkeyword{while}\ (\(#1\))}% +\algdef{lS}{Do}{\textkeyword{do}}% +\algdef{Lc}{Do}{While}{0}% +\algdef{lS}{If}[1]{\textkeyword{if}\ (\(#1\))}% +\algdef{lC}{If}{Else}{\textkeyword{else}}% +% +% *** OTHER DECLARATIONS *** +% +%\def\ALG@beginalgorithmic{\let\{\Begin\let\}\End}% +% +%\newcommand\Function[3]{\State#1 #32(#3)}%\textit{#2}(#3)} +%\newcommand\Return{\State\textkeyword{return}\space}% +% +\algrenewcomment[1]{\hfill// #1}% +% diff --git a/macros/latex/contrib/algorithmicx/algcompatible.sty b/macros/latex/contrib/algorithmicx/algcompatible.sty new file mode 100644 index 0000000000..075f8512e2 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algcompatible.sty @@ -0,0 +1,89 @@ +% ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% Based on Peter Williams's algorithmic.sty +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algcompatible}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - algorithmic compatible environments for the `algorithmicx' style}% +% +\def\ALG@noend{f}% +% +\DeclareOption{noend}{\def\ALG@noend{t}}% +\DeclareOption{end}{\def\ALG@noend{f}}% +\ProcessOptions% +% +% *** DECLARATIONS *** +% +\algnewlanguage{algorithmic}% +\alglanguage{algorithmic}% +% +% *** KEYWORDS *** +% +\algnewcommand\algorithmicend{\textbf{end}} +\algnewcommand\algorithmicdo{\textbf{do}} +\algnewcommand\algorithmicwhile{\textbf{while}} +\algnewcommand\algorithmicfor{\textbf{for}} +\algnewcommand\algorithmicforall{\textbf{for all}} +\algnewcommand\algorithmicloop{\textbf{loop}} +\algnewcommand\algorithmicrepeat{\textbf{repeat}} +\algnewcommand\algorithmicuntil{\textbf{until}} +\algnewcommand\algorithmicif{\textbf{if}} +\algnewcommand\algorithmicthen{\textbf{then}} +\algnewcommand\algorithmicelse{\textbf{else}} +\algnewcommand\algorithmicrequire{\textbf{Require:}} +\algnewcommand\algorithmicensure{\textbf{Ensure:}} +% +% *** DECLARED LOOPS *** +% +% lines... +\let\ALG@loopmark\ALG@x@nomark% +% default line and marks +\def\ALG@startmark{nomark}% +\def\ALG@blockline{noline}% +\def\ALG@continuemark{nomark}% +\def\ALG@endmark{nomark}% +% +\newcommand\ALG@compatcomm[1]{\ifthenelse{\equal{#1}{default}}{}{\ \algorithmiccomment{#1}}}% +\algrenewcomment[1]{\{#1\}}% +\algdef{SE}[WHILE]{WHILE}{ENDWHILE}% + [2][default]{\algorithmicwhile\ #2\ \algorithmicdo\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicwhile}% +\algdef{SE}[FOR]{FOR}{ENDFOR}% + [2][default]{\algorithmicfor\ #2\ \algorithmicdo\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicfor}% +\algdef{S}[FOR]{FORALL}% + [2][default]{\algorithmicforall\ #2\ \algorithmicdo\ALG@compatcomm{#1}}% +\algdef{SE}[LOOP]{LOOP}{ENDLOOP}% + [1][default]{\algorithmicloop\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicloop}% +\algdef{SE}[REPEAT]{REPEAT}{UNTIL}% + [1][default]{\algorithmicrepeat\ALG@compatcomm{#1}}% + [1]{\algorithmicuntil\ #1}% +\algdef{SE}[IF]{IF}{ENDIF}% + [2][default]{\algorithmicif\ #2\ \algorithmicthen\ALG@compatcomm{#1}}% + {\algorithmicend\ \algorithmicif}% +\algdef{C}[IF]{IF}{ELSIF}% + [2][default]{\algorithmicelse\ \algorithmicif\ #2\ \algorithmicthen\ALG@compatcomm{#1}}% +\algdef{Ce}[ELSE]{IF}{ELSE}{ENDIF}% + [1][default]{\algorithmicelse\ALG@compatcomm{#1}}% +\algnewcommand\REQUIRE{\item[\algorithmicrequire]}% +\algnewcommand\ENSURE{\item[\algorithmicensure]}% +\algnewcommand\STATE{\State}% +\algnewcommand\STATEx{\Statex}% +\algnewcommand\COMMENT{\Comment}% +% +\ifthenelse{\equal{\ALG@noend}{t}}% + {% + \algtext*{ENDWHILE}% + \algtext*{ENDFOR}% + \algtext*{ENDLOOP}% + \algtext*{ENDIF}% + }{}% +% +\algrenewcommand\algorithmicindent{1em}% +% diff --git a/macros/latex/contrib/algorithmicx/algmatlab.sty b/macros/latex/contrib/algorithmicx/algmatlab.sty new file mode 100644 index 0000000000..e274a7dfa9 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algmatlab.sty @@ -0,0 +1,68 @@ +% Matlab ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algmatlab}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - matlab environments for use with the `algorithmicx' style}% +% +\ProcessOptions% +% +% *** DECLARATIONS *** +% +\algnewlanguage{matlab}% +\alglanguage{matlab}% +% +% *** KEYWORDS *** +% +\newcommand\textkeyword{\textbf} +\newcommand\textfunc{\texttt} +% +% *** DECLARED LOOPS *** +% +\algdef{SE}[WHILE]{While}{End}[1]{\textkeyword{while}\ #1}{\textkeyword{end}}% +\algdef{Se}[FOR]{For}{End}[1]{\textkeyword{for}\ #1}% +\algdef{Se}[IF]{If}{End}[1]{\textkeyword{if}\ #1}% +\algdef{C}[IF]{IF}{ElseIf}[1]{\textkeyword{else}\textkeyword{if}\ #1}% +\algdef{Ce}[ELSE]{IF}{Else}{End}{\textkeyword{else}}% +\algdef{LSxnE}[FUNCTION]{Function}{End}{65535}% + [2]{\textkeyword{function}\ \textfunc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% +% +\algdef{SxE}[SWITCH]{Switch}{End}[1]{\let\Case\ALG@thecase\textkeyword{switch}\ #1}% + {\textkeyword{end}}% +\algdef{LS}[CASE]{Case}{65535}[1]{\let\Case\Case@continue\textkeyword{case}\ #1:}% +\let\ALG@thecase\Case% +\algdef{LxC}[CASE]{CASE}{Case@continue}{65535}[1]{\let\Case\Case@continue\textkeyword{case}\ #1:}% +\algdef{LC}[OTHERWISE]{CASE}{Otherwise}{65535}{\textkeyword{otherwise}:}% +% +\renewcommand\algorithmiccomment[1]{\hskip 1.5em\textit{\% #1}}% +% +\newcommand\algnewfunction[2]% + {% + \expandafter\newcommand\csname #1\endcsname[1]{\textfunc{#2}\((\)##1\()\)}% + }% +% +\algnewfunction{Line}{line}% +\algnewfunction{Scatter}{scatter}% +\algnewfunction{Plot}{plot}% +\algnewfunction{Zeros}{zeros}% +\algnewfunction{Ones}{ones}% +\algnewfunction{Load}{load}% +\algnewfunction{Size}{size}% +\algnewfunction{Disp}{disp}% +\algnewfunction{Min}{min}% +\algnewfunction{Max}{max}% +% +\def\Break{\textkeyword{break}}% +\def\Return{\textkeyword{return}}% +\def\Global{\textkeyword{global}}% +\def\Hold#1{\textkeyword{hold} #1}% +% +% *** OTHER DECLARATIONS *** +% +\algrenewcommand\ALG@beginalgorithmic{\let\leftbr[\let\rightbr]\def\[{\textbf{\leftbr}}\def\]{\textbf{\rightbr}}}% +% diff --git a/macros/latex/contrib/algorithmicx/algorithmicx.pdf b/macros/latex/contrib/algorithmicx/algorithmicx.pdf new file mode 100644 index 0000000000..a142d0135f --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algorithmicx.pdf @@ -0,0 +1,2899 @@ +%PDF-1.2 +7 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] +>> +endobj +10 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F1 +/FontDescriptor 9 0 R +/BaseFont/KUVUVS+CMR17 +/FirstChar 33 +/LastChar 196 +/Widths[249.6 458.6 772.1 458.6 772.1 719.8 249.6 354.1 354.1 458.6 719.8 249.6 301.9 +249.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 249.6 249.6 +249.6 719.8 432.5 432.5 719.8 693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 +471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3 693.3 954.5 693.3 +693.3 563.1 249.6 458.6 249.6 458.6 249.6 249.6 458.6 510.9 406.4 510.9 406.4 275.8 +458.6 510.9 249.6 275.8 484.7 249.6 772.1 510.9 458.6 510.9 484.7 354.1 359.4 354.1 +510.9 484.7 667.6 484.7 484.7 406.4 458.6 917.2 458.6 458.6 458.6 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 576 772.1 719.8 641.1 615.3 693.3 +667.6 719.8 667.6 719.8 0 0 667.6 525.4 499.3 499.3 748.9 748.9 249.6 275.8 458.6 +458.6 458.6 458.6 458.6 693.3 406.4 458.6 667.6 719.8 458.6 837.2 941.7 719.8 249.6 +458.6] +>> +endobj +11 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis] +>> +endobj +14 0 obj +<< +/Encoding 11 0 R +/Type/Font +/Subtype/Type1 +/Name/F2 +/FontDescriptor 13 0 R +/BaseFont/MCOAAW+CMTT12 +/FirstChar 33 +/LastChar 196 +/Widths[514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 0 0 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 +514.6 514.6] +>> +endobj +15 0 obj +<< +/Type/Encoding +/Differences[0/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft +161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus +173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade] +>> +endobj +18 0 obj +<< +/Encoding 15 0 R +/Type/Font +/Subtype/Type1 +/Name/F3 +/FontDescriptor 17 0 R +/BaseFont/FTGPAX+CMSY10 +/FirstChar 33 +/LastChar 196 +/Widths[1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 +275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 +611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 +820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 +666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 +500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4 444.4 +444.4 611.1 777.8 777.8 777.8 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 0 0 777.8 +777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 +777.8 777.8 1000 1000 777.8 777.8 1000 777.8] +>> +endobj +21 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F4 +/FontDescriptor 20 0 R +/BaseFont/OQGBBN+CMR12 +/FirstChar 33 +/LastChar 196 +/Widths[272 489.6 816 489.6 816 761.6 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6 +489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 +462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 +734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 +272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 +544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8 435.2 489.6 979.2 489.6 489.6 +489.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611.8 816 +761.6 679.6 652.8 734 707.2 761.6 707.2 761.6 0 0 707.2 571.2 544 544 816 816 272 +299.2 489.6 489.6 489.6 489.6 489.6 734 435.2 489.6 707.2 761.6 489.6 883.8 992.6 +761.6 272 489.6] +>> +endobj +24 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F5 +/FontDescriptor 23 0 R +/BaseFont/LUZJQO+CMBX9 +/FirstChar 33 +/LastChar 196 +/Widths[360.2 617.6 986.1 591.7 986.1 920.4 328.7 460.2 460.2 591.7 920.4 328.7 394.4 +328.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 328.7 328.7 +360.2 920.4 558.8 558.8 920.4 892.9 840.9 854.6 906.6 776.5 743.7 929.9 924.4 446.3 +610.8 925.8 710.8 1121.6 924.4 888.9 808 888.9 886.7 657.4 823.1 908.6 892.9 1221.6 +892.9 892.9 723.1 328.7 617.6 328.7 591.7 328.7 328.7 575.2 657.4 525.9 657.4 543 +361.6 591.7 657.4 328.7 361.6 624.5 328.7 986.1 657.4 591.7 657.4 624.5 488.1 466.8 +460.2 657.4 624.5 854.6 624.5 624.5 525.9 591.7 1183.3 591.7 591.7 591.7 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 710.8 986.1 920.4 827.2 +788.9 924.4 854.6 920.4 854.6 920.4 0 0 854.6 690.3 657.4 657.4 986.1 986.1 328.7 +361.6 591.7 591.7 591.7 591.7 591.7 892.9 525.9 616.8 854.6 920.4 591.7 1071 1202.5 +920.4 328.7 591.7] +>> +endobj +27 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F6 +/FontDescriptor 26 0 R +/BaseFont/PCKLZH+CMR9 +/FirstChar 33 +/LastChar 196 +/Widths[285.5 513.9 856.5 513.9 856.5 799.4 285.5 399.7 399.7 513.9 799.4 285.5 342.6 +285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 +285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 +799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 +770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 +571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4 399.7 571 542.4 742.3 +542.4 542.4 456.8 513.9 1027.8 513.9 513.9 513.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 642.3 856.5 799.4 713.6 685.2 770.7 742.3 799.4 +742.3 799.4 0 0 742.3 599.5 571 571 856.5 856.5 285.5 314 513.9 513.9 513.9 513.9 +513.9 770.7 456.8 513.9 742.3 799.4 513.9 927.8 1042 799.4 285.5 513.9] +>> +endobj +30 0 obj +<< +/Encoding 11 0 R +/Type/Font +/Subtype/Type1 +/Name/F7 +/FontDescriptor 29 0 R +/BaseFont/DLKTLK+CMTT9 +/FirstChar 33 +/LastChar 196 +/Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525] +>> +endobj +33 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F8 +/FontDescriptor 32 0 R +/BaseFont/SSFYJF+CMBX12 +/FirstChar 33 +/LastChar 196 +/Widths[342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 +562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 +875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 +675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 +687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 +343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 +593.7 500 562.5 1125 562.5 562.5 562.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 675.9 937.5 875 787 750 879.6 812.5 875 812.5 875 0 0 812.5 +656.2 625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 +812.5 875 562.5 1018.5 1143.5 875 312.5 562.5] +>> +endobj +36 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F9 +/FontDescriptor 35 0 R +/BaseFont/XXVFAZ+CMBX10 +/FirstChar 33 +/LastChar 196 +/Widths[350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 +575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 +869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 +863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 +319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 +319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 +511.1 575 1150 575 575 575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 691.7 958.3 894.4 805.6 766.7 900 830.6 894.4 830.6 894.4 0 0 830.6 670.8 +638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 +575 1041.7 1169.4 894.4 319.4 575] +>> +endobj +39 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F10 +/FontDescriptor 38 0 R +/BaseFont/SOTTXL+CMR10 +/FirstChar 33 +/LastChar 196 +/Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 +500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 +750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 +680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 +277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 +500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 +500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 625 833.3 +777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3 +277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 +277.8 500] +>> +endobj +42 0 obj +<< +/Encoding 15 0 R +/Type/Font +/Subtype/Type1 +/Name/F11 +/FontDescriptor 41 0 R +/BaseFont/HPNSAM+CMSY6 +/FirstChar 33 +/LastChar 196 +/Widths[1222.2 638.9 638.9 1222.2 1222.2 1222.2 963 1222.2 1222.2 768.5 768.5 1222.2 +1222.2 1222.2 963 365.7 1222.2 833.3 833.3 1092.6 1092.6 0 0 703.7 703.7 833.3 638.9 +898.1 898.1 963 963 768.5 989.9 813.3 678.4 961.2 671.3 879.9 746.7 1059.3 709.3 +846.3 938.8 854.5 1427.2 1005.7 973 878.4 1008.3 1061.4 762 711.3 774.4 785.2 1222.7 +883.7 823.9 884 833.3 833.3 833.3 833.3 833.3 768.5 768.5 574.1 574.1 574.1 574.1 +638.9 638.9 509.3 509.3 379.6 638.9 638.9 768.5 638.9 379.6 1000 924.1 1027.8 541.7 +833.3 833.3 963 963 574.1 574.1 574.1 768.5 963 963 963 963 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 963 379.6 963 638.9 963 638.9 963 963 +963 963 0 0 963 963 963 1222.2 638.9 638.9 963 963 963 963 963 963 963 963 963 963 +963 963 1222.2 1222.2 963 963 1222.2 963] +>> +endobj +45 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F12 +/FontDescriptor 44 0 R +/BaseFont/BFZLAM+CMR8 +/FirstChar 33 +/LastChar 196 +/Widths[295.1 531.3 885.4 531.3 885.4 826.4 295.1 413.2 413.2 531.3 826.4 295.1 354.2 +295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 +295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 +545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 +795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 +324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 +413.2 590.3 560.8 767.4 560.8 560.8 472.2 531.3 1062.5 531.3 531.3 531.3 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 663.6 885.4 826.4 736.8 +708.3 795.8 767.4 826.4 767.4 826.4 0 0 767.4 619.8 590.3 590.3 885.4 885.4 295.1 +324.7 531.3 531.3 531.3 531.3 531.3 795.8 472.2 531.3 767.4 826.4 531.3 958.7 1076.8 +826.4 295.1 531.3] +>> +endobj +47 0 obj +<< +/Filter[/FlateDecode] +/Length 1440 +>> +stream +xXK6W(#[ 5dHr3Jeok@^L>oIr]wɛ< ,o.+L\1]$~Ko^L +lkjVz%j!tyeZU%0QXKLbAZ(E2j/qQ0Ljex-Y¥e$~մ=d|`#zow߶ݝg4eX 8 +vUM +?l*\QuR0gɔf7Е$q.XfCn9fœ39Lm._gS6piMUWCER.ZhevnGO:M8;@Һ '& zR. + r$N,4mƏBF>~_ۘ#ҹ$=tcPsQ|)0We=,9% m,s<s-L*E_/J+}2 `t`B*mWdJSЖ@,m0뎰LIv{G ɐ\angtCO+:$4ޯ-"IG( =oiK\ 8B|9HC{t[!,p*#M{ߕ +V h!@a*'c<̧c(G"8=MZt[Mn+e,@WZ.7wʣ{pv%, JĔ`5S:ΙSQ3$ ֈ189xdTŔlxo0=mSLZL df0`Tէ3@48B%hΠAm)_'[#I.ϙ4#2z3deTY`{9ß"> +endobj +6 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 49 0 R +>> +endobj +54 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F13 +/FontDescriptor 53 0 R +/BaseFont/YSHDRQ+CMR7 +/FirstChar 33 +/LastChar 196 +/Widths[323.4 569.4 938.5 569.4 938.5 877 323.4 446.4 446.4 569.4 877 323.4 384.9 +323.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 323.4 323.4 +323.4 877 538.7 538.7 877 843.3 798.6 815.5 860.1 767.9 737.1 883.9 843.3 412.7 583.3 +874 706.4 1027.8 843.3 877 767.9 877 829.4 631 815.5 843.3 843.3 1150.8 843.3 843.3 +692.5 323.4 569.4 323.4 569.4 323.4 323.4 569.4 631 507.9 631 507.9 354.2 569.4 631 +323.4 354.2 600.2 323.4 938.5 631 569.4 631 600.2 446.4 452.6 446.4 631 600.2 815.5 +600.2 600.2 507.9 569.4 1138.9 569.4 569.4 569.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 706.4 938.5 877 781.8 754 843.3 815.5 877 815.5 +877 0 0 815.5 677.6 646.8 646.8 970.2 970.2 323.4 354.2 569.4 569.4 569.4 569.4 569.4 +843.3 507.9 569.4 815.5 877 569.4 1013.9 1136.9 877 323.4 569.4] +>> +endobj +57 0 obj +<< +/Encoding 11 0 R +/Type/Font +/Subtype/Type1 +/Name/F14 +/FontDescriptor 56 0 R +/BaseFont/JQOGWQ+CMTT10 +/FirstChar 33 +/LastChar 196 +/Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525 +525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 +525 525] +>> +endobj +58 0 obj +<< +/Filter[/FlateDecode] +/Length 2170 +>> +stream +xYYF~_!e)bS`;B`@&;#hC㷎&EgE컾(ZVTmD̬nWY0WW?;PEww:aQJ,mʖ]o2!p"JuW)L6B !RWw|S6ʫUUDmq8vg 4AEaQ]4x\$nI'eY5``LfR(`=_)P X'pKcNlE+I zh{'/FL9y8Bl@Ex#W7?kj(s z ,/L!TleFtiܑ]vKO{}V"%JG2SV&OLB0y@KG'#Q[p<QVsD965f1,ё&{)(S9=y&/ծet:T\jF)B΄W΀vKחa:M~L~RN~d[,Q$1) +8x׷]]{X]︁Rb$23=Ւ 6b-1:%(~.ΐ2ݵjt̑1K͌#/>Ⱦi$KHh; f}Y%%>n"6䎽@]ł5De`GlB&Kd*2/?QDui_nA}٢fԙL1Y/xϕ렴;L2#^2mh7}`tAc?X3L"[R>1&anEٌY>cxQ/S4:%y_$2C0 mwK[1c&IA䫯KH[;X"E{5Y_o'I$S<-E{yah +=-_}n)goЙd]r ELw+6A^q{*}{ nXqw_6^8q<ZWc {XRk}7P%V+f ҕ #2/uxڌh8Q1j5w|Uwya0EY^G +(IACw٦s~= ma/'T޿ar$С#)r5ںt?K ͯ~GL2 @9:QiEϝgy湔m: +zqN2>wDu3ܲtWɉ;ÈP#ֿz&h72nU[{5Zp-@ 4LGkwԝq%of2}ƳNL+ 8-lnRgDHwrፌV|AvU1%KbUM8}wm+?hR)|/>Mɬ |g%c#b;CdJے@ŖQ=qJ'M 8`?R37N@ܻb&gue$:0@iJŮ>7Օ +Q&3[ͬ5ǂ_~p +2QnvTŵ4}fB!iBσTr*5uo-yuU|Z٥'*?!Hw;pR3mmgӶ\Y?,=m۱\VP@2<Ǜ舘P+ Qh$G +-=io.-$򽳸{˝[|?q 1Ý;օGJK$;|œ=iʾC8@3Th[ͫ_6.ӓ;B]㽩sGl +޹jn'n]^ Bqa喲~%.J V:~ydq))¤a_[r TB*> +endobj +51 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 59 0 R +>> +endobj +62 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie] +>> +endobj +65 0 obj +<< +/Encoding 62 0 R +/Type/Font +/Subtype/Type1 +/Name/F15 +/FontDescriptor 64 0 R +/BaseFont/FQGAMG+CMMI10 +/FirstChar 33 +/LastChar 196 +/Widths[622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 +500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 +750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5 +762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 +388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 +298.4 878 600.2 484.7 503.1 446.4 451.2 468.7 361.1 572.5 484.7 715.9 571.5 490.3 +465 322.5 384 636.5 500 277.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 0 0 772.4 +639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.5 494 437.5 +570 517 571.4 437.2 540.3 595.8 625.7 651.4 277.8] +>> +endobj +68 0 obj +<< +/Encoding 7 0 R +/Type/Font +/Subtype/Type1 +/Name/F16 +/FontDescriptor 67 0 R +/BaseFont/LTVBNX+CMR6 +/FirstChar 33 +/LastChar 196 +/Widths[351.8 611.1 1000 611.1 1000 935.2 351.8 481.5 481.5 611.1 935.2 351.8 416.7 +351.8 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 351.8 351.8 +351.8 935.2 578.7 578.7 935.2 896.3 850.9 870.4 915.7 818.5 786.1 941.7 896.3 442.6 +624.1 928.7 753.7 1090.7 896.3 935.2 818.5 935.2 883.3 675.9 870.4 896.3 896.3 1220.4 +896.3 896.3 740.7 351.8 611.1 351.8 611.1 351.8 351.8 611.1 675.9 546.3 675.9 546.3 +384.3 611.1 675.9 351.8 384.3 643.5 351.8 1000 675.9 611.1 675.9 643.5 481.5 488 +481.5 675.9 643.5 870.4 643.5 643.5 546.3 611.1 1222.2 611.1 611.1 611.1 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 753.7 1000 935.2 831.5 +805.5 896.3 870.4 935.2 870.4 935.2 0 0 870.4 736.1 703.7 703.7 1055.5 1055.5 351.8 +384.3 611.1 611.1 611.1 611.1 611.1 896.3 546.3 611.1 870.4 935.2 611.1 1077.8 1207.4 +935.2 351.8 611.1] +>> +endobj +69 0 obj +<< +/Filter[/FlateDecode] +/Length 2167 +>> +stream +xڝXKW0PU#@ܛwu9eU-0g S|xHINx7Q"$z>zcD(L{F +EN}6[ev-~wеpxCz^OEw?wЬk6.yn?mEIE,ӵ>lZ&@"-uTlm"U㩛F^{?p&!H䙶[ʞw=1,y=tXCl-|, +ЙPfW?v=TxBSoG qu&HMUY=hw5Hfq>t}ƪk39J|ZTgwب4~r!><v- 5$7 +j@?Cϔ{ٖco80x5`,!ؚ̖̅ +'[Q6~>E">=`[~ /] Q0!̟rBTvkEzMfY\{5y)Ȉ"<:IWW"Q aRvYH1odL3?OkWoIP y%s^+`ǔ}Z5p;ȽSUarͦR leA 7 +kܺxǑC^jL."(iXw]$~:S_wj) cN Vޣs2Wzu~ɝk|j&L?󩵎Ŷ=pz`5^@F mo<<*[^aE@#'WA[(h+x`|.i~70E4\. j㕳INyi EZa[\(D2(1Pd52É,+ .pnx q4E9!>ZW%\kg|vw3aުA%Grhaq|$"{]ߏxГwaRvR"HBF N,8_Ĉ!.2m쌽k)ST|U+iJ+}R9? &)ܽ0Y?c5Nဎ.ߦ¦,W!= #SWD-b|e^-*5~Í&K6F}v'*4>2ajr,E( (-DK:0g <>|זYbHdUa|vO=to$\$s֩%#Ҋ0*:H8{]`6J̥9ȉrNRvT%SMvxCC +V\kf&0k߂mrq FoRsQ^Nc. e$ԒI";J% +qtl|Xp/uIԯ+RBwOqV$P/1`C'05quJъH0VO CG`gJH iJGinnD)?ѦB_|/>#;_(kE$s˗ҝ/) F;2Q,a`Tلj(1RœRY {k/ ~]*kC|D\{k`8 IT7lj˿R(ߜȯJu@^Eվkq\Ț][|YؐvK +$ W5QZA:䆝)qA/YP!l:J!f7k 4)`Ilʳ1| +endstream +endobj +70 0 obj +<< +/F10 39 0 R +/F9 36 0 R +/F8 33 0 R +/F13 54 0 R +/F14 57 0 R +/F15 65 0 R +/F16 68 0 R +/F12 45 0 R +>> +endobj +61 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 70 0 R +>> +endobj +73 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] +>> +endobj +76 0 obj +<< +/Encoding 73 0 R +/Type/Font +/Subtype/Type1 +/Name/F17 +/FontDescriptor 75 0 R +/BaseFont/PPCPCC+CMTI10 +/FirstChar 33 +/LastChar 196 +/Widths[306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 +306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 +306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 +525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 +743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 +460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 +460 664.4 463.9 485.6 408.9 511.1 1022.2 511.1 511.1 511.1 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 627.2 817.8 766.7 692.2 664.4 743.3 715.6 +766.7 715.6 766.7 0 0 715.6 613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 +511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 511.1] +>> +endobj +77 0 obj +<< +/Filter[/FlateDecode] +/Length 2015 +>> +stream +xڅXɎF+df.>xkЇ,)%E.%7 +K&">12E$7yC_6 7i"6X$)ߦ:;ˋ +&y,* %xTWnڪ$[mcwyutDLCӁyvNUTg.v7;iDf#EƊfHjSiJ'2Fuq՞C'њvE3αp f-Pf!uygt4Mk~hjI_?[-ؑmbeo<@]AQCoXvK"IN.L.*wGJp6(i'XOکkݬmL[+P$~+1ȑ_{C#v{2=Dʹp3Vr&T̗>0a $,BA~OЉV*fiV&:vD)VF(vYL{yy  98/U"Ҕ+aMEe~p. Aˠ#NEi963}1R| &OWarad`*j@X^[@r5U"E"WZ+Q g)Z&"ܣXU߲ZH݅1*3Us@4^BX=̴m2*,%085>vK9 c}`+N!bkϓOJD0aePΫ_Gh>+ŅfQ+b&h!Np3Uk_ˀ +8_ss$"c_ ikt'H(4Zɑwcё1˚Owظœo8_ ?R'Qڈٍm*M"TDBi!6Sa^zyZ=?^Zo뱏:i1J0w2TSs8~jg˖$4/`FٮPF`ke51BO :"[%1%< m +>R{Cf#vA 2'`BCEk"G8ɴ3KonZo&x#B .X]`]T`dʥF\q-NuzGb1( ٛdfa;2WLe ;`9x>z[[*U(~+u!2RcC"Ȼҝ*"NvaM!w]ì9QMdDiΙL:IHnE ,rO,C PY:F9LΟsIl.`W)e2Pv/kJRMN/__ޡ$"9c;6T<{1R w +JybCY)[y2G mFLs](>e0?mdr-( >'#&Sc $Lw619P8kDwJ@ؕ̕?2+UV_mW\Qe p< %P910>6*k':M:x4L0( v-* ge,,[ Gޫ8@?oSП |_&`OkMTeZt.]d|Ս}y϶N6:Φ0'G3k掋]5JBS83eC'?LՑRÀ?z.8~gI% *8?@BDd~TkyvAS6(Wۍt'Փ'@"(KK_=ZM졶# BqpRˣӮXydRao&<k}x~ލ*uR.Îc +G:YX GR x={3z +MKT{0Sk! tKV +endstream +endobj +78 0 obj +<< +/F10 39 0 R +/F14 57 0 R +/F17 76 0 R +/F8 33 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +/F9 36 0 R +>> +endobj +72 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 78 0 R +>> +endobj +81 0 obj +<< +/Type/Encoding +/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress +160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] +>> +endobj +84 0 obj +<< +/Encoding 81 0 R +/Type/Font +/Subtype/Type1 +/Name/F18 +/FontDescriptor 83 0 R +/BaseFont/BAXKGQ+CMCSC10 +/FirstChar 33 +/LastChar 196 +/Widths[319.4 552.8 902.8 552.8 902.8 844.4 319.4 436.1 436.1 552.8 844.4 319.4 377.8 +319.4 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 319.4 319.4 +844.4 844.4 844.4 523.6 844.4 813.9 770.8 786.1 829.2 741.7 712.5 851.4 813.9 405.6 +566.7 843 683.3 988.9 813.9 844.4 741.7 844.4 800 611.1 786.1 813.9 813.9 1105.5 +813.9 813.9 669.4 319.4 552.8 319.4 552.8 319.4 319.4 613.3 580 591.1 624.4 557.8 +535.6 641.1 613.3 302.2 424.4 635.6 513.3 746.7 613.3 635.6 557.8 635.6 602.2 457.8 +591.1 613.3 613.3 835.6 613.3 613.3 502.2 552.8 1105.5 552.8 552.8 552.8 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 683.3 902.8 844.4 755.5 +727.8 813.9 786.1 844.4 786.1 844.4 0 0 786.1 552.8 552.8 319.4 319.4 523.6 302.2 +424.4 552.8 552.8 552.8 552.8 552.8 813.9 494.4 915.6 735.6 824.4 635.6 975 1091.7 +844.4 319.4 552.8] +>> +endobj +85 0 obj +<< +/Filter[/FlateDecode] +/Length 1801 +>> +stream +xX[6~ےj `inVӎTUMHd9>68/\UxuXˏooUtu{JS&,KVmE}L?뫾xoh{e<~ɅbyW~Q{C1zѣlvp}YLxtjJӹ}'',NYN'3I@Vz#EF#jhW @دG?SofhlNE;XGGOrHՆvhz)%ka ++ fM EdQ›f0n}Uk|J4*K`Kt:RҨ Ii馩hW:sU4jZ7;>Q,h:e 31lA2%F̢-J# m]&8rKQAQ"BDyADdB, -l +{~UVj'/T6pCA4f;FP]4Sq<[ObHjjN}"= gxWD L1g\eA﫮m,:}qL~78T MhCUS~e5ɋQ$ m$(&,Wv#"`&n2 pYLSKƯW{sQB2x\cCFqg$Z):CXUGrYm*+O9K* *&l:`Vbz"{KbIcLx5E`.j_84Mg1PàqXO‘^X9Pj3c#Ln&*Q{$2bZU)W.`N*Y&4r)GrfJ$k; +jWذֲ>)9ٿ) WPӞhlKT%3>miX?wv\N/y& @uCJ bK;R5.9uNlg< re- xhoO8>ؚ # 0ۨ}>vxq">QصSJ{ڮoY,oO*_!$HUsr7-Y;9%r<W +=(k^'4t4lI ߰Hs}?EgcJCSuMn <^[\3.)| +&l> +endobj +80 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 86 0 R +>> +endobj +89 0 obj +<< +/Filter[/FlateDecode] +/Length 1997 +>> +stream +xڕXm۸_YzO^RCŵAd%~3,YMICr83C\ẫ4_GU(E֡fջ:nnxrZK)+Ǯ>+U{T\l6eY-)˒Mo4tI_ooՇ^;\PgrlI0.Fsl6;{ڮ+Eϸc~=WVU݋3M:Vwv,|WX/ʍQPUOKF9`n{nt7ՓUfY>xcjҵA &+c$ !/VD +T.q'ypi;0\OEI;l=&v0[f*r-ǒWx(XVNKeFG5늯k"Mb^H~؛)*jS#}E_C7G0&p:׹!#R$q_.Z!L,O4t}.EN Yfz5,г ALaK|&4t[ht>zSX$fXy_7n^fa4Sn6<BNZE"ݑ F!Bb|*Ʌ"QCl\$6nM 53} E4[l/7C{w1#z/ުn= ڢ\<ȞĘfmTƒ(ZYjy;MRF93m upUQKKq]HBET +)$d`e@1o*|`Y0 NIHAGZwv1~EyXcH'0RWz\о'čcݜ">=m޽Ǻy9> +endobj +88 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 90 0 R +>> +endobj +93 0 obj +<< +/Filter[/FlateDecode] +/Length 882 +>> +stream +xWKO@WG}MQVJ=8 1 0*߻GXg}DǚٙoaMQ>>"$#I@ |9ãէ4?۬;|CDP@H~Hk~. ,(M.&ڊk_)E" "&/tmEHs64-m"cIxPJJLPЄ& +8+ *Eb 8Dt^@Կ?sEDH vYk>D瓱<8 +(sx;_qc` aYqN'5*Tfq(͒;NRa?1_8#̊n5-XXu4rgz20Щ?]1d9:M0swBɍcq tlnd.C#[@gc+L`ҕ~s>Pg!ފ5iJ,7JiKlJl uYބ/{hGrc C6k$Mъ[ݛ'n=G|;6ȿ,r%:_ŗ9ǣݶn iɳ$/-erkvȒ ( *p{t{0}Ԉ.b8庯NhJiq/W7~uw@Q?n .1+WMauyuiX~"~( +endstream +endobj +94 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F15 65 0 R +/F10 39 0 R +/F3 18 0 R +>> +endobj +92 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 94 0 R +>> +endobj +97 0 obj +<< +/Filter[/FlateDecode] +/Length 1028 +>> +stream +xXKoJWxaWRY0]0))QޙMMhy|m̳?y ^SOE`~! +X'c4|H>Uͧ}-V @>%w̰TYF%x``RSkͲaqm%RK +S-!ޘ?eV/t^^|؎O pu AI-N_Yݼrp fF;{v9ಽw O0^'!RQXDr]'89p-A`辖hAp !uU=vDx~Ȇ H&.W539jKV~ + [+d`/NW5!NH#]u0yߪml79ԂsOQDP-S|\$n׎0UjKa9ޑҨr6^̳(4Ga@YY*zym7zށ]vWV R\O{<vmȌ"]ֶKC06NIon]q]d.κaƾΊS`+˓wtImвA_r/4^&7/x/7g-vرoM*-ų"'837_,ʼnq6:g|/q;u&z5W:ur ok95Yׅ}Һgt#`V +覦1_E +endstream +endobj +98 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +/F18 84 0 R +>> +endobj +96 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 98 0 R +>> +endobj +101 0 obj +<< +/Filter[/FlateDecode] +/Length 1623 +>> +stream +xXKo6W!-P1K@&E)Z=dsW-D+m%ml Ii驗]V I{*V9*DU&flmΚbEW_WT4_Ŕ\gmyn`qyהFJ\T)B$7'@LWY:U#'!!j6*.Cn& Nܭ&K7QL^j#n$e/:z.Bn/M\JK \LE-fQy$3C=SdJo6)1$=ˈY8p\^D76e _\,hC UsmG۶)+~oǀ0X<*붫P4)-u*7Uڹ[t5O2.PPu:p vR^īmp1[w?ԃF%1O$S \9pRhiblKjE]O5ѫbt>\R-`y*.("a3 +um;5Ēɨow0Ay(}]ݓ+Vuma&AiQw [h|u-c$_70]~G@Gi 8K SO{ӂj GVkv$jꭶ駥|$fs嫯j/ >oZ?;K,l<.cD K((|Z̈6L%AiBd45Xz +r ϛ*l/ + ɐj#;d/_ucOoӜH5YjL9 f. fp ]Pzz7<K`/eD6)G^N/@44ItLL$#w$$u*ڰZ( z'Pj^vۖa*W&ԙܝm7Sok S0'9T2-5NSb.kiYgenHz4E:v 1}k"=3#A\QP+ OCzn.Z]}^[CkgB׃B%-X1GԄǑ«9;&v졡 Vm]%a6&01vCu ̉hzaRme)Z}6)@H~_zc[E<~NYB"sA|f@F% Qmѻ/mQ{55#Y{;,\pM%5`A?Tpc 2p ZJ?t F). 2); +4 J7w'\Ybn?=ʃL]p/2dߖeTB`^o18o9^5mҽt-¼,uh+؆YD6~R_3> +endobj +100 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 102 0 R +>> +endobj +105 0 obj +<< +/Filter[/FlateDecode] +/Length 1493 +>> +stream +xXK6W 2Z1")RR6i EaX>)˖l{ra!>gyp."E~~_rMXW YcvP [~x "f"etC5lAPLEtǃsdBcv$0**1%Ru}*[Iy([<9G,ܥjMUP jL c/St{:6BkPA &?@bv't + 6 +FW=PaQᰁV=}aMZ mٸ碛{NY"ZQPb_UVS[#xL,9xR i #(e],!\Qu2_H930MѮ)&i(0i`GקL?[ JŮqѠćS:`N Wh)bs +(pc"X4x_xz(Ac5Ȉ4v3Zٙl+T+7wFl84$4*2, + )nkb@IElEkOR1 +Nk.a+1QQiaRe:VA,yGK[AԬ BR6i>5"ހRRNH,bvuDn=DESiF օMUGփ,`]ѓp?H`|#= P4]8Hjauk )<>̍sߏ|4E+~iwMS7)KEg6gꋡЊ)5M?"qzG?AX +endstream +endobj +106 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +104 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 106 0 R +>> +endobj +109 0 obj +<< +/Filter[/FlateDecode] +/Length 1900 +>> +stream +xڭXYo6~ۚOI=CXbюdHr:,)} -3{ vY~'*ʻzPzkл$i+ݦ23U|V$if{j߼[SjuԵzv_4 B\>1Vu֒ sn;6;Ȓ1_8*+zt]^Fci-\.zD}8V*-3Wv/&e-ILCg^HOØ!0 +80$apG Č]ל [x!a;ϧ)žK7<N𶚿ʉt0 jrHMT_ fA3ⰷW>*cg'ZsG^,"h*~u\Mu,\౟ڥӲ)6JqH7++t]%6my^nc3eqSX;% {>mab,)#":)^Ju ~ #1V,:kn[V ЈȺ:#Vs2c̨i"@m̵Jwl~S`c;SKdYU/(^{(f(Xݦ%:Cdg%[p cXѦbtٜ5kyc2aaiáR:?5k}cwc[X` +v! 7HV"XMQ$701(3]6g +kd5.Fo羰{./n+4=L'LMt޺>c53 Q]чE.Ps&Tt(yXgz_ Dt\tRQw{\oWo׏7'' H, v:8`csbEFe8nzCo:[Gb xdw 4wҼDTr}1$\pFMDk tS~ڝ:]G$3-0-SӊE8YV[vHt ĖeR{y0Nn6pn*i2 ,lrE`4>1-at ^Ăz1U;/oꩡ JA]2$a$X (WJzyZ0MAF2=L=s^R%ـ:Rv }O.Hq'u〡1%d\q}|͋' zk}&0<Dб~M8!Ia<\r"qa +bh!B@gfj;;P,>Gk}08YjϹ6kShyly818vӰswsUQؑ)/wVd'C? ʕ~޸s +OVl6[2OAaU.t ]zdBt+A7\ h[y@WSF/BFh3&<m_qOSF&ЅĔ^0LrG(iA85Ӆ] +endstream +endobj +110 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +/F10 39 0 R +/F9 36 0 R +/F8 33 0 R +/F17 76 0 R +>> +endobj +108 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 110 0 R +>> +endobj +113 0 obj +<< +/Filter[/FlateDecode] +/Length 1360 +>> +stream +xXKo6W.K$MrӢuQq~ȉY2lyA!)ٴ(+N@/! gyPFY~ n`8@" "A᯷! |Iv< a, AjDTp;TVn h`bjmV[ڴ\,ln&f~Q̑ADJm +42uwmyjIn;7 oI#{4Y-tEv3*]|i|]uUē`_V]- 6-N@yO~=)!\OvhɆYt`E1ۅCJ+4ZB8ᄑr>:տ>?%nrt5ঙUN]2vkkbkfO{}xOsD!4h;mdAĝy+1^yb~bwLc]uN*(N<~:x4M]% RNqp6=iWWu %\/t*$y8$7 f1̣!_}q_yE:t< A' Ώ5p"Rߢ.=mVo}fM*Su.JWǒp-ᵍ|X.0Ղ wJ$̉ mDqE- uބ\oF#sAPcaY_v)ҭY"Z)3P0rmmp7O' j>4/- {X_9Og%{A8Á%c(6~c79zk\a>*.}oC?;C<,O4;x:.jqyh]|0n"+1 H0$FP +u+OӒ +endstream +endobj +114 0 obj +<< +/F10 39 0 R +/F9 36 0 R +/F14 57 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +112 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 114 0 R +>> +endobj +117 0 obj +<< +/Filter[/FlateDecode] +/Length 1757 +>> +stream +xڝXK6W7Wz&[H/==hmV,̃dKf{1%r83fȫnW n&+)EH8\m"-z# +]otYqS wU*mWOu<Z oB& ȵBD:b :U8v*=ۃXo1{2N`Ix1k;PT6 +0dz"|3nuƯK2xaV%#1wJt_ G0oEAwv#q`kF1kYְu=O2UHPv~Txv~аI缘[t7%|w":]^W3 cu2s@h?=u]̭kR=4h@k%RC[̟ˁ5T#OZOJ)t\m]&Bs̋c2^șǘ&lVQ7uUst-LagہYs`i$h hb\rpᱩ]&7p]WgZ|?E޷ݚ/ 0[ȟwrV;+guUNW6Mx h# +?nu9 xk2$GR}؆(jRڍN]iv>sII\Ii~B}e+;g-+ȜάPU% NyDnydtyuI4"GA-Up|r0հƚiCHMdکFEӚ1˱ysO2+p=& m)wGA椪!eݳp?p +J>`76W顄z)u0Җgw&gVPAS3vs_fBzGL$xT +\dS>0-KZo{h٦ ~rlNr>ҭŏC \$OyH8Q>,Sn- +b3#ԏ>X u"o≢킂T|=gB=lxP؏ͿlǴrϻQaW8Z :Yϊb4uC\E#m]Z6.$Nb׵*Eo R/` >#}eOumSFić;th]frՏ'y< sվ9VKM/f]A  |ަM"/' Ap:;ҋ"YV3/gǎ9o,=NE| ~iHhrh+S"#ۄqQ:., <#i5uW ]nWPZPŵ(rgGS>5KŎzz:1Ӡ+Y2>qtlN!8 DIBy|ie!Y7A=!uy3\c(Aඖ2݇;\ RLI8rߋl`Щ\4)W +_. +@U&h,@]^ˋCV!6l,,Q_̶B8.p{ǕE`'2IwAK J/@Hm'jg5l&3O)84rsrGvwR3.(4l?fQUl_Gdz޵/l1F3U =44& +endstream +endobj +118 0 obj +<< +/F8 33 0 R +/F10 39 0 R +/F9 36 0 R +/F3 18 0 R +/F14 57 0 R +>> +endobj +116 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 118 0 R +>> +endobj +121 0 obj +<< +/Filter[/FlateDecode] +/Length 2142 +>> +stream +x]o6b>td6X-zחCNƓ뱃gA^RlydӇýe&)~IEn7W>)Ei6W"7UxdBmwR*|oɻtn۶L:M WzIRQ,.Tow*K/VI}ZerUx' + +~vI` ;i]'&i۷>oMnMdDbZ^hC鱺;,lR(TM/L*+ HL*OdVXFR|uHKuTnO`Zq͸B'" J&?;=gtE2 RhĽvo9s*z:yNձ3Kc |/B2 +^A] |c6U:<>GT~o'AI@媓dRy^0Nq.t>/2c!D \iП8g Mqb.T|8En&FH!I(XDA}"2]Q҈xe>۱tPƉ:Fo7A-rJ(*چfVd9X +EgsfgP=|.cQ%;S] ,%8vG2nxsEz5n@ܶ pMPNuw?|~xs %_\Op8 34tk$\5 +ei]ꪎ0t-r_i\]}r_m땈)}"N0XQxWaiGg0>lJ/X_tr+X`ZBC޵RRa(yPRT߹.&quKJRER2PA{. HL:PX\"7z^ UoB!Pw(YYr1rBܯ "n,Z"o\m 9sJJf/8|U%0Zt!cLx%Ē Wuӊ@0 + hE3!T86}Wo( 01_"0jTVּtۼL[#oP(1'?@v>Ҏ,,uaDT {2e==*p=3Ŀ{Vw>eb^zyj]"4Jq9 踂@VEE~릒 +WzޠDCszz.mm\*(5Ul^2pP6<*k\LJdfV\YC/! dsהB.Tɾ|\WK얍K`Eqׁ9&|.|Ζn~R$h[PM( gL  BiPopO E$BǙ8S;{L*h&2RrA^N> #p5w;`Jw vpL1.Y޿5"܈`fr ;p=yLi5XAt(QKH&̃R86{W.JNVXqr? .`TKSeυ{HXTL m^voNz+ .d<ʂ6q'7A/>RGCt}[҆1 I`<\,p1PNM cFRH2'-^>>4-2ߨ!iڅIzR|6 8];PMfy oٛMr$eV]|p76?t)R4<5)-J/ScXi-pZxZ8\̺?1`n-`R5+@@ìS-?3b_.+\Lʕ< +pGu}^ViʃhkѴw}*3ȣ +endstream +endobj +122 0 obj +<< +/F8 33 0 R +/F10 39 0 R +/F14 57 0 R +/F15 65 0 R +>> +endobj +120 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 122 0 R +>> +endobj +125 0 obj +<< +/Filter[/FlateDecode] +/Length 1047 +>> +stream +xڭVQo8~_:H*uޝNڮKBh4* ۮ8(' {o;>}ѯ?OȑLNvbxBnnc,V-zu-8Zo>߁Gv5ïڅ Krm,sݼ&A~!g ~"ya%%&|"9R1>C-Ͷ\ِ"VoҿAC6g#?I*Wo}vFhܴ +nz#KcqcأoeĒI񎌕1hg0-"8G/8087i]['Ҫi^,nl^BVGW*ᴥ- [ޮ_Ԇ:Uw +7<F|p8 0B}@O_z갯e2955_.]_/W_*s^T;5ʞdH{~iȑ`Kʪ!9^98ykIS{!^V<8y> +endobj +124 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 126 0 R +>> +endobj +129 0 obj +<< +/Filter[/FlateDecode] +/Length 1485 +>> +stream +xX[F~@jb)0 CZ)IjZVY{ΜpNJ}}:|,<>,}摗4k/,\,wwaWe2_ޜs]_frww~nk2JOx]9~Xܷ#.mos}j#(ndq:\2"Nu>Pȿ"͗o^:Lg"C#e; +b5n^ΓA$N.)P W?R9mr0ft6A818" rW5da+& +&< o0ڀkpM&Ș kh#'8 Ax7AϢجx#9ф8(,IM +uz.]:Y,d +]XL|X4Hb&l-fsD>x~> Ev|A 97"Fz.Y> 7s_ޙQΖ3}sۯ8Ҵ=hUӨdߕ٢0ein(H7+c褮"J.+41K##!t4+qinͶ6.O{IXxaAGqn,k.-\,: J _a8 ig^Rh`c(&^y0-i=+lQ귡G`;L7e7tk j5>tPY=SI{WE8Ml;_\ӓ#OdpV +9GnH i8?^;rAكwh? KǐH~voYP4W (;b-_$ w/jSM?m:y~l*쳼*mYP&]hx ǓO_d{d4O#jԺ;Ν)Ih r0UWu_E-J>zЇV/}w+ةdvB lE+`ev"' +CGAƭؖcAKE4*MIܘ5sڒcX Y*ivu dևЊg,h?6#a6&5ACG)-lae~ܷ}Gzv>.S,Jfoꤛ `&I2G%XmOņ]rv[O%7J_mĺ_irx j:G^5 A2 ]11 L$UR6CfU{E +Ë*WhlAbd80c EIJK[Iu5uˎi;幭ԖD!{񞂈2^M1J/Fl:m,]?:l-'~6- 0'SȂ˻jĻ.HErntO_a' +endstream +endobj +130 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F15 65 0 R +/F8 33 0 R +/F10 39 0 R +>> +endobj +128 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 130 0 R +>> +endobj +133 0 obj +<< +/Filter[/FlateDecode] +/Length 1018 +>> +stream +xڭWK8@ً#-Շ\民rpI&8 +ӭ(}6iMWr0,lYP5BRc`3LjaE˶q&uysӳ=$W;m:xLߟWxI5gE݆'JªEFJZj\l9l@/`mh({|ବY=%Mؘ|+ c/]O6ۆa)=z=RA ^hC.Ľѽno;kwV}K?/p|#_Q߬`i\n|Ev@q$ v6t|70̱~,TzduKu>M!_oymsXM1du"Dk?& J_qZ A+h+ f>cR]/(7ρ˽"uJۆC_?N1EoG`>v¦؛@Pqg +Moz.|w-@IQ +`ɿ(d\Aڜ.z(Zg<} 2n*l }7bl p> +endobj +132 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 134 0 R +>> +endobj +137 0 obj +<< +/Filter[/FlateDecode] +/Length 878 +>> +stream +xVKo0 W=)ږ%@P`Î= E(Q趮vB~c2i7;Q4r<ONt6OXJU7(&Dֽ?#s6 Y:;n"FkWIv63RuﭔsQ1vA.Q ;#ltSP)h6` hwkUTH9I +bnn +/yUT'mjJ9)Q:ֳ(#\doF 9܍*d]?2F $r`T+{&2P4>j<%)!.-\^M^"ZuD3'3F웝TzÒÀ:Q_^S;ή!s,Ξ]H"ǰ}ZJQXRis͏jj_WJulkMX?> +endobj +136 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 138 0 R +>> +endobj +141 0 obj +<< +/Filter[/FlateDecode] +/Length 1329 +>> +stream +xڵX]6}H`CڇjJԇ>ɢ%j$jS03cO|8_h$bJdxaLi><$VS^/?zIrwnxj,cn!b: PP~cc̯eB@Ře vR;^B\mG`{mOagsQ)OC¨x>9wJAO_1fUYl͸ܧ"W='z fIRo9(1`d[cj$ba XdNags vn+N*gV]4j0-9ݣ>#3&:)u>klj]Cߜ&q2$Ǵf ` yYzݑr4YUźQ6-sVYB҃F΄[G(XH/$eN"53PUR,mfk~")J!iYŀuȮǷ‰hyS%#2"|_DDC> H ]pᩯ'aeFҐ+--ԛf,LITEt q}m 'bc[@qʵy2L'_H"B0>v0%쳡vFCb޴Ov̈ xPzYW̐ºC-/r 8Eq͕d:ps2-pYCr -x_CL8U39{'exRT +T8 &)߱F$E"z b- +T~l )ƭBrhc *UV2-i8&Nr'pf6yu{ U\^n +ޗx-I&Ϡx,1dg;GR}C" Ov6Պ5p7[:,qMVSz[(ӵ*6n77QNξ?LwZVi/J}ޘ;k&!#EVyݿ +endstream +endobj +142 0 obj +<< +/F14 57 0 R +/F12 45 0 R +/F9 36 0 R +/F10 39 0 R +/F3 18 0 R +/F8 33 0 R +>> +endobj +140 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 142 0 R +>> +endobj +145 0 obj +<< +/Filter[/FlateDecode] +/Length 2183 +>> +stream +xYKW{6WKT l&Kރږeob=U,h{'@MQb}_UQZ, _TE*-tJX~vá|oMݷ˕*tcn?+ +*XUU+rVܾvȜJev=pOOM[بm/EMYr=c:tȵCK|zB/Vp/KiaZ!3]I !CA[Snm[&8Ef NI1BËIA_TA|9SlFp%ЪS&h9 Dk=&_gc CyN vBBh ʃk$G<5v{³FbzyCݗDs\ RIJ׊kΔ-Km_b¼Y" u 5}s@bZ?aG"/Áz,ndQ݌NBˣ@eTV.Qry\(>bt3 7=xPx/1V % 콍Re|Gmlzs&AaBlUI|RMP̽1<=V#ah,^y^PZ QE@bAgb=Z5~}zi\&A/OKW>f*K0q[Id&sls" +.4I^'fz>mE.Ynݡ~?{?Mh +3#ܮm"[sd@nj!Ju{(!/+#(G1}ae$V(8Ad8R 0xP//$ +*;b@T9Ϧ=R b$jI9T 3 Apž4@^2N #A7RtOgnzٟL'Vha7"A0@X:q×ArpP4p.:?a7El:Ұh̠ ZpStΦ ļ8|I{ROOj4(`ErVg%c)Ap|7$a!]*tqDA2::hӐtlL;f{]B Cubư|R֖&z% oAK r) +)|a_UvtA( d7rۑ`]G DQf&35cԑC6#RJ`AQA^FydPJHv#vf{+ +R @ ጻ ԌIH1&ܵ\^g%\QG*Fqez3%‘ؠgT YX/g {1~v">4SdaL2FN[&pRaOР(_6|?Xm0n]X"^ eW3ŵ/3ܸigF'M0Gbԑ;0093 AKĬHQu0kf;C,F&'u84PsT9,Õ3u1]0 X1j]澤(&t6˸#F%6J@q49Uz{v=Mv2ǎk/Կb"s1|Ӻ>/ NW7X|^XLTJwylP +V ѷ#*#MUʡf~k)M_[edčQ &H~!7aϴ'A#*OXV$FO͡>o&{clF6`cG6JTH-zGΆߍ4O#:oޞO\|".&,㒪8kRjmf۸s}rKtms5+X s!L1 +endstream +endobj +146 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F8 33 0 R +/F9 36 0 R +>> +endobj +144 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 146 0 R +>> +endobj +149 0 obj +<< +/Filter[/FlateDecode] +/Length 1167 +>> +stream +xڍKo6Z SbadvZhW]Ɩ3H vA{IQ.wUc~MuTM?~&ZUc(idQ~zx膧C|zq=dre=o/V>޷[|/c(]m(%Yoӱ +OC#zߚ-u/~X /$t[o2ɴSqkpm֮k֬[u֍s~׬.Cds>ڱ?_chӐ pq͢ 2m]ΟVL&_}ڙ!׊He)iu5V)XϩRR \2R;=kzJAM[;`l{j mlwSS#{EJW(("\Cp"=dK){sЎ'~^ LFJW((UK(|lBL[IBղ#hDZ= +-!NH +eKJ*2psw%h" mv;0loEJW((5Gf:j+{G +Zo0r y$ƣ"+٣3FK҃?,]~r2Wsdp#y YTϖ1'\i8F s4SQFyKtG#h#O ݡG'QO)]u܌u4khsaN 'l:z 0(އF,*bLf0:O6} +endstream +endobj +150 0 obj +<< +/F14 57 0 R +/F10 39 0 R +/F9 36 0 R +>> +endobj +148 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 150 0 R +>> +endobj +153 0 obj +<< +/Filter[/FlateDecode] +/Length 662 +>> +stream +xڝV0+8 bphD^vjC:$[{ 68!=̼7c$]u)e!Mh,9+ڝ)Q,Η'2{ۘt|+=f.Hpc TCutg*Cܟ?d)u NQG(^8 Kf[ h#q]?- +G`0#Px<2KQ ?0@9ÊL<)/.Qü΢ebL.cz08 +sg͘1oSD$p !` ', +#ry!_ّfeϣhi\q!v;> +endobj +152 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 154 0 R +>> +endobj +159 0 obj +<< +/Encoding 62 0 R +/Type/Font +/Subtype/Type1 +/Name/F19 +/FontDescriptor 158 0 R +/BaseFont/BPGRXE+CMMI7 +/FirstChar 33 +/LastChar 196 +/Widths[719.7 539.7 689.9 950 592.7 439.2 751.4 1138.9 1138.9 1138.9 1138.9 339.3 +339.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 339.3 +339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 +506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 +1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 +594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9 523.6 +530.4 539.2 431.6 675.4 571.4 826.4 647.8 579.4 545.8 398.6 442 730.1 585.3 339.3 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 693.8 954.4 868.9 +797.6 844.5 935.6 886.3 677.6 769.8 716.9 0 0 880 742.7 647.8 600.1 519.2 476.1 519.8 +588.6 544.1 422.8 668.8 677.6 694.6 572.8 519.8 668 592.7 662 526.8 632.9 686.9 713.8 +756 339.3] +>> +endobj +162 0 obj +<< +/Encoding 15 0 R +/Type/Font +/Subtype/Type1 +/Name/F20 +/FontDescriptor 161 0 R +/BaseFont/HDXOFJ+CMSY7 +/FirstChar 33 +/LastChar 196 +/Widths[1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 +1138.9 1138.9 892.9 329.4 1138.9 769.8 769.8 1015.9 1015.9 0 0 646.8 646.8 769.8 +585.3 831.4 831.4 892.9 892.9 708.3 917.6 753.4 620.2 889.5 616.1 818.4 688.5 978.6 +646.5 782.1 871.7 791.7 1342.7 935.6 905.8 809.2 935.9 981 702.2 647.8 717.8 719.9 +1135.1 818.9 764.4 823.1 769.8 769.8 769.8 769.8 769.8 708.3 708.3 523.8 523.8 523.8 +523.8 585.3 585.3 462.3 462.3 339.3 585.3 585.3 708.3 585.3 339.3 938.5 859.1 954.4 +493.6 769.8 769.8 892.9 892.9 523.8 523.8 523.8 708.3 892.9 892.9 892.9 892.9 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 892.9 339.3 892.9 585.3 +892.9 585.3 892.9 892.9 892.9 892.9 0 0 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 +892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 +892.9 1138.9 892.9] +>> +endobj +163 0 obj +<< +/Filter[/FlateDecode] +/Length 1177 +>> +stream +xXKo6W(,ߏ-ZAjk%v8DJ<ړ`s8oY .1šP,m!XUW -]R_6l /w ;VVxEU׷^~]v-{MNE("@ + VipZ3}gRʛtsdz[zUzӋ:?E1NC@s/˲_`_j0ahb)AOX.jđ3:NEݗC` +Wqu2gYiHȝnGNA C;˝nO) F4xmup mJtAA\$Q (*>3K!(("j*1 +F$vFH f@$4W9Tii)ΖɃܰ@x +hHvl?Tr, +*"hp +H'ιl0 +d:E n=R*%,'dOGR=QK6W!FQ3|LYaҀz^I׽S LFzn"5.3挱{aSwegۯm4q-ixʮ.@GӉMD"la%q]RGfHd6S=V3LS&5^AxKi_6OY= a#0a;o Ś(!)C|e#sx3Rf8c'_"CiΜN/=Ur]}].g{yӧ(\=a,4'hc╠X;32eDXc\:K%!1OY~d|e!L3|BF`=iL!ΑW$_29R*N.$KtGQ=4i^^w?Ɣ +endstream +endobj +164 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F12 45 0 R +/F18 84 0 R +/F15 65 0 R +/F3 18 0 R +/F19 159 0 R +/F20 162 0 R +>> +endobj +156 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 164 0 R +>> +endobj +167 0 obj +<< +/Filter[/FlateDecode] +/Length 649 +>> +stream +xڭVю@}WЄDL+렠>n}ٴ/b6#\!{XXv4#93^PzxJ)XAHlXHJ2ey!d4 FbŤXF>[ﺋٗ[4T&(J8m:s)pNHHLb{hIa u O23fqp|JAgr%\s Q$N!v|^cީ?jRjB5isK pC-UmD~ڝݭ70Rvd`pVs醸<Y0HZ57 /,UZTHN]ٰ+;! z0kl=UyUxܔ.ŶsTEg.kA2'ML(3b]fcIl[Q~>4`hr+Ѭ/b*1'9/&yulࠀ¯v dq] zq2^78$ښt^տ/뜓URYc~: 焲ţ*{5nc봛0?HUEdEdQ,C4޿s_}. Ǽ|FH71Ynfos +endstream +endobj +168 0 obj +<< +/F8 33 0 R +/F14 57 0 R +/F10 39 0 R +>> +endobj +166 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 168 0 R +>> +endobj +171 0 obj +<< +/Filter[/FlateDecode] +/Length 1135 +>> +stream +xXK6W7 '%n \ +AkwfKDn6If8o*RyS!)(Q,Mx|u Z..?QmwZs˫kJ8d`BU6eXR[4I)Ab4X(j[( X镻|ҖRۚk|߮wWYۮ4ۦknĠb]b$3I*ou.9h|\Ih Zk<)h1paJ^vBi HO" Ď" +HVیccŮ9@Sgi)ڨ\МExp;FX@\ hmYc$JΈd}/ICaBL,QEsѮ}OJ$29yU )"N +:2& 'ܳY6 "k 6^ss[ =m2%u42q9 !R*=LIb B6oS Ԋ,Ce>Mnu4b{r4|H1@rc8} ŋn7k~P[7/ݵ_g7 h/.QA) P]&1OvO9Y?Ԝjޯ}y=ۿ=ύATĶ=H%Ih!C- ɕ @RV2~JyGuOX"!֩ +Apl$%/׌9pف$Ĵh큻.OlFcn"fftIϚg4PbhP}qxr<Ǝ\Hu7g,-37h6Vε,h2)SPS|a? ysZB=mjYEprNԴ[YHLLA#0;DɇT¦Qfb,Qb  +?C +endstream +endobj +172 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F12 45 0 R +/F18 84 0 R +/F15 65 0 R +/F3 18 0 R +/F19 159 0 R +/F20 162 0 R +>> +endobj +170 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 172 0 R +>> +endobj +175 0 obj +<< +/Filter[/FlateDecode] +/Length 437 +>> +stream +xڭO0=Q0љxOCe5v@bbwen^)h=Ƴ)^pMnzXOgxZJx!Xŷ=d}4RI{=g! I㋀Лqȓr2*eE׊'mVidMh**|rT&T/,Yw'q=v^,- -ϳv +ӟd&ᣢiˑ1Su5_"/68$Ůo :cƱ([lQ/cE5= !EZ?+8<}p:n:T}!eiFQ϶܈55G7{ThbBk0t.w'> +endstream +endobj +176 0 obj +<< +/F8 33 0 R +/F14 57 0 R +/F10 39 0 R +>> +endobj +174 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 176 0 R +>> +endobj +179 0 obj +<< +/Filter[/FlateDecode] +/Length 577 +>> +stream +xڭUM0+|L2q"q%7Pn>NvCɍ=PlI|r!fJ@$U pޓ/}usgI0kҒ~ۜwOU)({ ]E{X穭nUMqMݥ +GP^j G@q`Cp_%*e91JN?!웠")q N/`q c<)G/|1ρb/?4pKRKCqoRR3N1Iȁu#g󺮲]o3ur_'f/wKSBD\ +>n%΄шn'^ܓIf0F9A8e,'ğ6=yĨ=' T|֞hKNs)7ܭ:1+e-% +endstream +endobj +180 0 obj +<< +/F9 36 0 R +/F10 39 0 R +/F12 45 0 R +/F15 65 0 R +/F3 18 0 R +>> +endobj +178 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 180 0 R +>> +endobj +183 0 obj +<< +/Filter[/FlateDecode] +/Length 334 +>> +stream +xeN0D|]:qGf-pS7%qzةTuud'$r.p8{S3:q(&h96(_k" ĔL}3_Ds'RBG߃Awަ4ͻwH/m\*ެ\˪BBdwy׵bc&d{%;mVR{mj;_"(vmn(iNeE3ʦa ܳXP8Ӟ+ɄPHqFxq5ڛA+[艌jvZKRi11ݘ +endstream +endobj +184 0 obj +<< +/F8 33 0 R +/F10 39 0 R +/F9 36 0 R +/F13 54 0 R +>> +endobj +182 0 obj +<< +/ProcSet[/PDF/Text/ImageC] +/Font 184 0 R +>> +endobj +9 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-33 -250 945 749] +/FontName/KUVUVS+CMR17 +/ItalicAngle 0 +/StemV 53 +/FontFile 8 0 R +/Flags 4 +>> +endobj +8 0 obj +<< +/Filter[/FlateDecode] +/Length1 714 +/Length2 2452 +/Length3 533 +/Length 2993 +>> +stream +xi8Ǔ}dHck,ɚH3h̘,ه,e %BdBeilӂQ\sޜ;y7>s[F +&D S ,2 1$H +H0BR@-@YSSЧ*p@"|IX@P {$, +I̐V +(,H>X XdtD eeEQ7K(`2!`◌zٺ [\˫%]5_m5W)y6mBv0%Ѫp8KvˡF^JLèM`O|;zm- |L" +Rop|]>Xb=Qd$_L15hc\\sk/b.zLjsz(@tBԷcChu] +aOkʊf~3Ãͩ XҘ(v3bS&I 9tlUKo58EF4]{C#coOFvB{q/sO['utu|e)>PK)-;OQy@0) vհN)o6sv)I7wJw& .z"{:vq\mU  hcߠr}uo;Δ+ck^>lC W٩ @uO~18رw,mb/aO]`FTb8P4=֒P>!39.Qsg:mӱOv]-ҼzL")fhzm~2LB`V͘'z7ϊ=p2T2< +2y%ѐO+fߵylDބS%!{U_/pg8;rxhpYjABt%ggö__F'?oJE8WUu+h t[CO=K0:UK_.p7SзGdSzz[2}yprDу,(߶엏C;ϡ ?90vŝ><.4?yjk2rK~[p#v4qhs +rF]w +#-_g4h夶 +Xgb5ܡ;'6dCáR'+Ng+=5At6Sx{*qBDj QBci%/rAXnS~fi=(<$QHq# +endstream +endobj +13 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-1 -234 524 695] +/FontName/MCOAAW+CMTT12 +/ItalicAngle 0 +/StemV 65 +/FontFile 12 0 R +/Flags 4 +>> +endobj +12 0 obj +<< +/Filter[/FlateDecode] +/Length1 715 +/Length2 2721 +/Length3 533 +/Length 3261 +>> +stream +xy޷) k. +(B llB # +DP@Mte8PTEjA Ҁ;wJd侹]/b +C +z`1Ń %%o[|+$8%px,pDэ)jd#.@S8đ A`f#?PnG aԿ1^xB$/o? +HP$H&hC8׏]# + SA +P~w$~d8wJ\WNϮOy#{g}42>p+# XOt)"CCw_%@TYE@*jHlx?H@3**U )UᏆ ɇ?(<,iW;by|kgҨǭ(O1Oi;PgZwip,B3VZgJd:.ݸ~Jzo3 )Z{r.v'MAIBV3O *SzEDu׆_\Lجv_s.TDa8{WL򖤔k%P?xfr0neyfybʘGҚ")Z}t[&&,SFn7LdoO2SvT/,1\7Msm!=p8xP,qo7pyV?F4N$R)HO8=iSâlq6 +Sث6ΐ('7fTz[GWvh~AY*a|r2t\7-l24Gbeh vzRJ zvV. R:VMS0Ϲ?BWdl\h_۽J# ZibVI_q:%XjX';PIR-DˌyLV+|%Fy# g_=PW#?g>{kOzS^v=:\?Tv&u4g)9Ⓖ51̔zW+~̺-Is-Ky2J?dw)-/T +gZ T.C@ny)cBYŸ8%Z\6 +}.+{kJjMm %R"; ?qJ.5&^ҕa LT嫲 s$M.8Q?ӵea)*c2}X.d ?i<>ȣόTSY-GG N? +;i{qHfMȨ/ +|s"[4rvwcħF{͔}L3 s=ӻajIY"w}Xc&+:[_a;j>|\H.-K;8`Dh&gV7meWL+Nh5&hͯFpfˢ ;Ym}YH|]M6nc5IylG8yKHLMF!*/>a ʯ=6dKM.Q5IJtCkFyT/kh#F3 hUDB/S¬=?Me~PcPgz3CWu}”m]OX%3>hL,kojoNV1^ޢ_i.',Fme0I.+ߒ;ٹU2BǭPAOI6^񏷟xuh[EYv|ܪG X3kWB |]6֙"3eLs!5s[rct[ x#$:!TQ=>!*bKTmI)Y:~Üh[2*\'.h2Zq%^,E@8OK97R¶*qnKQ`}}QL-CZy95^ _YaYnzsE=O"8 5[]>r~= r:Wqj` <OZS,?1p$m7akn3߾}PhX/?}#!1Z yI''1H}3>cm@@lȖ#l $nXul +*x7{[QB%9E}p<3*tO^~##֩an9P_YrkbK"HāqYH%mgeWiͥ8Ncy*}V/n9j8&>^:%/" Y"g +.5$Ma`+;6Qu4MٲПkj _Oqrs zt4-jыe8ZHL60Bf$il74/ŮfN/Q|9Ico͈pZtAȕB J]#dm[A[g,MA'Z6tNK|*QZeRЏ{},Đ)$/ e +endstream +endobj +17 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-29 -960 1116 775] +/FontName/FTGPAX+CMSY10 +/ItalicAngle -14.035 +/StemV 85 +/FontFile 16 0 R +/Flags 68 +>> +endobj +16 0 obj +<< +/Filter[/FlateDecode] +/Length1 724 +/Length2 2335 +/Length3 533 +/Length 2882 +>> +stream +xy<!HY"e3%$Kd~SA`)@VCz#0 DqD1 p]]8`&SijC r'zy#.m phB=A4 +8~}@?B p8ɀ; _,D@{CSI~;\C!A";;,1ֿ1ܔ#Q_ o:AA`EĀ$ֳw8+xZQxAA@k~p~@c#= Qv D3jȿ/W3&.pAa0qLh"Gvd"a;!10DEMPjppЄ`:j) $m/L A4-c?,эTls7c*S \ 9bND0W +b2&hPy]M^Z]P u5tR] lEr4ڊ;oȉUk_Py7dy"o#8펙@ՃcgM8aK]ݟ|l`9Z\Rգy{ kRr*Idjg閮}UTਜ਼]_&nȁh>{;]}dvsYKPoۗȭ gG^S>pk_Kg-DٛVJul+2tL@>5~R3V~,ҞuʎTGV+㥽^R Q Wʱy~8Z҇ qzSnTGL?J|㌃ vEO%|Y+d 1*[TU! +4E/ktYdl婬?ePXb !vnfgQK'~LNl{^XB3]}37SBC%XA=BzǟI ,rrU$V +[|5cﴩ7tV2S@tak | NmN[#V()>LwƑԺ[aCBbne%J̱Hqn={2n,bs,{綌F:Vf'LIWME)89ރ{k«5" fǴ9=~1νCjeVX5Y4v9Z*B\Hq,Џ61.:1]pK~0y!{T %>|AƢ_w5C/~izgųoᯫCSrhnM_Rh~ͽ3U☆A`1LzZ&hmeuEgy'58b%\iu3Nrgʦ:gВakV˛7VR;N&K[:VKZc|W{w}Խ62.Eɭ VjxeLV4>Fo&-g}^ţ·l*:ؚJl.CfeM=m>#IF<]e )eo2U==.-H2._X/L+tN=>吩O7lz녔jtk.S3 sT`.tYmD偽˦3)F?9RS~k,C4sM5CI <?/5g[ݘG7l`$!oCyH}1-…AtL*6aR OL49D;+z*{dġfrBASpa/#{w\cNr3)o] +T^= ulj%pyNܛ "[GX"Ɠ\ܯԢN4'VᔯC)&VU/aV,^nig|tB:GMk-̋&[N) nç6č.ַAOu2t=tI|R&%ckU%_*tKC̸1IH@*W49 ky8O@m<qzQ%KWbt?vo9b.^\2)渙t]Mgv?άP<ą33zׯ! 1OgVVX=9 u(k沜eYǬt Ic{^ D)|Gbq?ǟ[/QOmm,)  +JHpD j W#Di=o̦ gr΋M1 >5-jKBJm l}C ˡVIшQ ]^T0,ziW0uQ'Ԕ_^O D&zH^?^ +endstream +endobj +20 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-34 -251 988 750] +/FontName/OQGBBN+CMR12 +/ItalicAngle 0 +/StemV 65 +/FontFile 19 0 R +/Flags 4 +>> +endobj +19 0 obj +<< +/Filter[/FlateDecode] +/Length1 714 +/Length2 5120 +/Length3 533 +/Length 5673 +>> +stream +xeXkiiFzA)afZPBAPRJ:so{}>}}=s>3k䓃:Z”|@~  0#%$97k $,%$d(8:!6.r0- h]m`C `{KG-tЁ0(?!!B\0k[8Lp+G_2-w77coJ# ¬;> P=\9?om=? Nn0@ +Cn5Ŧ ں9 +a$[%[OTbۻap!~Oy5pW]ӿbpY='X_P{o)!P[5+#J^ӛOX'$ +HD}OnS}S!0=!4e98m`1Eؘ"zI5sHd?:䝝VD%LhdL˹Y;IW4GmՏ6^>GnPTa 4"̍+x2Ep握NMG̴?'EFnXQ i Hj:x|4qWrTIf $}ܽ {Xg0d/l=a0ɼkd[AѠt^^n~?|99TBMmfeئ@54PvS*Ty'c\iY?~W\4vWT+ʭAiO|[Y0^ͥñVu^eImOQ4̸~]ać(:euL6! ݐdT/_b@~bBȢ4"[ wS\m\a~dtve=)(mLs*3a/_4޽E'L,K 4hm:vy;yB |H +Ou#xD<:x1p}HV}Y~2'3sufo;>nЦgK%B3JdG/cG%Nf}QG$ѯrܪS%Naq4J>/8# r +iIgT-~=..S:$هJzDYI/C-at].caaj]]H[CR}Ofx_GX34čXdvVjo0}*sB:ɢBz}Ȟ%,Mk}Ɗ&0c*ǢzaݥԖnk谋z@iX#γc6mM;vmGeDd7qc[VЛON?oC0D;}-z +q(6ރ`ZIy)7QF?V23kك6"hΙtUo8`y6(`5(+kYztOG Jwd,}꿞hyC(LAo{$yX8qz|D7G{hM^Hk +N5Nx}4~~Yv#\+ЯtItlI1CfWx@bf Lٌq8+ SćNJ۞]Sؗz_7g89}$?i !{q"E.̴kmޅvÜ(Z1)]IYxz \m5vk?i.#$%xTxjqQ醾 [j9 j/7?  ;eW5i2 Li˸f8+x!+>) +>OJ` yU,_La~Ip.g7>QWOp2!x%˧YjuP$[*]V,p/B$Z~~*Z2!ߚ/צr#?VMKXwR@&AѴ 6 Nt{I]z PݡskmJ?+}w@ڭ *:}aWd0S;_<$$X$ ~fducp{zU?ꫮ\TT?~^[1/pڃ3⌢fN쫎 H݊ M)Ond9;v4T@TK+bl/$ݤz1SsoI}{r|vyEܗ*~Q: 5T_$bH 䢂Ver ={pjLV[q2jb§CRπ.(_# ITIz?÷80/cJxY!sV)jv `; {4\6,+{C[N"8(f8Xc;Nݣձ_ $9!Y?,ُK<%_&^5-)z>=i;.w [2V x?2G)8TW]K[Va|tx<ɏrji](gfX tyNꂥeRF}׿c_:n*˨:Vɽ*Z[d9Ҿ\,,nUdNflYjB?p'+RpKN[wҒy@QHkOmܥ䠘tkFF$|bDa]; @5?o]F4(a~a#iC=G%rcvGݜx{JҙaQC vL.(9ѓ@0=TidAT ۷CC;׶4\s\Bt4/Xe2X[`!KXZR?O*]|ݧ )1qCဴǥ6{oN4PN5xqV,FaMwSd/U"nc:u}sri_xտIV@jx<¸@a9"N'&n}JFt / 5tyZfc{Q䶽\PfйߟYѥc}C@v]M] )Z_qJ'UwYj{-{$)-W_ŊpvK>m-]G1=8/9>s٪MXVמմ>4C;MșYP,-?:'[/΁i+*y3)uUo 96 !aLcYޔn OR00q+2V3@8Y6URM w_LѸIzX_]ʢf j#ٲVCcEyQ9N'Jڹ~(;i J5Q^ '$ pĆ\ȥa +Vz#`R\)/LQJT+:GN%O +Anwf3dG_>ɱCr9_yq&hjqMoZ :{z.fysCGM=Ԧ*EP;dYKe=]ZXG~hQO1jjpf(YZRO3V@˿ͥB2CdW[vb7e1T7Q[ \H&Qـ­+?S7là[ +U}WiwE$}O8%5Z1ɯ- Ucp? ,'Yu}vh5ˌuQC]4i keM,[вa5d Wͳ?_l굳V,$E"dR"rhUr~V>k|[>jZ[B 2 |]9{ IaSl{y B"v\4_fycs+Q,=__?BY[Uc3bX5* = nW-ف.%''|!6>O& ]!OYnp\<ׯFC9k2WպO'NW_ie%?b]ЍϽ+*~j0OpGe3RT2䥕j +@U-.Nه=[Dy޾wqv!UMiۛ[$_%䊥/M!ƴ[+SĶ0A cD,+mSךݮ>3j z<90y%o^-:+<2y+o+X,㯰)ӆFԘv̑לlKgpSl +˟oZ +E?!E ;'(x3a""zڌݷa[ u]3Ƥٷ}Q:G!K"ZT;RI+!JcI_,0aam e9IO-EZ|LN b{θh,e}Uh6 jg@&ߍӏKAgh_&]@ۇTh#x1{w9$5ag':u!ɔM90Fh2Il hj qJEhu([ 8(LsAB?` ].bv<2LKa"_>"b#\;BZp +endstream +endobj +23 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-58 -250 1195 750] +/FontName/LUZJQO+CMBX9 +/ItalicAngle 0 +/StemV 117 +/FontFile 22 0 R +/Flags 4 +>> +endobj +22 0 obj +<< +/Filter[/FlateDecode] +/Length1 713 +/Length2 2856 +/Length3 533 +/Length 3397 +>> +stream +xyb 3BBDd -B VZ,)Edܪw?{_9s}\s/Tg;J{t @!&V'}BBMEL , A# G-8BkZH0 +13do.]Q*$ 4PB +ĎN$` (Jg@@Hd" xi`͟LX[&̀-.ȁ-΃-JF /5}koc/T 7gS({[@%S@2, &VG7N,@!Ҽ)[""@HE/.NC7q2u*؟_50AW2n>eH'i;F"0IЃBaH=L uH.?4?Bp8\K%Lu>ڋ )2C_=+9v lg\a +H(?εYՔo\*2|98X䵴W{)KJ>G5C /lUOJ\=|>șM7 e):;55A60أӊZ Qඑ$KBm-q#B6g7KD')²fB*ዄuZrn=m>M%fY͚lRQQ $3-}~6`Lv| WcUrG,5SRZ n mt†D6<lV+D[Ĕ/\;E$nܜ^&Jl 5!n6 ~S\ɱHfae7L.ךD|Tdp$@Oy٧.HSn{;7V5]}]mW0f=Sǀ v{=RS7n [TuXkpH"8*\E%s EU){CR6N!ߎ]")ˑ{.X=rr/>AҊ+!# fW],/wdmtZI)gD珌e^.;p}7&vn#`zs} J!- +/HL`~R[J>%cvn bGQzn˼{_XJ|h;{: +ۄwr05w +Xr4mg]Bf1QPɂnX#|y).':/!mNd;p5)` 4pLgOqB:vSQl{$D m8ο{R;f]ҺPUF.@m DM2.O먡ˬa_pOM58HZn_dEsxnk?T]D'H=(nVV6,J엢$=FmLGD~>e5L_5[_3L˕oIO);>pdlƜ?##ߤsRoN\Z#+Hܤ^k~j[=>q<^niI:D<W6Ѐ rZYܡ *xāuyB=-Ցr[>Wc2aN1ghp/u RT>s4RJB< (XxJr$_9BnPLAWm7hӈs O,P7#ҎD>LakG氷Z-G> Fύ8^(FaX!+U+[Dݟ]O)zpmJ e򏯪̓e3{\U+ %,D0X Ë?ԻsY ^U9?ob*\udݏ";9-P.pn l:ҒPK5W塚KM|FѤv[HD.cQp%F3uVwXW;j $R:+:=bq?-3"ub|NvRY?SЪK=hpdDUOw٨Uw?Ao}8m1.X;fnuLG鲒~􀧒x?[}w\jGn2 ǨI ?T+-# f_VyF<,TX:|, +q2LK0'YGoǙ]%bZDS L=B'ej%U#B6 )oY&%5z,H|LK#`5:rQU}j˨W0A0oEg{gLl4axp%-'oA\OVx$p\37X}\59yǷfY8'^չi|'6}nJǰ7[ty+u𫈎8EFJ.ňc # eʸSu2-bFEj=fٛ*ܝ^Ϛ>2^QK)*>6t]gZyT=eڮucɪ= *K.* +qIPL2('J['v,5JL +n1ShTaoW1wl8Cƹ[u2_ W!W^1:xyc'dWBݢ*)" 0Yt*#1 +endstream +endobj +26 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-39 -250 1036 750] +/FontName/PCKLZH+CMR9 +/ItalicAngle 0 +/StemV 74 +/FontFile 25 0 R +/Flags 4 +>> +endobj +25 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 5682 +/Length3 533 +/Length 6239 +>> +stream +xeXi$$T$d`bnPiA:]>uo\ᖅ"`JH37?P(Uq# +g_T(b  D YH{G3]_]@Y;#8[Cl:Hs8كj s9 <@(h#yBRAX .\aN8PB[ fAȫBp%[[ __\H;{g# +sD5_h`P?]g-\ai K;)aP0 +huB`y5ʜ<0pԿwg8pw!?￿" #,:O2!ݽE?OP( ?p',*jC8} k `0s¬l*8;.F3ӮYןG KA#"[\9<.8:tx+sjbpL&f{-o,;F| .2lqD|3۱~18߸ي!f>視ș1&}KAQ'@c(rw"í7Ap;".fPFG: 3ƒ=4[@˴;aPwӉ#PU$r`:R4yC1_G|ҍھU}F+Nx[)*pÞ0oFC:<̗0O;<]colxy#=iU;\J(߅bÐLQTOou꘩U +M&ƈ`.Kq)qC㰺q/2=҈ljXJNJ)XX{NLbsq/=ՂȑvNvOLef4uyj[ +9\eYkteUt9|BcPV_j8KSC3"XDpj/8b~L _ėXݯ/&RC+en֣StH-5̞3"SmK&n1n7ff^&h>K:`#jX46in`MX'` +U嵑>/-iVM&GI 2q@ ̌P@_#Zu1!5)C[r<8e4\?/(Ӆ@aK  ],?)L?O+Z/ɖ!\I25(y>K` B*⌿G-XA%6?uxQ$3nqTԣ6:܍ݘ߹'9փVCȘf2E)?R0;rMێ [*$k +s Z?]_tL$?-8.C~$pǺnYIJu+jNL1y#P&{p$\IF1lܻ8$X󻤓C QXǍ"2/Fz9l1Xv%;ʯAA79 "~KpS:˯1ך"%]akun#Z=lusyD~)?/&t{r}Z^U.,z393 [+}˒c=D}!7|F:ߜTռYԼm]V +N Qh업< I"w˿0-^vOFG3sE>9LPZRem,X O8jh;t򆄶!\B(B-;s oUuUf鰘Ϸ9/2tn (#WJFnrSčsb2g;;\v՟B)~E@㩯I6(Fyžd|BU+hҺY32/ +ԛoW[B=E+ dga=\Dg3-J~NpK[_7PKDs C7 U%lOQ R[vb[Nr$dytFĂظsZiORA v9wVb)ƆOPlfd6l$YtX6pЁȷ +TE2GܔᱜiCd@0Vl=x)'ѕZ+CDfP /\"PemP. l>#]+w5 (G +WLa٨p{pd<Z.ڋ-JELO֋IDOF_& +]P a7i6ێ;e1w)Ŭxr) 2և,v||J|F%)mxwq}IN:ޒf2Pvjy0E;jeb'\?m;I߹xY|81}MR˩8ffg1n'b[lsgJ*Zs ^,j7"c[;8jw)Ìǝ/C^YDJUʭdlaY z5sb?W(;+ם}0~'᫶LjݔY3΢үС'Ml]? ƒb#3[c|j xRف:GF{⯜5< 5> d(q^$hg/`r2՚?h̠?S:Dڿ8e\Ɋ8YEd +@hOD2>~WiM0c\`uC6 w@uǪ +Ԃq~e3brT1oPfX<_ *Q+|Lx T@iMavqv1yr#=R9$,R6E_Ա42n{MY|S)R4>FLe)'X/jIB#u`QHĆPp:sc҅HY0&ù;tozgO|W7b\*[<>$w +Ȼm潲}xј-LIƋooFtdˏg1h4zdM.;ys6 B +KI)kڒ[Hqѹ%-R}7Wzͳƀ" "7F큺jB * gӄӽF~}n #=$q)VKaōaN1km >%A::E>D4_,>i+j\D!N;yCRtdFf'SW\7y@ #h: +l QkI-V0*]x(:|$DitGn=@=IL:.2Wtiiíkjba&ذ^å^ iwc~O%-w,q7*<- )mc*@?]|`])z§W>^1 h!=p׿!-8ce|fXk[Y8+ \*|wǺp J:*zR4 +"0v,;i7jQ-V*Zhgk>^Zvt>}h\H.fk쯎2ԝPnUIHKFFvtz[;66Sag \}oVxn)Xa-J+ӟ+б)Cm ]B ӭUcs~wҔV;ȝciu>y.@M[yǩ6DH~L89&-Bk =ET8Pw\(:`:mTp,jL-Ct#gh%Ѓ)syA"9]ͨê/̰Nţ@6]Ps!';ˑHx?ce}4 +Rq9Ϻgfd~P}EvCiu*v졹v1^`WUT-(eCX%L|C굻7<>ukcKC4ȶ}s D=gM2N*?ߛ] \T7,:8eKIJPz>&3ͯ\szӈe& `<3A? Ls/)W^G7l|3)ģqyF豺s Avɴ"`,QS ,ŞA}5GM@/Иbq;K>=ꄳ \|۲9w3E_aX,KqH-ɕ&bJ<34*[Ћ2yj^Ս-A;qÜ3eS0 eW5 MlR 3tAԟR9Z:F]*1ä$a(p #M^{<_K I_=ɬ<WqcGhC=F; :Q!#= Ϙ9 +2 ! {fS ĀLNӑD4|4AV'N"%3ζ kX.[vھ(3<<"(/`j +~1XrBmjmaƈ&uݜwͺٺF}:l|ìC;@D֋$k-:GAk&P)WNM79?ZBܮ۾VߺT+AH a ʘ_ʒ/TRd* i8_2AoYu J`n2&*u?u!>u.=g7~g;^6Щ7ƦhQ^V<<-PU/Ζ T+o.VXmkvu\IdrMD ={=dP> +endobj +28 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 2631 +/Length3 533 +/Length 3166 +>> +stream +x{8% ˈ5.100Ea$0f0Q"*[$wȝv)`K$) CvgLӋ(|W QK $oq$'t:H?4 'tAH>A6ͩlS  +i6o~6? p/eHb]@%0 @g$䟫8oD$Gwt@1 3v~'@[YxEkBc]{G1pF#mca'(x*Hl8 +G#W(ccj`0\kji(M@GH?)D_x + h##Z?  # nA<$3 JrUۯ<pzD/$q֫û?-Z'm(^ On^?d+8#-{O`;ǘ}juh1TONʾWW!^dG|>:ʺ.L4LMxwbklR.=gYu[@mꗲ4n庘1Ggbb^sK  +7_]iб~e5'te6TUƙu[R%9r }wº!l"Ԫ/pNve"+he9a[;o <3/ (:*澮e#";re.ȭ j3ј}+/ QG8e{A7XKzg,MyTHMk&iԘ$:̺R>lQTQZh;3pxB@n8d+a5w,UC, +K6I@}1 r34ʑ +bŞ[<׹p)34nŞw:؄5ջ^#ZA)(UD#ܰ/+Sl?y}B/ W3r)\Cm/*}]NM>34Qf:^~h + HH6^ruX´@$DlcNvDT9<]qSG z=nqk3%UrFUh /+AsI] (:?ev0.qS87)c?B-i$.1>]> biJV䛰VA v愵 `yҊnFpd#[>~w u/ +{23'·uHMgXփYNDJӖr8ZЫn*[Lc8߽(hOȊ1)rrװZ"ʑC"I7=y".8ZEOZBJ-.<6MnAu١dCS簆{(|%M/O5_sX 3]eC< + okm[7. C~Y> 88_4= +;D,a281gîڛHR**&C34l LS2"b $VpZ[c-`䚒<;1*?)#}A*;$5g +W22N6ơAߡ|C(R)߼k"O)26m 8bWDn ;]`e$Ccb5Q- uan,w-.uF6&=7ρ|ݕɉ(H hy<cw}dj5غF˳AYaNtA*ݽgp7{Cy]$7޾+풽EG7;h΀ U[d?,hT6Fj=e5PS}n3ixz=jjhuV*.azumQޝv'7L"harO^2%<׻6X#|Wнibm3ZQJSg1YǂfXN)"-Hb7SZޘ32ﴹ|iX,Vz'1%/8 9<Ȗh+6v9u֙38hHOT&OkYTEAڷR[fR7 ıpCpBixlfSN"cPFФp쵲\OTG['<!ڭhDj]5 BdL{2Nf.ֲJgOnjZD8yvl,!&ZLv ;'#kfw諗xVtkN Gf*,,8[#Z<.|tilq':)!ltsFej)#σ˭8p􆋈I2IƼy>a6o&-,wHѬR2DͦܚZV6=$DHB3x&eHj5-y=M>%Gww5D+SSze5HN6&qEbxԥ9o\Unodw$&!ht*G@>b +endstream +endobj +32 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-53 -251 1139 750] +/FontName/SSFYJF+CMBX12 +/ItalicAngle 0 +/StemV 109 +/FontFile 31 0 R +/Flags 4 +>> +endobj +31 0 obj +<< +/Filter[/FlateDecode] +/Length1 716 +/Length2 8026 +/Length3 533 +/Length 8577 +>> +stream +xUTq wk=6\hq`]C;- Ҹw39{g͹2kfMKjU HC "#Qprc00ȸ@nPGYD#,rrxDމ`8:y@2,P !.Ps@f kbh:C!nޜ@K\WĂ`5wA\:X:pwϒ//' /7b/1T[lhqqw_pҎv l5rC  5l +g`O.MMy=EyP7-o10+ѿus0w:X4`Jw*iiG/_~>/?O +,[P@Ysw?og%| /9FV6!ބgVm|YrO42/P["(&펙}DhBϭq7Y%r`F*vcIĠ-{"ͩ iגE>[bNn;R[m-Ä>>w-/g+IFjC{u3#Gui xOsabo~..S)5;y"d-kӳ2ge+ U>]9rAJn'H +0sK9ueb/Ԑ4a=h`u* (t)cy9d7(kU.IY`KZk<((?,̂N7֝O>).FQН`ynGgI?c@ JdP `?~i_Kw ++,ӿ6`[ R_&ԢleS>OKf_'!";_Ihޛc]QnNJNpXXW=MXWW̸_?Sעxu@p@M!ub-1 +:^)C? @Z8Sʐoc,5.a6(X8rI1H{?x{f6HlU_PKeدqj4O|S5Z< | ~Em.L",1~p8kH}B +o){nͥFf綃x:i]in"lvK3' O@hQVÇw]s-1]E՗=9҇ck!3G/:@O^39ޑ̭m$ϹZ&D +=HWw5|#_Gjxz3;=_ӆ +ecGZs[v$KL .Sinj8X(ÏQ[TF}WJaRo.(j|-d)nt{kAp *2ߟ[y5[B30̻eIM~h2D88I%jZqu`d6`BL%VڶEk\_[܅ +L*\{~8 vVح]=V2>k܋[W)XsFJ U+7rac͈{AWvћ2b++wYN)t +O4Y;!W⇚<Qeֺ#93o[n'ewlXYʽHf)ʚ~}h{!Y# r\vkjץҙ冯kb.*sACQ~,hD҈ +bjNe!dгXC0ʼnG20"zX^d1ޔ&y8q֖^)Tv p0ek;H)IWkq +87q5K*W(0n۬JRu=쬤[QXdVm;xZ݇xL u QU)%E.~eWmK+j.ۿ 9gVEKY$E]n}F1k )O;a-J1xG#6 EC=?ǼC=sr1 +U&O/ pz[ f8m:h_IPm%[0V`yŤPP8tVmvC9F2 $NҮP57' ʶ!#i>$[i[NC&ҭ>OBiND'%]yE huG++^1 )^*Sۊ+~闀Nv&j͙Prn'@+uM'ތ'܀Y`oZKKuy1kqݪR omZid2xg4A#E|72(ȗxIÎ0ެhϥ6jsKԦ_sh&0\ [@z Zgrr˶гdw>J¢W̼ mcRGA8"Va_cotH ݞ y?U!Vn&A!ͅ=wHDD>SE{ʄRW?|T9o[|Edh:ڧk1ˤM'*~7~)Uju@ޛltvTY>, +fRᾒ;7Z` ܼ=|-߰FqҹjVL/ N'/mTT6k (0rD4]mF[{E|oBi1 +N-ШStaЯ\{H ]^S{e?Rn}jf5Jֳ:fr `Wzflk>+ -}xdH ,MN+1)',zF`tf|8~O&+SFㅓ]&!GuF){gWI%yiZ@F;,2ZdY>,607{G)$QΡ2e.ko]M;T< +JmнQ-h +Q;gXOCMxL{8J8[L<`̀k/Ҡ1M_{ | NYqYq'g+؂+&sP1xYI"wf λo!m7F[*ѡT˯nJ~L1Ftiڴ4T%1@˭\P.A'JYp{5sNS6~M U}h1F{\qO tDX5;( HCʚ7|ϝ8R_=J1dc6 ]z_{:$RcFioT˝GuL뗐XLD4"xψa/uOnQHln2If + +%h)ԁ{"S-PIJmSaU `//s&S 9=jHCwuO}^>HRER1l&GOer%6\ lϤGڗQq*N:|ߍ.^ͺr:_^H;BHsIf]]`8n)Æz7kI/OMМ{=2lD{R)r'qXJަ]VwT>~5s~hjH(uSRx7/~.KctJl$?y =iiS([Q o48nx*Z-$wJ/ȮK 1-aޅm)~:P/3&}iPq:̕9iPQxuiR {DQXQN4&Mm'iz28Dy̯7tB4Qg]9|Pv& +b߄( +MTDD8*[5 ( >3.ƠYd:A@g/9^8n@xۮ (Hm% ޮH7/IC+n,Iʹg.9E>Z쑪Kx Tr_;3/5Y|';9q"Ff9>䇩6Zv&'P87 IZt%=\Cl0mzK!d\m +:FKaK8ΧNow8|I /yx>ߌHP+/ffczab1$nTOY4gHz6}?ҳZn[1d\36ݥ˪xc]"̰OAn\ b~֕:'$~黓*6up}9j9HRl{~|! +ܣh }B70?t A ÚM{P,;p8<"Lĸ@xIH.:I? qVx²sH=;j[d b +[0rJ @i3CނJj hB{_K[I2(q܇{Ay?? -xT*Jifbz˸@G 2ɪ)Q.o4 ؍ېE:RО)"53Knr2rqu'A7rƪ_8Х0v<_c&d6 |a@rH% +k:o4 (ѵ$ӕS#]%2 Ye>)O$"$m +H7Z$u1L_,bG]~QtQiP=(ߴdkR\U{ 3~]goYD{J~:Zb`}$2)]+N `HL #u|/ m}U~|s3>'͘}Ȼiͤ{Ũ}GKi#QyrG˻FL))E@wDۛ"Qp!M^~Djà6OGxzU!a' `7G{-y +endstream +endobj +35 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-301 -250 1164 946] +/FontName/XXVFAZ+CMBX10 +/ItalicAngle 0 +/StemV 114 +/FontFile 34 0 R +/Flags 4 +>> +endobj +34 0 obj +<< +/Filter[/FlateDecode] +/Length1 721 +/Length2 11493 +/Length3 533 +/Length 12048 +>> +stream +xS&_曶|3zӶmVVm۶]iVڪmݣ3'".֜gbƺX$*B&FvL L9aM& #'q25t5t60qq1MYpr"N*8BNƆv9Cg SL m*Ɩ @_(2ur55acbX;L-%egf\M~7)5N{;?L .66[*m\Mr&NvUap6))_&3C_ΛڙWoFMMuq!m[hhi|%wd gLs_ۛXڙT L LWS ۻ{ѳcD>cbgpJ5;KGS)Q`w;O(Q]Pa(?y8lbv)G֛?КO߿'93&}xϤֺ=oQYW3X?r 3m)qڌ^4}5ò>[~`*. /ܗ+ LڮObg}˻Z?s#XSS8%+dsR=\OW ڽ'Aߥ%6V^ 3="y,C!1r2Ȭ~\ Ksv8+ nLR:&$ߵheUSDw[((ٹ @ޗ9%<1+D5QK͓bnܞyRM/KAhOm(%B_5+ +-2 +MP;ߎ}1[(PB tKfdӻY6vs 뵵(p_Q9G3}0 Ia6DR;l] > +dɵj7^:PM5}zG󬊞kce6!W%T'I=Gɻ1N^JKr,;&[mԢ :"I-265==d[1Y/˜iǝ.$2GWj'EnRX1Y+G%aۻƝ%8IK6?yE-F @Jw誀,+. 9u-5SFFm&6_W%(_deXE.DfaLΨcMkFZa{@K-Đ+G-ߛ|Y SoޤLJ?x_ԆH?aQЪ?1S}y鲇;ܖz5 `<$;ci L 9hE +z3]E>~"@ mXKGЅ(R/΄f(A[&~(un]xo.̴xffGNi0v*\h~y~WkbY"^;U%nbƲDJuήw%#Ft T!0iV6\IhX.qw81e*vlD\$/+|!>J^Wx]Cn^#h2UUb)~k1pmϨHV%*TeY-K?RF&IDCB6GX*?9u< J$V_L$.*SCnEܼb>h_w\u +gsLwZ8su5"Kc)&@#ZR=_&3N;AdGә5t2l?3]R(ͥC8cLx^Ȧ`n))orb}sn,?_WET+t<ngP:p&V,8ۂ.QœJM`=(6C_h8\˚q>+wds\o+ö̹Ҏ? ?ɋ[gOS$bR2Eb:頻'TIY˴ʳ]RiaINrLci*k8S[H!&i.K"IajOwM1lT}&T.AFz٪9?1_nмAJ=m2Tln +PYJuWV+r T0j^|RѠa ^oRÓ ?6]|nݲ3K:eܤ)ecBMyFA62?Q?^ DI=((&Fǻ H,e2m+@N0Ɲn팜̜| My.8S<ӇS5 WV=fp]۸0\%Lz4f@@"# +z7x42*%>6wԘV>;֩΂Htl7PA Piߨj{ ?+4Ot`hS +趑㍷P>Ug !ҵm!0vz8Y6~w#P;/|TZ̼*^ ^c3@;9~h,;DB(I5Ze)/2M,? D3c]JmXI˲)6M& +)Fhi,챲c"R&z "wI""I3}] jntGn sZ2CD&,**:᰷iMt8>!UË~X ']~-4b +#Wmi2(h^+Ō8 1NQ2dvTriQAw72j|W+҆[cs_fh~=}-?O|ϡDW{,ޛdtWe#jfBex`vE[N+꼭ݘҎN+B"ԾLvT PҦ }ҙhtF6f\Ƚ&45m +&=jzyM:̱t]|8څ5 s^'bd|#N1'~݋3Q5Vމ͗<hw_c*Q^Zl <_໸Mi:p H4'&oQC sI +ӵd/E_]-FZ\^2+jzoSkUMepg j#iuJBJ15ۺT>WFj/C;zE6HGT*~pM Eҹ,.eU-m%[;:oR|Ba(.kIXjɋ{s|%~WA@-UՋgռߐg,%j:-,g#Sh y(e9&_e +^zY<5,D^NXJS="ե?}eDtvr"ݍbcd] 9ENFQ"rJ^%¦Ԑߊ H9w}1\j=/ufN<æ@IF: +iY(vI*^jߛY+Y"'[J( A('eZ,Yf8J7FKz({Opx @E/0`0k1dz~ |[8QtjS,=K&~kA6*~#LqAb+?lԑQ{-п)a^zE7M +%}TIN%{"N/pK<#:2 } ',GӕAv%.(/BҭxTyi.Xrҗ6y4I2qyHOaLpVIs' *'hvz#*'#J`y`_q8n#OHn@>&zvβnKX啘JMadll\g!3Įg9a_tͻ6|գ|oC{LcƬwF3iSDyhH4Rw7ʼnUmH),d6VjT͟M&jal9),Cz>ܷy*8뜄=,KNe.۠A:It335m9_KP4gʁͺ1=8uj Uv|[~kbu|r]K>)~ ؤl~mq/ d +t*cEd_rhxB%^[/4^L)<seqf8#!\wWlSyڀ)bÙwu2-#u8VZ+Ev2QynN~H6$Ymn0ҡ7d4&N Sch*:\xfLXk[Ma795lf3粲DǹXH@ݺ 훦;jyTƴkV=4,uLK|&,!'Jxp11"䂮KXR 5)MS!1`ukzqJtkaG ikOjpm8hpbO +syѲMpuͨXGfxl*yZKQn^ (CE9Gw%g"ܦne'4_`-j|bݸ'sϋ/$>hsu[e n[[dkNJZz;7^fķ }?&kSx~a4s>rΦ_Ӵot*em.-#? omj5Wu96x~[4ptOyXJO}e\nBlJbT4mˮ4,2n~AB̾dA|YmM-݃1Tןv%*=?Uv-T'/7]3R0AM;zԇ{ӳ }e[huLJ%v+Lꊜ!P>!Tq !bo$amL-VFT+RKgOu, +2S ?Y'Ͱ;iy.L;vS>PnJ N:RLš/P h"pt,/s}L;ȸ.bAaDWuY>ؙoC2{svUVpYxKsfzfDo[{/^ML@* cߛe8]8wm{nj`ƭӝXq)?NݹR]R-pLe" s' R bbǯ>ip9t]GorZ!TEa)6{JS/VF0E4I*DžQ)/"~e'$*2 +0U$^+pnscp<-- dqqpmMiR!Eh{Ygts) B MU{qφQCf1Rf{DM1|EVG$B6:*p6~ Km7oiFzQ?#gqUU'kZ5o8K^4cumf֫|E xQZ cJOߪ^잗yS3ˣ M7QnPK7aq#D e9CXiP:\\\-G~NrC<Н7l8P+TtMGuZyx\ {D(Е*.1-SK;*EAŔ(9A΢XnjY  +2CenS +"%3YY0CsW<^S$v@J$R=mj_s*3}zb%sӼz9G#鶖3G/J 8É,$~Ui$ԠoAU r UBP@ x}wvN|pEh+,p=/8۩w!(ݝ͍rN<;U,q|[48)#SVIWW̭? $ +@bO.ow77#JI$'cˈS {`ͻjPS͆iXf<z;mqBڄ0ޓ ! F㚑`ty/4qk\4tuDo~KaP +r]=OPlwηM<YH&5I ӳ.PbJeW!MRm4Z͠J%_#'MQkv}$ +r@m&ў 6t)bptkHQLwme\24PIY UmE xPj[Yq +tqK_/m@ߚJ C VGg݆%z0h-,ruJFP`YDo]q3#ROf,U^7' ZrvO g?driiPҋ"5]ѭZިM|V UE(ZLu¯zkJ`I0'9?T 7F탇J-HԷyDhLFcO# ÞGNQO㇢^>o}/<"A7T}:}J>EQoW*4#]ly͹:{Y(.sUL7zC`# +PTBt~~ߴsKXub3ǾVct dxe%;E*67_2fRX91EWSu|$(~$ +QE<ߑmVI^au|`1ʬi3rA#֬41!LOOFϧE +f>[xyUV=ކ7W(9?ClΥ,h4BZ{H]5U/54:$W D횗 W: X%&& nN\xz{0'ZquUW!4ڇ4,c-t +BkMp21V^V +&ߕHzz S)@j }?=4̀^OGծZ1⎋aNڑe#BjCObX2wdƅw RQrdg _'Հ뫆|zY1Vdd`m׃3܃yAl_d߀RIQ-"ͧG|T3qJ]d L`Eƀ[-y;d| )g(PyP@u3&lC6a,Vwq2~4}^}8=WVe/ ੟q[ 3ZG͉czbZvW3xTJ<.S7L`Zv>5UL'ˬ#IB~v\wڃJ#诐t(Z9 N1)?$$q/?o@/Q seF^Q+HSvJlL־Riǟ"BUf)=TڕH]ҮrSJ9Җ՝_23uC43Z4yg8|bJET-p +r,D<~dt|ƏSqčx;E St۬`3mއYS_մ;^_^p' mL m MY +endstream +endobj +38 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-251 -250 1009 969] +/FontName/SOTTXL+CMR10 +/ItalicAngle 0 +/StemV 69 +/FontFile 37 0 R +/Flags 4 +>> +endobj +37 0 obj +<< +/Filter[/FlateDecode] +/Length1 720 +/Length2 15276 +/Length3 533 +/Length 15833 +>> +stream +xcp/]vqb۶m۶m+Ίm۶m'+<ݧλϗ]۩5W_cΪn2"eZA{#S1{;ZF:F.#ALNŔ 35gCwt4pP +SK5u46XcblhP74umlJzdlfjB04v[JLP +' ^Lb66rW%upu1uڛ:wdMM,]m{UX🔥yS;O@,!CeOQEKi@2#Lbhgbd?+7-+#?TY:JX95vur2sN+6?0ʊW UAeA<6qm>uϣ0>d(g>~8h2}y.$7'B`^Y3Y>sa mj|bmw嫥 -@|vtJ+ !wy7; +r&0juvI9Ӆ -'"LGҳW|N#&X3 kL'n,/S(#7@;+6+.imX&wlQ7%gߕ|%Ti=Ɣ-]-87I:PAW'tk,f⣁Ա Pg&lx~I բKgaA0/K fƴnxDvf3'1J0cJ`C=(C.r}L.: R]y `/_~AX%X\46|ݺq\XlWl "{-LrcDQ\Y'tcz%m!cHd褗ѨX&ylFE)a /u *D@z}? g8 R:XdC/9ՠ '2q9֫&D.ڰfttE2;3F0kqY{V;M /|Hu1ا/Db y2 9Y+[.uUm[&jCo⥴/)o=tA }M1|w1qah`0˛a^~vjW5&Jj S GA"(vrujt0IܐY7Gƾ+^.+5 ٍ⯑dW6UjKIfIQbXY+Q>Mb.W!2RA,o)_4 ˓D1!(0E1~Vt4ȳk'y;u=h ViNZ1bJɑ@*5#*2nb[Aћz.KfM( %b 8nj*ޓDx>B;,ex_Ңy'^3Rz͒*x{Q āp]X/vW|i>2em=e*GaKB_2HA'!ղH tgv/^GUeSDo]ZM5) +הߣ!otF3fe9'ى2 +/m&4CP@V?OvD& )!kg:rYZ˸^e =JoY\¯ -EpޟL OqOJd1]/fnw gX zVR +I/ڱ_a>&[03> ,ZAjVPBɨ;cDMx$ +EL&/qI$ =s)S=ST0d-!dT$gezPy=hƤ>w^6ʖ,"gT +MD$+p98O!hn?oO0'eRV/cΦFݲ^=\1!3dShi |6:G>CtMlee÷&^#c9f2c mY\2U ΐpvn28XsI'W`)AEY\vWAmXEE<$$C?ܮ+sQURU6ܥ}f^HE/bųKE r7618!*('śznPtM q Ef ^fs + J}s]PpZ #,GB$&Ie I[lJQ J}")ϗ`zf2vwHАrPi+?o5_kҺ+yKeo1qu-բYD?&y?3_ukM&KάP->h# 1'O= '?{̨ /;)_OZnumݖs YKC3 7kj)Cldչ :Hk BdFEtYVnti0QtCy 39D/4F;tC[!#|_mWu +YŹ9vb<{_@k"xxDԜu#\i;rtw-%o34d z)&zuP5KcݱőlwR_Cp_eCp} 0~3IJڼBUy9~i^|TDS7kriG68D'xr9'wAoV*9nsvB^ +nfSj@tyTX%@8:=ϰ51܎ÏaA} +l6!5E6PWNk#C;KРqC5\wϰجj . ߯R"4 +\[aMތ%ݞ=(W[H@+-n맹DtkJd7߱ܦU1lIuƸӣww'u74gD%}Gl7af,ovQ!i0Y5{!3{4-Lx+(ji6*.֦P ,F<^s>F{%~_"sq: O<RLƅ#wcW&} Eq&tqa=מX&#} +NγBs +=w_ZiD3YhTvR%D^MM%|23ܙ,m}Y'K۶T~|A)L-$"cLEN x=( _WX7#Bje+@Db#I,ePEi0'A@d d^-ωN>aFl`@Hx^a3Y? [G*% 3/8e/|n)r#IL0sëT1n} v.~'HCr:3 2pS5/l+nrv,0Yv$<93ܽoׅD.wEF4REY A"]s/фЎ_Di;~QQ>*_cҿOPr?ͨݜKaP{cٲPbLD9^SJIPʭv ߪ}KcպpMKL1gj0in-BnP͸b*sgqfުڞrkdMʹoIB& +D-KFL`Z\?4? wdîX &7wXtG#C-q`m*)s=I63POdIo?([Эmc{1*gсsz{R/<<nC'~#o5KQ%ZK!n08 T:JWnSkHU8oVLC@K>(֟X1jM-U\o3WSGRpM7SWGܮ2fC^ K(V$YKRre<Is 36ja_ b 5BjkJ8nȢ٪^Ѽ\Þj[pXȚ#{-0Rm$k?R.['=^Aw +6,q^Ci^(97V9Ӵ3mӜ.khIp2r∧onH0u9/26 tB`mSoN/Ү?%9>ҪkVܚmWWnLOQ~lN5n7Tǐ1+ӡfJv5 G vNY<%A7p:4~*Hх'=[cO+U:އԯ%F3:,r!ε H\:ܞxHo6l@NtӾ +de)ɠ!=Ov9osfe 3pT)EN r'6&Xnw+N|UYrQ K?g *+Ro +"V]Ql]C zo ޗf\h&CP@B0 Cz+KC:%)MofImx3$]9lDqu/O"ZV0 NY! +gr+xUYwB |9_LgаMnԤ~~K4lB1ZkӍ)ϑ\䬌VY{?k2RjҤ~b%Er`T +Jh^d>ueR7%":V#9]bfH.;Dbp+>೗1 ]*Z7qn{*0tT~ #/+8O` d|Kk 7ӎh2׵QEՇE՞ɷwhE9ւ_²%Owz2(NZˆ#F0d݊TV׸̏`Cw+)9ּ8zNtGҝ_h[9ܐCP?#:ЂqX/R"$3ը +ZE0Ҋ7܈SFw#[3h +R;\d*" P(xHڨ+?uV",q7/vU0o0$p .u,H* VJ҉%{GJ?qBѓQh%a2C|a{eg`% $24_|!B؅#./kd)1:",CSГJXpB ^&.9~>Ukϧٮm}T0MkYIQܷ+)uACF H*_5@$*]am0oJNizE^/2&~s[@%%q|LH(|%.QdrZXim""՞'9 U4^:p7eNigksYW`uhPD((bk"JkR+JX=Jp+ebԟΆJw|ZzeA 5֝fB6]|}@#3d, +NHp&ɢ +H -2l]Hp$Kmg'aW ͘3SkS:MK<΂)\Φ^gy?dàe%gH'9ض\-@{]tw ZGd*/ +mb][Y$UTxl1r>*$6C$D?4 [hwsz̼$LI~BrΚ$J ?pTYcT6CoQpj/H7:y/jԔ+j.Vf)cAF&| -}#V3;͒*Xbg7vB+tܪ/'*Oَ˲FxEo8%J} ]V+': %" I :'8-)oi{0A[P'-%{$SJimL 8mtג0q&Z<0g)e$Srg@2nŧfiFgZ 715 -?X*~+˿DwEv?{U ׍,5VF}:s}s}L=n$ +0Dq5ğ8a6`v5 UV [߾ɡ61FRE6@`R_֧8&4 +SAWm_?[Piiz\ q_^?S,ra,euS1qJ(qD<vwD(ݏ] G(%`QP9bL=a`c|=6p\䩙a43&'%ul=g;hvy7B}mƉ}΂ 3H mZ:NYc(`S[ a!Z:uR#A~@́;Ң +`}sa¶,t#(@,[ҩZU_Ҳב:mF3lB}p_YYqKJٍm +%Fh6QUB0$Tq`"Eh("% wFg'd$GqK\ e2K)3ONJ|kb'\=MHNzc&kMu҄{P*0^y/LE;/$3K4نl1z|kW>8nXٮh4ފuq7{gl?}CNO-gf& "ÒwAAS;w%C/#h^ R؁JS/$wq8R*DܝDN&gf4A?yЇX%4_* a\i#mE376pm q,X}3ມc>QRsy"<Ϸ"-?]bmbR7.qaURě3fQZ-}ѮͦMnf y ~,odt|w%U-+rP':%Cz [Cncq5zd{O"[C/틲Mmn>5_I\r %zt%U,f7!ZT~ih Y<53كBp쯩Grnj)îW\~J=&R!F)3xz!d>H}ckH;ύ{zƉLfH= yT;>A)J:{+lS<Z&t]倚X_Fds .H/Ʋ/k 7+ o}WUYCҰ)+i>ogDp!T4> o标H~ԡ"l/Ao z  b%2CMxDK#j,n6w6ng(ʢiC}sB߾R6\ooQ= U?xG.^t]pb5񞡶3+䭋":fV.x+pG"'I(TN8i%C ry|F+ugp_M1^*Y9gb]g-sdg1kevS+-EQ#,ΝlY"HG=4p zU[{!i@Z)7ZSkY4VҒ_E F{K}YJs <J^?NLiXH<k};$S6hܝ Pd^ߵ %?ѐ]QakJ1$jFkRBFHc-藼GB4"}A\> +endobj +40 0 obj +<< +/Filter[/FlateDecode] +/Length1 720 +/Length2 751 +/Length3 533 +/Length 1267 +>> +stream +xSU uLOJu+53Rp 4S03RUu.JM,sI,IR04Tp,MW04U002226RUp/,L(Qp2WpM-LNSM,HZRRZZTeh\ǥrg^Z9D8&UZT tН +@WT*qmKdgaqn99~ A!S U[PZZZ4<6Ԕ\tYϒĜdǼT]C=cSDf[fEjJ@fIrBZbNq*X<5/);D#/Wɀ̼ʂTj0RQfB!P!Xh%d+$$0_Qkkib`hld`naV.4/4E ,\ZTWN @i0JMHM=G41^GVk—Ww8ws,M~&6M=w3ܓizan5gα6w."?lQI;iaz˰8=ٗc/–8XsýZGKl8n.zAmjQY0XuuC,U{.YGq'^KQx`5,V)ij:91Uz8wlSBAO},F@+dz Ig߅sDEx\w`F<4 +_0^ +mB?=jiy_?/emuVs +sI+".ճZdaIk4VAZQlHm-m + )?>})snevf;5I:&Vj_JMwvRjͯhP)['M:g_71[GgI ',*7+y}i+xܭ8?W)yZ/ ։M*lL9@:o8#xdIm_9u'~8M8X1_&joƴ 'vH7s86ٶ [zz7,QSJ>]ϣoO> +endobj +43 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 6440 +/Length3 533 +/Length 6989 +>> +stream +xUT{q޸[pw{@8A . 5x` d}s}9q^j9kj1B\a<-}1?3'*a 8?@ b({B`6\9'tha?! 3 +r^C >0?? {+_Hjvn`oI>O?\??`7Wgbū46Õ.Q.Pg{ -70߭Ɛд `˿j03$j ӂz)C `]( :{AC\gl#+iiqCtPWexB|<||=YYJ 70 +t=Ln~܂"n? '{ ]5E0?T oOO+%A@X9I\4l~.0O.buf +_Nc;,9FE8\ƽN&>XK2ڪߟ+)x/Yf3$ޞO捜V|{ =Epp +ڌ{t[^hAW#3#،k0'+YnÐ&U ;RӖ߂Y$2ˊ̣H(hP,أRNk$=k@}pW3R0v'@SIJD$Т(q-5 ?8@uʥ8~v$hokfҶ@D6߅nǃӦ/kx7w׾眦F$#'{qlZ/K(0_Sd+m1uc0HGN.MQhY 룊/ƏKz+8 D9*5?8rVT9/kNeۿC%kDƸ؍g! -Y85jd7zVN_}߯kG[VO֌,YыnY ۇX:+\1Z䱰1l檦Dd()@LI2O A%֏ k]{V /l( #e9}l-ޝ]y[PlGkBո6bxJTӸJ݆!RKc /ib +c*$& c6|Zۏ*}B'm22$ W(vd3L&&9:ǃ$vDY"; wqə_UXU‰ Zͣ,,O䦏HAޢI}l_o7f@^8h狑bBh'_ڮIuUJ풏;':91 9b-5#JzlSo\}LslT+T*DO0#"Hȓ}:B=8k1$}wu$f=f$Gv-(}Wf^,׎d+H|Zҿn]\~\mqA=TNkf 3'.&sqGy j2ͧc}Gvi}E6E7G;ޘ$ jwG^%NEןco쌘hlzx@ 5>G3lIA2rH M%j'pep CW +#c\&q4"|2VV~NZ luE*>.uY}Vᡠ`cbQ\I;aIGoQԛKs(;< sT-%N-u5!Heyۦ;'%s +RnbO2;׾#Ol(|>Cl㞭oQvzB5O)W{E?H\CyH}Tw(3nNE豽}WlACP\f8g4G!ޙԊ6B\ -aP,M/X+7NTo\#Z"Yic: G#Ž8;ωJ=綂#/_ Qb)cɞSeItlLb_d Kz"ڱAڒ+34#F R$k`VPXb˒8ڔ~6Y{UM +Fw4CrhEp&qN#˜n{J̌{KT־a=:nFKD[TY9!-5" 4XW(g퍟3bÌ*Ix5ྍ\Z@gpv:h CʛD?S=ż}mQ9Ci:;#&n <)fˉƴnKtҗw%vAIFEǧiD!tgBw۳.LHf1 e\2M}u@ƖZ2FࣀZunp?62YC]x-ow{iPK.{yXOXɹsl'cVy Ӧ)43:¶uYRQo0w Y} /,fJ8v-\bQAGpM4J/P"fqXIi++6+ iJŚ&V&|Ɏt3HEl3rT;^z5ٹq׫1XЇ_lmh?#F-^lW(u1 |J ?bV}k/VFp#yi2¶k`LIԚ!jXμψᔽ|(9]W,48$igLpMC w;p_4 ۼ2Ζ޾4K+;\dj "Ƃie1{Ԯgc@<- my;AO>vTzb%娓WP$M cC2{x-<#q*BM]JGl/MpAo5/T +!n>e  +M䏶36cB$q~ Nbq>XS|dm*luЩDg-qkt]ZAQۤ.o'o29'ݕe"/]Hs>B#$g~>.OUf.!㻰}iY/45$RA!\vt@D Hgt|}_6t M(GH^SwO7:*r} #udj'̏Ҍ:ݎ|iiqqzwol϶X,:xjxeewqq&S7%쨿m=4Xߡwg +49+̬ax& +WOaHtVG.+q7 !H?1w%^vq?u{ʦk-͡&}FIӻ5W_7I6oδcZ"Iɏ-;ċ uj?eX((ij W; pQ}4*bґG^aޑ$3dg#P$&pㄸ}t^>yϴ6&(qɝѷzmAmħyΩh~LPHa7S^P}BS= ZLJ$LRU"}+\7rއ9|2aa9AfVW*S\ںogU|9äb̑_x,1|l\qmȑ1RfB4 +5M.a^U {[WBu! Ў^jJaKҋ5ʆ2 wd.>1;rC27>bDgFbLyE}@,% Ttdc]֖fqG7v^-LLWX-+Bh/\ZuCc螗;!5V)wJ{q+WFG'qI-e"JL 6_|$"k4=Rl(}ؠ]K{sR#!X+FC,(G- + ^B @g e2"z@[v% +:]hƼg3Qa':,fmb}?jUnNc^x0;\ֳ1dà4x0)Vgxwnmҿgj8wIr$Ibb<Su*k,Dc/ὸS0;k c;;obf6<d%9Y#5~9h>:)N,؝~IiB$]V& N"Wϳod8*d*F27o4ϧ$ 5id`z5џ!Tt#0۩STƀbno"BoS˥{iooxeh.~DdծrҚ{>:bkH(%ǡ߾veC"YB8cOK|͇֔ E J Cz!S}<3AΎxҌz\m'` ЀE|\ WUrU\b/K/% RJ5"?l_mWG$}wĵWiK0ϒ#`qˀnQ"GbaY S vJȷa }GN){JѮ]_LȩERX Oiߒ 12+[(_T^,rF\<^m1*G1Wcœvw2ټ -^_+`Wm U.V}`-y68 5us:{PnR\u2el.{Bb65rVDULkNůG "p@=!q.qW0K.vxS~ Hk ߷yu` +w[=(Zc;8+7iQ$&Hا@M!z(s8ԈQjmZ Vc=5 <.ǭ+j{S "rkߌfohIH mlf<_ԴDzi5w +bX2vͤl!]Dtmwϴ^If?)zFǷKnυ#H|bt[m@[xlCݯsR-[ ڋ@]/z 5ϟnx!yL!>]: {ʚ6ݿP7Ipl7:i78V^bFhh/D􄹹=J +endstream +endobj +53 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-27 -250 1122 750] +/FontName/YSHDRQ+CMR7 +/ItalicAngle 0 +/StemV 79 +/FontFile 52 0 R +/Flags 4 +>> +endobj +52 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 1325 +/Length3 533 +/Length 1856 +>> +stream +xi8\iE4QإTEط)SI:ʡ)U%XHPi 3֔},%!-ֈ$6$e +k59<>m ,H hT1fֶxD: @#[& 0FHS9 ip"0{-`KO0xFHdG#@ ed2KFHh!"0 QaF[H.``&2?K =B8u%F%" 3r V,PwbnxV`LQN3 Ј z +AÀDI٭0d`K%Aӂ"h O B0m#qwѰxdeޮáCр@ +׻rhDJp <mΎ} 00F .0C!bx +a. +@Pt:Hel_~?`:  `7=GO/=쇟=/ZWy2/Ap0491 4$vΟS0WZYJz]ƗќigFށiM~_ȼ ?i6l?k&7w N|;yWMwrҿR%J}jOWaURL'm NO/5KkI²\ϥʾeSON]_}sQmggk\Ņcp؊_e ,xw%'ܵiܛQ9k3x)Nʑ6<1 r! +ɶSx*qOh2|/|jUK=?>9=׽?KEɒFg)ྙ.GN'jT- qŸ࿤&].b\;6L)z?Z٩(gtϖHT-x5a:lmLl+=t}]'|ݓ72P7TJdY8C<9on_6>] \EHX>%lZl|x!p*?z~zkFv\h0OY}ERʰ+#Ec +|< )ܥ],颤-g+S$SOjrtz'YoMuvG].ёmj"!*i-tBy* sۑlgeX[q72uwc(b9 ӴС-ߍasOZ~nxbEtaܴ iiy[O_%Up߈bd㚥LRqvm-\Mj+{Qh~!2;+Sihƚٌhޏqä3$|-6_xaI=,@ZVRɴr{oJǜ>o t} pQjĹյؿև5LHVH(1̗6%> +endobj +55 0 obj +<< +/Filter[/FlateDecode] +/Length1 719 +/Length2 13288 +/Length3 533 +/Length 13845 +>> +stream +xUT%֥@wwwwwgqwwO!%=qunz]Xs͘+b$j "掦@IGWF^: 3YBhj n +D@VN 3/;?@lmi + bt63q(Z 139Y];;q]@sF+hi/, Gnn]Phzh3\N_7G{+htvOnٕq56qKv+[Y\݀M$$B?uM\ս@3_,w|=z ?jf5Wsg)T> V6 i8X;elVܜy- 4CTSQ^f6/ +X?lKz#lK΁ltrk"@!8s"aޏLf{,9ZQX n5=Q>ݦ9 ԃGê@٪D,LԞpWVk!J22)n>)oĝ*Df#I)rqU9 zCOb(ԍޑ0H"<9 R<̟^ӽk 7XpUp&b^!R#Q>Z^ +bℊwͅ`&8ѹE86U3!d'd_#9$-0/fO(vq!3MȒ(5<x'Z/b?< /<̢~MZ6=gz4",/WZ)LRlA >BY>,>  +^<UUhʨdq7Yјg/biH\~1;6-p),n2%`ESֈlAcM1=zx*;nw6,rEL`P% W+VI&7J a{"׷Z:҈kWwnM;L:r)O%xN7ٟLK3<UzG7rkuX2 r\fb+T1y/`2-rak +6!4L(􏮕K^,~G4 l6|n}d}Nbg,UœQ0S. +NąT{ 5kCP29E{9s{]H4t9]Ƹ؝״v-:reIC{h/&_je‰?.)dղ)CIJ^ ۫ +P;`'x M 5P3TfΏ3K|Ѕͩ윲+^2RTޘcbv6{|-IJц}m>+*u@c\$(rU8,Q:BPNIh}E!AJ>P|hW@HEpeJNkRɨa~1֋IϟL2r2[ĖgnB**jvϔ/ B\".cBT x+cL5'[מh#Y+a~!YKf,]>^&'D1q "Дo_Ĉtf&Iҵv?f3\75MaMh۴\ NQW O?)@9yۿ̑ysQNd|R*H m^DめjNܘ|{Hb~| x)tnv#<.o CcC3;$/)S45]n1u%~G#3nP|.QIm!?_⣜EF o6P+b Q_Yױ́Ugn`N{b:{4)6p +:eziSܷخoUTܷX?Eٚ.))ܔ |%7tlOB{6A^ ҡ{ϩՋ(7 +-)߶ܥ>D0\u2fY~C7ULC =jL~(1 )(lƠ݇_tƩ0pu}x1Sp a; Foee'2+}(7 /8.ESyIsI.mm +i349uDd`GC~ ıxyӱgC.f{¹ ~-Gjê + Y$SM)Y*%D\0˵/ړXH4$M2BY.Tcq4*]'3M358etԲ#XfnnM*G XGX8(ſ<8Nޱ/~brEs!f^D>T_F Ԋ}y橀Q 0$:pIN`$̗&KeMF5@xOepUۛ#^od~tr.p&:!z:)۟1ܞ8z0MN+1a^W.(z6.ލn&C`?$@/J{ +0ʀId[61H,I!y\g"*َK*,'5׃gdV`dkBy=bk:-m .F{T{Q[-Ѵ6ͼe9Ab[rAZ\ 4xOpTNW'~Kk NJ5tt"VRho ~ +F@ ]ҧؠ屨yho?n`="zPS,V|Ma}}9t9d&YdNavG̾+y2$#{X_udېMQ gw[+am~GKNGek)* шWSN!!!I|9Ȓx2Juf\Ӛo 2{ +E7Ӊ9)Ns\˜ahkl::katR$j|Aʤe +%Jp|;!Ii2DXz\)8^3LOK)0?Z4P[=iqoܾ +om#+ S޼|qP]^#GZ'Cxcok5GCûrPrU}3P/cա梀ܰn d׀NeE +]v th}<|VɎ&5툓*"|;rF'tn~{%g몘:n~%|6m]h6N+Jninw|Zj 0IA+d3.7LTڻ@Yhel`;K'Ӯ{21uD}EdKԞˠa'j'?G3ZoP6ZC tZJS.<wGWw;Dgo\-rytf +^¤IpD~g[3ݕ +8kO|>>WJ6pW-FN|SJ3}4e)ΧሧG=XF&$ӶF0x3U QR5ᯡ;+c0|uI#.͢1ܧ0;:v Xy+ÏdxpQFs>NXUkp/IҪUc-#,x]oD(I+v財>i16unh&`߆2c鲛Iъݒ\O4#qFy:h:=]Ռ*GY;6R/R}U| xJ7a׋0#Y'ja/6AdS2Кv6uxE ;/O$DMDƱC= Z7 Q2A CUt6{P04G/gm 8cQ`UUd]Yʞϟ?F2yC"p/T-sA_52';`mt=]+dz~εR1fԮ= +~mԖEb=RA#{|{wNfo͡ y.`ޯ#paYN㡏ԝ!?@G*pڪ_@m}- ([3pu/ +ޱ1 b]ݤ%āR$z5meߤ)1kKyX۸7dBxS}^TG|Η蓴DV=򽢭fX~ԝ>wݹ~UvߤEWs# y]O%#9Τ˝{ />P#,; N0cB!Q=é~bB<|#)ظ, WZCITh15-jQYtQ7wQL`ң gU)@kRt=@~x(.MYpX[1xsj#Qkj'(\`[]jJ"?+sbGml O8jYl4<ik&PoφPAgݰ0?:z(PdbU"rR@eb] ܖz~09:c0ca?fARc O,5 +q&衾#KIk%ۊTcIs]9soe[AMi +5E.Pfm=|C<%~"w5UD9FOU=aFEMvm=B?ۼFN 9LQ{@0ht]}r@/ů{Ol|%=^e*`~SETܷY,IΎ3 YmIi;ivC4WJDM,Y܄\ˌ4͇ێyܳ59s6QtĪKQmEj0yevQ牊5\0UJyCDk;\3?[VÇ}cjs/_ܡ S)sx4$lo}1."Wrj6qɢ(JS5s M@do=;?eIQ~-as |G,2'mmG[u#Z<`7V׳~5~ضW9YflA/W9^N nZ̤ 6`I~'6e5yBЄd>jp2?Kb^{Wn.ypnho"cTl: q] ; +H$1٤CUhF取ao-x$N/%[k8ҫ6Qp?P;WzsSa?<g&0q/gyD#$;mWvp'hNc~ICd af<}zfU+J,mэ6[d57xX[.M,㏹} +[>|.@A99zMR%Oa|hƾ|U hu6@aE<"ϓB)]o2; M)Y1\o` fĎz`bfiObǯr:UrGެ3|eu.[1I0`q4JpHV/kuO26dn#ryU6(yɠjvZR m@YAݍOl{ +`1xT%WĮbcT&/_a+5H:Tb1+<qvd$AC~a.>X-f⏄FDs1-řN[lkl5FТ3.&@sf6b.fjp: 9؂S /;`-Hc q/MYIN`(xnX PC|Ŏ>`eQ:g /&~]WΙS 9X{9u04y98Aͼk0 /}01BSgg0ka+_ߕ6kVmߖytP TJ3ƔѴ42}p(cOfn 2 , X =*!Л8.UI6ۭd*D#倽um?5 n_);X~mM֡9ө2Mlu6 [:LYV'ģx㰺!iX(X;* '"p*6"~L0'wBрRjOWNKMw۞Sƌ, Ϻu>6]TΕqJ*tqV+eTh!-}wt] FTiF恐\MpLޫ!e(hAvdiZ +Voo1`%[hrA_uIXLBokGCTbRfO̻)vXh +%/ZNB|%,v}3hSp?#,AiorjP͑ Is]Cс4)q\h +K4lp%ڮz21; k.j_=/B>(D2:8eiHy.rorca`eyT&T(-Vڮ$݌ H=~DPk3)#dXa>H*J~-)^$l&HZ ?)y e+)!mMd4idwlr8OѿC7"K3֑a*!a#KbO*b*_ٷ:~YЄ)NpcY=5Sft3TIy5> &ʻӝ>owe9,X]CDzS0*}g uM&*ݱ3VS!LoVVQur_o1&CLrKۅVXGR;t! ( qt7岬mD)k|JѢ 屨yKR*}).ʈЧǘG^f>j9bĄ%}I/tڕdư2|[Ksx+&0NW|_PPfij֋Lvl-k6#K~> =G 7a'n5sY˸#RJvMD7GS# ͉|18bu7ן*%{$-ݸ] +ͭ<*qxw?9DȸRYQHCCjM`F/ Mwx'E +=ij8FOn}YRnQ6s8cn4nu('p +R`'9D7tӆUϲKښJpJ C1RV4e_ eeW ԅq{9ꩉ|V*fF :!vd*Dk(Ž?FW@RMY\Ws?>Yf祍zaQ\eMb)@Y<* &]Dq CBtjx:yFW)!K`Тu%O썍tSuڇ[)9^r)kd- _׎LG^2A@aKͨÏ 2$ű2 =-΁ {bNWd皒c nns.dtޝ=f%HѴ˱Nu~I.<=jK~#&xzs +qjTf/5 +ڑj/+eE 3߬#ӌthV[iOMmqze+;7/F*YI4GqQg=qG9Sa|ů  +->ǡMM})VRfF sضBTC8kR`zq:1:ci: ËXIdI P |K["_KQY~eez6?&t&a%=By$DV}cZ 0XH 3y87\\}m۝? +N?Yqp905 N,J)ΣwNƶΆ9Xgs ~8NS +xiwMvx*dSgU@q`y99!_R*"n46C~Y%#%*f٦ܺvJmJN\ٱ5G;:Fi}kYUdcv~$xݓiس()aNvU,?M<8*>I&.[Yړ Mz_$aG7b"ϑ#kyHSɷ\~23 LR5ecjbK#RWJ&bWh݌0e \3 =}QA> t {~|X!/9JA#U'ebM3ȯn +ڄ&;a,o7ay#TLnX]b!L]:,'[ |!XZOD^ [GrvlW*|BwvhX6WWwy_ bUVC|ӒٰǞqѥYS"C߂/LQ%+gʒYҹHDqsPׇٻ>m;V, KUeZFx#2R re Y~~} 3$Qň:O14~ZOyZu`ޞVnCG(z3vu?/JOVaM G3j13zZi+m϶4 3 ȋpnԈ̇iD\tc JbÉ6EI;ĺϬdň&}yE!$B5k{śJ=' +ڶw_ :FU@@,$tMjT e5P;Qb/ȃI + /FvÝYt6K#7SܻH!%DrLVxe@2ܐCi%x +3Qi +M? +LUjf#Efͨ \0%ȡbe`+2QMmQ)7񆇝:z_` B&׎t Ko::9M*D6q=!EMiqT98>T}]g^ p6D~YVb 5BՍ@ Z5˼ 'Oڄ⮬@+ ym=+E K\Ĺ +-)Ca# aR 61p' Vq!(Yivt/j{2mvRօ +1Qy%*ʨv b=U:7A"Q.* L!|0(c*#IGN +Uנr N 4wq؅kA +ydko+AmJ˫ :M@IO>Þi^v8#۽qDdOI[ 3FNqQFpF&nIWYq>_vIV[Jd(Bp)l$vjh%YGJR_~ª1m?^ךÏ)5pNug =8̏5kKyb*4FT8aU3?<lPoM3sm9%ceD -~3o. ? s2_RdzTA5ח.Op7 A! `khhgu!{gy\nbXE_s9nS.Tu)V Z2ՏfxzRꬥǍtyxNe0lLJ:+/NhJ +rP7ٹh́^ #!B.Z#p~r&,i ml*lr,_8}i/Kv}}": ):gPP8]DWr;|ktVY$>d5ӐX{6'j;_C.ZWymN j R0<6 sEypD-:IoJ\Qmc,ɢm˓n)MCU4pp`Pu,2CaQZ7>"Hnh~㤳v?|gVVotv!Yձ;0.7^#-MƱ'x5R~ ++\Z(_1sw|`+kTiE)!cW%UARI{T5-uD@t}eDQs<<k5(9 ʸVNNWi[n:R +WwX["+lLO?-911x֗tgMCOB? Ғg5\QFe?Q4/m2ͬG@t2g.SdV'5@t=0=UU+._V( -&Wo3[O d',g~nV,4r Tjߛnye&1w..b&p̓;<2 "_/hDO"*bQzX/PT Qg6'D-1=R!8\u +QO5(fi}E UE'LVVl|*W0 @hS:.VU9 *"\=# 5a'RSoH̩TX+8+j&q\\X>i1Ov-5OH?(&hɾ fy 08:ڛ8" _"` +endstream +endobj +64 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-32 -250 1048 750] +/FontName/FQGAMG+CMMI10 +/ItalicAngle -14.04 +/StemV 72 +/FontFile 63 0 R +/Flags 68 +>> +endobj +63 0 obj +<< +/Filter[/FlateDecode] +/Length1 727 +/Length2 6670 +/Length3 533 +/Length 7232 +>> +stream +xUX\ݖ B +w 4\ ܝ@p}sswc|k^ m=n[Wk+ Dr* ^5//6 ptCPQ z|^aQA~QAall.0@h4  jE -]'j 65,+@i[/rpںa~[6h+z`լQ8puqB@=PߥFi@m\^UA@`62p{  +3 vD8 0O_y($?G8B +/_1?]pyyAvnC@LO*YYWn~>7+  BTE +"/"W +Gu|c;?MB}6ء~`uR<Fl\ra!{"D[3{>hd@>2Չ s\J2d6=˴XzLb0#ycBwE$v9L^֑u tW(82YpΏHZfQ{ d6ۍOfߜ5w~,8lS84ߵBsm-D 80d Ǎ;ĦLz>H}Ho}2T2JҖ&d#t*=Erы,ˀ -Sk[}yNL|#zl/b"͉m~6*iN`Zĸ/ToQK?%,wp*baUT GALfjĄ6߶)@0D8RTӍd^n0E5 n`zQL]od8t Bzv. gwL wQO@9o&~y!1mWͬu̜u|oUA'y=y+zπP LrO^*(XQHrtԼ3c(YfF ^1w3OOOHOɟ۬"{fF$uq|FsJ6J_ǥ#w>% +j柧L]tW8k2 Ňܦ6 l$懤ytHHNP86[$_OɆPP9`I?zCN +Db Im Q؊Y>PA%{ZNdzO9ZbZyy21Yd%ydHx0]jd.m}6 vΒ":QJ̥ ݼNƏp4tC%>ıU+&^fahQCpuK/DuoWWϭcK–#XP+CSTR h2u<é6<6žNQqmyݬ驃ʟ>UtH*يwe:usJfYmfE:}cC26.z̸_ЌAjhDއ3F T"/v?2Zgt?O}\(dFo(Es=sx;7wuw^_=1_8S~UWgyTՊ*X49!hU."G='N0Y'UjҲ(q-٠$^ԽV9׌/Z3I\ swTWY&ѬER\ KV/㻋eM:|aֈN&c&pPםKg8o(cc=ǥvVt<.dZY|S|_~*9˻*B?賯*gs%Cd>7~]nz~ԇ4TRB5f%>iWzf0:,ZQTLnO0Y(|`sN!(ͲBQWQdttVx"^(`f 'me=mߝ#FGiTP_͐w,>¢~ #T "h+qv(,ٿܞuB޼%嶲9qX3Qz"Y6>KNy[Z^5es{+YB';_5+=Qfb[g .+"H"MQV$=<[hJa yOqLyEVH3#0焍 +6O3wnQh?s[/`#>1+&!WXRfOꡗ^ȵ^ _ 8٤4(yE&RcP9;w:f8-OlD>af.{b$N<'ҢHDx?mK;m^B&}D^r{dL=ma)̼DDIf$r`BiS|bMUµۙ+Ò%!==EtxK$Cxء*qp5&{'bIE`3`(͙ɣςdr;vxW2!ÏjZV㦏{0ֈaێJbB6iQPNX5Ҳg7Q>1,ڏ$?|lyEgbO.#UⲢF5qL/Uf h}>]->\jH3#ST3?tRŻ'ĺKR5(!ۥH%LCf7 )=pUx글ɼo&Xwڋ-S:P +ZەEf~xVKh  k̓y1P#2JX"3v0'4>`6Lۍy=AZt/?xζ_.PYh3OhoX.>WaXKl#r9 PdqԐ<H;.ۍ]x>:!%@,K5#DX8v1ށƗAYK/? 9Wpd,n|NH;j͵T#E۽-3=KSOs~PPK1@YT+"0~O!ñ ?~$r-7evghl[nJ( +(ǟy +fmN=OcG3*l1Nl[a >h$措Œ8,n{V:gTc0 k52k̠ҏbo4puٙEIdޭM@2Յ6u쟵B'V?CXK 3!bSRO׏|i]-O3?5!ܸ"7ԠI}"J,u`:a㋎ר E}7ehǪeۡsJ5bDNKzhTty ,Gy™׍ը&ټ91r{%8C3GS?7Ȏb!}[EM)ӏL&Q_ށz0w4ʅ/aJՃrftҙ$c*|,D l^-]L0Q%}t@oB2<@YFg+?GTOa_ ;i]A[8{b~^rvInxl#w$Ck\$QGqێ 5< .o]ne'x93sisdndEK릤LLyQƚ1%*|&+v~.{W6ne☊z&w 1uE-™V?)' Rɹs/gܙ* +~Q)!2UV^<{ qЮPoWS'dr`Ig,|d}"C&V4M.M1J͠|8#$༰>+u<&9ekg_*8]4BC'ހ`5BH/*7[{%_xAt@ h!?xjuJ4k2ׅQ' oy,xoѾZOP|̜emJ ]W;cΧy%P2͋ˍ9K'_W]/7(I/䆏pډf* Ñ '@Wzo]Ѧ9ohbX5]ybN?#|/9 Ys٩:-̟B^/92S>UdGRsauR!. +v)'6pb:U8_>x4jgs!ԇb8ψCؒ.VKVt.'4V +v+TsK$g=(jV՗T;E] G_'YneLc,P3sj,M^X~ P-6*uy:mhJ8ȭv (lJx"u*E{04tZ8x@s)jT=T5RC5=S7ɛ:MKwgwy!' +daL0ݫ='JO> +endobj +66 0 obj +<< +/Filter[/FlateDecode] +/Length1 712 +/Length2 1158 +/Length3 533 +/Length 1688 +>> +stream +xYTwK$Vc" 2`Y$0BjA$ +$L&@P\EYj±"* -E\(K"eEj@@؀՞Ҿ3/s͝kig d*`r|T2`iD!>D..T!(uхNq ,X"GH aq9 >pX$$҆BO,!LNPμ"|!)FC @R`6(F3H^Hpz%2V4J\s5ňPP8[= ҲcΒ |LvLEP{_,08bBV. +L4񅰀D!J,8}`L RhVp.vlzxf諞F0MyQk±BPZ~uY# eiw΁] #DQ2CFP]fU E!]at (~n넮YIz6q݂[uÇpa>mRF"!ܹ=9iDٰOzޯ6fn)8YW&CW6^q~E0ξV+Cy$-.1PI.?77|ސpt0rSW 1Ccg#L0XX~A?^1i:`.೶o<#U(TdӉ"}O]olފ@I^Jdoo\a+Z*z0 6$k<3kuğyJ'H~)zŝ^Kr\rYүp!ŭMLIFk|~OKV~QGY"ދmaU*G/py*ΣZVJyK=CqyW]sժNx.y&.]gsW"% wӲPUlf:,q{gQK|{ږܮ8:r^ی)j<,Ԕ.-L^qW%<;g)w}`&]5/Lmy8di"^"fC*ɠTdҭJ],P\0dY爧#ITN:(dpd_tTF ʼn;7nP}ҝZjm==:{lhJk'\&YS􁆓u.Xz㑑ck +ڿwPkkNٓzH2;5=7ϫBJRvcw\kC_IcЍ'=5F\5nK`EL"8GouMdB?Kn\`}u\b8 ]xaSո;O'wTT, u.rk6gs-3)gm"/k&j*Jh`a4:kovQC7{V ȯAnM. ^C:6죙y焖O&2FpʪaQCvh"/,aLwF2ZNMOޅM<L#Yy?_Z|,RS+?yD]M92<4S<[UB϶51//⣘XGwl +endstream +endobj +75 0 obj +<< +/Type/FontDescriptor +/CapHeight 850 +/Ascent 850 +/Descent -200 +/FontBBox[-163 -250 1146 969] +/FontName/PPCPCC+CMTI10 +/ItalicAngle -14.04 +/StemV 68 +/FontFile 74 0 R +/Flags 68 +>> +endobj +74 0 obj +<< +/Filter[/FlateDecode] +/Length1 728 +/Length2 6322 +/Length3 533 +/Length 6881 +>> +stream +xeT\ݖq$@p Npw +*,VC;,{9ݣ?wwܽ5|\~{l mv)%H- QQpspqIc10ȸ, v.β0[H 3s sca1d\\}ll!fRN w;+ g#@ZXh wO ,A6vXRrv3 pw`8\C p?e[89KT] wKAS<^UX8YI98o93o5 Vk G0<w?!!#_oU ;g+_bn 0c3vsr9!@ w&'7q wHI%#W @yv\AVXښ̇K$\$fSȌP0K[qostG2XD6ѕ0HK>Ưn רez:/=ZH +RܤC]M:^&Lo.?YֵM1F}0w1^-<Ϫ6go{>1E u5fȓ2KV֡haРשv4Q#ƠZ33J<ղBdKa)ӨHF?\Z#؁}Ly:;=̟./XjY4AmUj#9_Rypѧ ]Uk(?p>8'p)P-BKA@#DI,g;_9quc7;f7e7ȩqr +GTʗ&gX(I);5Q@vh2Nu~NSDq9Iy{xvK{.B6d=}^p42(!$ a7q!prH>R30A$EDQinAhv\J;`PIްT3Q#^b y1N_zYOR3T"uZZ\zQ xC8JD #|J( <7jo6 JDFP_/-6)F/ͤ8ث332 *HҾ??lkJ\.~Rr3*9\.# bܒWoCnD$?Fs%_%UO +c琿]>q#9S?&0geCˬ_ ~"nI&ܓ\ +e[;]i&~},/6$<ft/"7^5uUI 'MLA5z]kKȢd>cj3pgjvVn~ʖuǩ;5čI}1]X=„n&̹+ǎ~Jxi:%٭{rh凙voYˣ֋4^+p0gRF8ߗU~6Bm䪲pmIKZ,/]I*#!w3o7A\LQV_Y%'D3S%A"à$Mf<+8kƜ2Y;1/ƗHsKu0k1U.^?X +-_ [(6sWS沩{ձFԳ6a)/6;$Hڛk;c2P|2l!;E>,`v =2#SܥI ZWVh{7j۷bfԙm0!'l}uɲCJÞ}y/2X +eN8kх&H!f8ffmXNɸr%*Avb#@ q)(݅Z63i +1fM S уES4k_LHh/F7'}uD}V9?i6'g/$KL O ]hEyjpȮ697wQ[*!pq"FDwsCu.И|xP`[ io&z;cOBd.>Wy#K?IyumRO0!uL8ib`ʀqcK4R]0(0Us:"Zhk,W|߱k2$\Vwe*'uK'(lQ(#m+cZlʰ,fv%mrӹ:o2SC6:33j὜^1؂JwSڍ ![uNDJqKg?vzLYf<#j!60xt 5vC0kI38_׬=+*-\w-! +qv kZDa\5E+\U tЉO< +T यՅ%UCIWK~S!bԏ51C^B L"Av2 ;`ڧ~ECpᝈr ܻ`+ VB7'M_I/\90ۮ|F\Amܚ$eUȧZK Zh5.?=!Y|37`-mGeilf8l<HPqD`= HQYYh&hO $rܾ2vZsQ|4;D)o2I y|L<2s,qdoCW5iL5Fm_&G*n֮vwGYaǑ~@h+sȧ"btځwm$r7yۚ(,r*S\EF^;釅 [. 5TN yU +c|boH \?"¸7_?mRWKhe <(8/>#"f=)GuSuH@[g y#?^ ɋ%lPw+ ¹jA%mS b +j-1ZA3r}HteOf*8 +tTfsY$lagǗ8ǫ.UZ l4E{Wh5%޵V6"gss(]K0~˂5@x1P}>jWdm /n^i\dwڸ"fI*OW{5 ̮|rN/Zvih)= I O[qNo(ilصT$ܶ1H?*0$'8MNP;م/B3}8)KLէTױ\VT>ؒ5Gձ$e.KI6v/Pd^8&ۅOcTke[CfkH׀#~+%QErn~0N/6yȁ~1?jdo³3$`ա_G!L +F'mnRJ[ׄwEV䉨BT'XB{*WG1 =S_D zw4^f-=Xuؚ>#IE @fs۳u۔B&aS{|?.Nj#:n 9+nDMC˛3p0;-v=1H6hD䳿`ς-;͓ؿx +Ƣ2qJyLSf]XP%]Fr?W'Lƛ7'sOW9lyw.AE| +J[+V?@]8VA]BMAWkgM +RMw!l'C[Hgk\ 3 i-G&JE`Fp}@Bn5Ƕ5M|.U"iGp#ҏaR}ȫwe}Hoek֕/g~AUW`(:DN_ZH[Hj|SћB2h)˝?gktWx#dG[g0( 2ږQ&LJ,̼H2PL<JZal +L\(v8 y2;=Vb%!C0 cB#Cuu&y%HMRQ_^}9ÍR(dtUab;@"| FdP0d`tn7Ȟܾo ,¯U`v|C#,U(f; T-sw&JlsM Yy:?2o'd*rOYh+z +E;twc_k)v}Qn\'hG\mt("RZY;ěV5ȐA9=ѯ;2?cwt/*+0==Har7B#ʔx;gX(Nn347;ҁ>A퉵YJSo,"A_AkA8kLX5WiD @N[dzD${Ndc^{:coa 6#F'XOu3zҲ>L.#P/,yeD8cS%W(fzqzeNL]'fGj[4&bJ랤kO]du7-Hn!oe4@; &:SZQE07JZK>ԵR' S `~c+"!#zA?ETsl075QY^ =^); 2/:M> +endobj +82 0 obj +<< +/Filter[/FlateDecode] +/Length1 720 +/Length2 3944 +/Length3 533 +/Length 4498 +>> +stream +xgXSۗ#% JD":H @B!tEA&;X%"M5týw3_o9_z{ko[& 0#\ eA*z*&*`XHãC4J˂22`d%ee@ +3pqłUpI p Ap'(dvBB 7 aB@  ! G J I%|r5%뿡g#I w  ǀ08O/:=8 ϮD8AP.H8H/ ᭎ X'W3 S`ܟK _mC(5 W?kԗ# A6"B""K?SC9a  EؿJ\2))ȣ3C!|Z K蟪Ga ;vF\;DwƸ,Vv(VSrkߜyKK4巫HhZFCITt@~ārvpstğ8qf^yLpۀF9k_g%y4AwQ/?lj6>=DX7x)Ǹ2`W*y_\Heђ ,#_Xꟍ bȤnmK"jWٚ۞ؾ勛fT}B@>t6`_XxZf֋;'s9 UDW]N-Ǩe bu~N +Żu<&bj3ԍz*5>*قe$c/p8F٫w+4ǐ`J|kJ \gR]Y 'YxѬi{v8'y@ԣaL߸P.ANvCx5{W O38>=%33>)"R9NKK|nSwvy7. F0&_ =$MC%]Lav0W\hd͑fu)k%z,|JUp݉& zҐ;GzFmdqq,[~ ԅ}+K%Js3*!tF"{CLPD_e\ ́_{-'>&wߝ%ͻ+Hz-+ɯ%;?U]>.zO-&]OJT\WQ:S.rMW +ųDn#.4m^4ɊP7VoG-1͆L4o6,ovI$pmeY? +ߘ|d9vɶL[iK7 3 $I$IM,ٱ#y'][X;hReO-~KJL~+Mm2Sro翷A@PM~(P+m*lo0cUSB/`g|D@_ A'IwKD`ڀx}ـԡ9'IAy;uvx} Xu3:qҽ+ֿ/̬vAZ0Agv𖐚g|Yj;l0wA`P,NK"70CfL<|^qiadK\8R[&6,'W5$3Oϗq6 +zHg7zߝmʦ qbRt10sR7ad=LdʲJޡD^Cڂ'\J^UxaGHI0Ky?jdži8; 2za9wΜ,\S)(9Kں[SWWhUciu"fheY=cjwgi:Kү 4PdY'dh6zEDt{ކd BW^XihhCʏ_"0dV8H-[]sdyИtʩ95*1 FM,)Rr&%Zz^,V+~eT ѓ'f[F|w 51ͣ!ͻCI9^Gkl2x+8BVݹd%Y|R!67: D)Fl$Pzi%P3\hk^Q=pN2Y-am 6B$(ľ~!}Cp .`o$҆j|/~ƣ Fs:\ W +Jw{b dV2=L;r\o[6mF@Zr$sHYɫs kI (T+~x\kLU*vqqDNV]%J=; +3:~3mnDu> HCoU~>.C:zG G1 HpZ+="$Rg +;MXA?6(+o,Kw+{[~a̼ZpΩRD]=k~Zܻ9ˁ7>Y-M.n,n>5򥽻iPE.͞, 2|Ù[05߸2iƤ_,XNko7y"Ӥـ&gkIfwf" vqc\ɵ"kg/mmO{_̶DRaʔÉd?1k,{G3R#/o\Mψp6kpKSzXЩj8 +yΒ`Z`N9AųN͗vO*LeF]d9V@h.t;Ռ;$DDfN{Ie% +&&>^Dg6 θڝy9='W(P:S^}^s 8u%{ w:J6[U%$7ŽED8s +c{g/+cDM"j풵G 6Pi"+1o||#`zZku{ fQ^a ޖmސ4B=7S"pDdoR7I`;Ytw(.1!#g|vс`C_\} .|nS;pYQ_NZWi@>E[Z9RdU|j=O4cpopv`> +endobj +157 0 obj +<< +/Filter[/FlateDecode] +/Length1 722 +/Length2 1384 +/Length3 533 +/Length 1918 +>> +stream +x}S&l3$4Bʥ@eYk%X9;jnA..zᢇ*;&|0QCP73p3hR\ٵ4` +$ +[wUw cv.* 5E*_Pr?4P'oQP;o촼|)~RnZi!H72ԡ_ss(fWE/5W!扉Vn+5.9pjbY=Q L48$*wo@ vƺjoۓ.>zt泫5ӟ'ò3>KZ _hOg$\;ľ>Ό*кkK(ڏ7zW7DV`v}D Zr0g3>=uhAϯ<$n0:+3#>Wl\Y*̖ixX=ҭ½}Y"~-vr|? (5ΥU+`Vh_q>eh:jrU"V)˰x'jEu?v:!B0:}P鈚hyˏU{ZqSm3*?O@g/ez /:߈Qpa٫ȣa +ﷺomsynp/fT +;CSޗ%N֤оRŭ>6;"o+>,GVvJm5Ke^#-hhiiJ ZXwB MEm%cz?q~^]2dȂBTe$ +YR>Ȏ}4<7i4-}c3-fNXmKr)AZe=j!ɐE1K^go5ۤ$ܭs;3,S'ky31֞]פ9OnKyy)5[8=2dq8h̺P@[ӽTl|> +endobj +160 0 obj +<< +/Filter[/FlateDecode] +/Length1 721 +/Length2 621 +/Length3 533 +/Length 1132 +>> +stream +xSU uLOJu+53Rp 4W03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp2WpM-LNSM,HZRRZZTeh\ǥrg^Z9D8&UZT tН +@WT*qmKdgaqn99~ A!S U[PZZZ4<6Ԕ\tYϒĜdǼT]C=cSDf[fEjJ@fIrBZbNq*X<5/);D%Kɀ̼ʂTj0RQfB!P!Xh%d+$$0_Q LC +FF +F +C2 KS=]L , ɥEEy%0 ԊdsD3ud&|9pU)|׉s77Rd(wirkSsk|^1=6Zsas_y2-3%^ Jړ}9_+l5_ ?ܛ%a{TĆ6ႮԦ,؉v3k02<[RZlez_ 6n? qܸs)_Ǵ3٩F&dL淖g2)D^c]Q,'$'Z㛾 l>uy;Mwָhl49"Kc.i>;MT!iPm`S Rjo?wªU My_g?uWzO16~6}f[ˑ+g3==_'vֳ2=XvjV=^_Vo3}(':=7wq]eϦY/\D)d7Ue!.oX<-)'T)<|ɛ_S 2ʿFUVD +ר€ĢĢl..z +endstream +endobj +1 0 obj +<< +/Creator( TeX output 2005.04.27:2303) +/Producer(dvipdfm 0.13.2c, Copyright \251 1998, by Mark A. Wicks) +/CreationDate(D:20050427230307+01'00') +>> +endobj +5 0 obj +<< +/Type/Page +/Resources 6 0 R +/Contents[46 0 R 4 0 R 47 0 R 48 0 R] +/Parent 185 0 R +>> +endobj +50 0 obj +<< +/Type/Page +/Resources 51 0 R +/Contents[46 0 R 4 0 R 58 0 R 48 0 R] +/Parent 186 0 R +>> +endobj +60 0 obj +<< +/Type/Page +/Resources 61 0 R +/Contents[46 0 R 4 0 R 69 0 R 48 0 R] +/Parent 186 0 R +>> +endobj +186 0 obj +<< +/Type/Pages +/Count 2 +/Kids[50 0 R 60 0 R] +/Parent 185 0 R +>> +endobj +71 0 obj +<< +/Type/Page +/Resources 72 0 R +/Contents[46 0 R 4 0 R 77 0 R 48 0 R] +/Parent 187 0 R +>> +endobj +79 0 obj +<< +/Type/Page +/Resources 80 0 R +/Contents[46 0 R 4 0 R 85 0 R 48 0 R] +/Parent 187 0 R +>> +endobj +187 0 obj +<< +/Type/Pages +/Count 2 +/Kids[71 0 R 79 0 R] +/Parent 185 0 R +>> +endobj +87 0 obj +<< +/Type/Page +/Resources 88 0 R +/Contents[46 0 R 4 0 R 89 0 R 48 0 R] +/Parent 188 0 R +>> +endobj +91 0 obj +<< +/Type/Page +/Resources 92 0 R +/Contents[46 0 R 4 0 R 93 0 R 48 0 R] +/Parent 188 0 R +>> +endobj +188 0 obj +<< +/Type/Pages +/Count 2 +/Kids[87 0 R 91 0 R] +/Parent 185 0 R +>> +endobj +185 0 obj +<< +/Type/Pages +/Count 7 +/Kids[5 0 R 186 0 R 187 0 R 188 0 R] +/Parent 3 0 R +>> +endobj +95 0 obj +<< +/Type/Page +/Resources 96 0 R +/Contents[46 0 R 4 0 R 97 0 R 48 0 R] +/Parent 189 0 R +>> +endobj +99 0 obj +<< +/Type/Page +/Resources 100 0 R +/Contents[46 0 R 4 0 R 101 0 R 48 0 R] +/Parent 190 0 R +>> +endobj +103 0 obj +<< +/Type/Page +/Resources 104 0 R +/Contents[46 0 R 4 0 R 105 0 R 48 0 R] +/Parent 190 0 R +>> +endobj +190 0 obj +<< +/Type/Pages +/Count 2 +/Kids[99 0 R 103 0 R] +/Parent 189 0 R +>> +endobj +107 0 obj +<< +/Type/Page +/Resources 108 0 R +/Contents[46 0 R 4 0 R 109 0 R 48 0 R] +/Parent 191 0 R +>> +endobj +111 0 obj +<< +/Type/Page +/Resources 112 0 R +/Contents[46 0 R 4 0 R 113 0 R 48 0 R] +/Parent 191 0 R +>> +endobj +191 0 obj +<< +/Type/Pages +/Count 2 +/Kids[107 0 R 111 0 R] +/Parent 189 0 R +>> +endobj +115 0 obj +<< +/Type/Page +/Resources 116 0 R +/Contents[46 0 R 4 0 R 117 0 R 48 0 R] +/Parent 192 0 R +>> +endobj +119 0 obj +<< +/Type/Page +/Resources 120 0 R +/Contents[46 0 R 4 0 R 121 0 R 48 0 R] +/Parent 192 0 R +>> +endobj +192 0 obj +<< +/Type/Pages +/Count 2 +/Kids[115 0 R 119 0 R] +/Parent 189 0 R +>> +endobj +189 0 obj +<< +/Type/Pages +/Count 7 +/Kids[95 0 R 190 0 R 191 0 R 192 0 R] +/Parent 3 0 R +>> +endobj +123 0 obj +<< +/Type/Page +/Resources 124 0 R +/Contents[46 0 R 4 0 R 125 0 R 48 0 R] +/Parent 193 0 R +>> +endobj +127 0 obj +<< +/Type/Page +/Resources 128 0 R +/Contents[46 0 R 4 0 R 129 0 R 48 0 R] +/Parent 194 0 R +>> +endobj +131 0 obj +<< +/Type/Page +/Resources 132 0 R +/Contents[46 0 R 4 0 R 133 0 R 48 0 R] +/Parent 194 0 R +>> +endobj +194 0 obj +<< +/Type/Pages +/Count 2 +/Kids[127 0 R 131 0 R] +/Parent 193 0 R +>> +endobj +135 0 obj +<< +/Type/Page +/Resources 136 0 R +/Contents[46 0 R 4 0 R 137 0 R 48 0 R] +/Parent 195 0 R +>> +endobj +139 0 obj +<< +/Type/Page +/Resources 140 0 R +/Contents[46 0 R 4 0 R 141 0 R 48 0 R] +/Parent 195 0 R +>> +endobj +195 0 obj +<< +/Type/Pages +/Count 2 +/Kids[135 0 R 139 0 R] +/Parent 193 0 R +>> +endobj +143 0 obj +<< +/Type/Page +/Resources 144 0 R +/Contents[46 0 R 4 0 R 145 0 R 48 0 R] +/Parent 196 0 R +>> +endobj +147 0 obj +<< +/Type/Page +/Resources 148 0 R +/Contents[46 0 R 4 0 R 149 0 R 48 0 R] +/Parent 196 0 R +>> +endobj +196 0 obj +<< +/Type/Pages +/Count 2 +/Kids[143 0 R 147 0 R] +/Parent 193 0 R +>> +endobj +193 0 obj +<< +/Type/Pages +/Count 7 +/Kids[123 0 R 194 0 R 195 0 R 196 0 R] +/Parent 3 0 R +>> +endobj +151 0 obj +<< +/Type/Page +/Resources 152 0 R +/Contents[46 0 R 4 0 R 153 0 R 48 0 R] +/Parent 197 0 R +>> +endobj +155 0 obj +<< +/Type/Page +/Resources 156 0 R +/Contents[46 0 R 4 0 R 163 0 R 48 0 R] +/Parent 198 0 R +>> +endobj +165 0 obj +<< +/Type/Page +/Resources 166 0 R +/Contents[46 0 R 4 0 R 167 0 R 48 0 R] +/Parent 198 0 R +>> +endobj +198 0 obj +<< +/Type/Pages +/Count 2 +/Kids[155 0 R 165 0 R] +/Parent 197 0 R +>> +endobj +169 0 obj +<< +/Type/Page +/Resources 170 0 R +/Contents[46 0 R 4 0 R 171 0 R 48 0 R] +/Parent 199 0 R +>> +endobj +173 0 obj +<< +/Type/Page +/Resources 174 0 R +/Contents[46 0 R 4 0 R 175 0 R 48 0 R] +/Parent 199 0 R +>> +endobj +199 0 obj +<< +/Type/Pages +/Count 2 +/Kids[169 0 R 173 0 R] +/Parent 197 0 R +>> +endobj +177 0 obj +<< +/Type/Page +/Resources 178 0 R +/Contents[46 0 R 4 0 R 179 0 R 48 0 R] +/Parent 200 0 R +>> +endobj +181 0 obj +<< +/Type/Page +/Resources 182 0 R +/Contents[46 0 R 4 0 R 183 0 R 48 0 R] +/Parent 200 0 R +>> +endobj +200 0 obj +<< +/Type/Pages +/Count 2 +/Kids[177 0 R 181 0 R] +/Parent 197 0 R +>> +endobj +197 0 obj +<< +/Type/Pages +/Count 7 +/Kids[151 0 R 198 0 R 199 0 R 200 0 R] +/Parent 3 0 R +>> +endobj +3 0 obj +<< +/Type/Pages +/Count 28 +/Kids[185 0 R 189 0 R 193 0 R 197 0 R] +/MediaBox[0 0 595 842] +>> +endobj +46 0 obj +<< +/Length 1 +>> +stream + +endstream +endobj +48 0 obj +<< +/Length 1 +>> +stream + +endstream +endobj +4 0 obj +<< +/Length 33 +>> +stream +1.00028 0 0 1.00028 72 769.82 cm +endstream +endobj +201 0 obj +<< +>> +endobj +202 0 obj +null +endobj +203 0 obj +<< +>> +endobj +2 0 obj +<< +/Type/Catalog +/Pages 3 0 R +/Outlines 201 0 R +/Threads 202 0 R +/Names 203 0 R +>> +endobj +xref +0 204 +0000000000 65535 f +0000186997 00000 n +0000191887 00000 n +0000191532 00000 n +0000191737 00000 n +0000187161 00000 n +0000016491 00000 n +0000000009 00000 n +0000069741 00000 n +0000069557 00000 n +0000000913 00000 n +0000001906 00000 n +0000073033 00000 n +0000072847 00000 n +0000002883 00000 n +0000003885 00000 n +0000076603 00000 n +0000076408 00000 n +0000005501 00000 n +0000079785 00000 n +0000079599 00000 n +0000006452 00000 n +0000085760 00000 n +0000085572 00000 n +0000007369 00000 n +0000089457 00000 n +0000089271 00000 n +0000008368 00000 n +0000095995 00000 n +0000095810 00000 n +0000009336 00000 n +0000099464 00000 n +0000099275 00000 n +0000010079 00000 n +0000108345 00000 n +0000108155 00000 n +0000011025 00000 n +0000120697 00000 n +0000120509 00000 n +0000011961 00000 n +0000136839 00000 n +0000136646 00000 n +0000012879 00000 n +0000138405 00000 n +0000138219 00000 n +0000013819 00000 n +0000191637 00000 n +0000014820 00000 n +0000191687 00000 n +0000016334 00000 n +0000187264 00000 n +0000020586 00000 n +0000145694 00000 n +0000145508 00000 n +0000016552 00000 n +0000147850 00000 n +0000147664 00000 n +0000017517 00000 n +0000018262 00000 n +0000020506 00000 n +0000187369 00000 n +0000025907 00000 n +0000020648 00000 n +0000162005 00000 n +0000161811 00000 n +0000021602 00000 n +0000169537 00000 n +0000169351 00000 n +0000022549 00000 n +0000023550 00000 n +0000025791 00000 n +0000187555 00000 n +0000030062 00000 n +0000025969 00000 n +0000171534 00000 n +0000171339 00000 n +0000026876 00000 n +0000027858 00000 n +0000029947 00000 n +0000187660 00000 n +0000034093 00000 n +0000030124 00000 n +0000178717 00000 n +0000178529 00000 n +0000031092 00000 n +0000032091 00000 n +0000033966 00000 n +0000187846 00000 n +0000036319 00000 n +0000034155 00000 n +0000036226 00000 n +0000187951 00000 n +0000037428 00000 n +0000036381 00000 n +0000037336 00000 n +0000188232 00000 n +0000038696 00000 n +0000037490 00000 n +0000038592 00000 n +0000188337 00000 n +0000040573 00000 n +0000038758 00000 n +0000040456 00000 n +0000188444 00000 n +0000042298 00000 n +0000040637 00000 n +0000042205 00000 n +0000188634 00000 n +0000044453 00000 n +0000042362 00000 n +0000044337 00000 n +0000188742 00000 n +0000046045 00000 n +0000044517 00000 n +0000045952 00000 n +0000188933 00000 n +0000048021 00000 n +0000046109 00000 n +0000047941 00000 n +0000189041 00000 n +0000050372 00000 n +0000048085 00000 n +0000050302 00000 n +0000189328 00000 n +0000051639 00000 n +0000050436 00000 n +0000051558 00000 n +0000189436 00000 n +0000053356 00000 n +0000051703 00000 n +0000053263 00000 n +0000189544 00000 n +0000054594 00000 n +0000053420 00000 n +0000054513 00000 n +0000189735 00000 n +0000055668 00000 n +0000054658 00000 n +0000055610 00000 n +0000189843 00000 n +0000057228 00000 n +0000055732 00000 n +0000057136 00000 n +0000190034 00000 n +0000059619 00000 n +0000057292 00000 n +0000059550 00000 n +0000190142 00000 n +0000060983 00000 n +0000059683 00000 n +0000060925 00000 n +0000190430 00000 n +0000061841 00000 n +0000061047 00000 n +0000061783 00000 n +0000190538 00000 n +0000065285 00000 n +0000183522 00000 n +0000183329 00000 n +0000061905 00000 n +0000185751 00000 n +0000185555 00000 n +0000062902 00000 n +0000063914 00000 n +0000065166 00000 n +0000190646 00000 n +0000066130 00000 n +0000065349 00000 n +0000066072 00000 n +0000190837 00000 n +0000067523 00000 n +0000066194 00000 n +0000067404 00000 n +0000190945 00000 n +0000068156 00000 n +0000067587 00000 n +0000068098 00000 n +0000191136 00000 n +0000068952 00000 n +0000068220 00000 n +0000068871 00000 n +0000191244 00000 n +0000069493 00000 n +0000069016 00000 n +0000069424 00000 n +0000188137 00000 n +0000187474 00000 n +0000187765 00000 n +0000188056 00000 n +0000189232 00000 n +0000188552 00000 n +0000188850 00000 n +0000189149 00000 n +0000190333 00000 n +0000189652 00000 n +0000189951 00000 n +0000190250 00000 n +0000191435 00000 n +0000190754 00000 n +0000191053 00000 n +0000191352 00000 n +0000191819 00000 n +0000191842 00000 n +0000191864 00000 n +trailer +<< +/Size 204 +/Root 2 0 R +/Info 1 0 R +>> +startxref +191985 +%%EOF diff --git a/macros/latex/contrib/algorithmicx/algorithmicx.sty b/macros/latex/contrib/algorithmicx/algorithmicx.sty new file mode 100644 index 0000000000..bfb7dabafe --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algorithmicx.sty @@ -0,0 +1,786 @@ +% ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% +% +% *** INITIALISING *** +% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{algorithmicx}[2005/04/27 v1.2 Algorithmicx] +\RequirePackage{ifthen} +\typeout{Document Style algorithmicx 1.2 - a greatly improved `algorithmic' style} +% +\newcounter{ALG@line} +\newcounter{ALG@rem} +\newcounter{ALG@nested} +\newlength{\ALG@tlm} +\newlength{\ALG@thistlm} +\newcounter{ALG@Lnr}% the number of defined languages +\setcounter{ALG@Lnr}{0} +\newcounter{ALG@blocknr}% the number of defined blocks +\setcounter{ALG@blocknr}{0} +\newcounter{ALG@storecount}% number of stored but not restored algorithmic environments +\setcounter{ALG@storecount}{0} +\newcounter{ALG@tmpcounter}% only to decrement things +\newlength\ALG@tmplength% +%\def\algorithmicnoindent{-\ALG@tlm} +% \def\algbackskipbegin{\hskip\ALG@ctlm} +%\def\algbackskip{\hskip-\ALG@thistlm} +%\def\algbackskipend{\hskip-\ALG@tlm} +\def\ALG@defaultindent{\algorithmicindent} +% +% conditional states +% +\def\ALG@newcondstate#1% + {% + \expandafter\edef\csname ALG@x@#1\endcsname% + {\expandafter\noexpand\csname @@ALG@x@#1\endcsname}% + }% +\ALG@newcondstate{notext}% +\ALG@newcondstate{default}% +% +% +% *** ALGORITHMIC *** +% +% +\newcommand\ALG@beginblock[1]% #1 - indentation + {% + \ALG@thistlm\ALG@tlm% + \addtolength\ALG@tlm{#1}% + \addtocounter{ALG@nested}{1}% + \setlength\ALG@tmplength{#1}% + \expandafter\edef\csname ALG@ind@\theALG@nested\endcsname{\the\ALG@tmplength}% + }% +\newcommand\ALG@endblock% + {% + \addtolength\ALG@tlm{-\csname ALG@ind@\theALG@nested\endcsname}% + \addtocounter{ALG@nested}{-1}% + \ALG@thistlm\ALG@tlm% + }% +% +% algorithmic environment +% +\def\ALG@step% + {% + \addtocounter{ALG@line}{1}% + \addtocounter{ALG@rem}{1}% + \ifthenelse{\equal{\arabic{ALG@rem}}{\ALG@numberfreq}}% + {\setcounter{ALG@rem}{0}\alglinenumber{\arabic{ALG@line}}}% + {}% + }% +\newenvironment{algorithmic}[1][0]% + {% + \edef\ALG@numberfreq{#1}% + \def\@currentlabel{\theALG@line}% + % + \setcounter{ALG@line}{0}% + \setcounter{ALG@rem}{0}% + % + \let\\\algbreak% + % + \expandafter\edef\csname ALG@currentblock@\theALG@nested\endcsname{0}% + \expandafter\let\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + % + \begin{list}% + {\ALG@step}% + {% + \rightmargin\z@% + \itemsep\z@ \itemindent\z@ \listparindent2em% + \partopsep\z@ \parskip\z@ \parsep\z@% + \labelsep 0.5em \topsep 0.2em%\skip 1.2em + \ifthenelse{\equal{#1}{0}}% + {\labelwidth 0.5em}% + {\labelwidth 1.2em}% + \leftmargin\labelwidth \addtolength{\leftmargin}{\labelsep}% Ok. the perfect leftmargin :-)) + \ALG@tlm\z@% + }% + \setcounter{ALG@nested}{0}% + \ALG@beginalgorithmic% + }% + {% end{algorithmic} + % check if all blocks are closed + \ALG@closeloops% + \expandafter\ifnum\csname ALG@currentblock@\theALG@nested\endcsname=0\relax% + \else% + \PackageError{algorithmicx}{Some blocks are not closed!!!}{}% + \fi% + \ALG@endalgorithmic% + \end{list}% + }% +% +% +% *** Functional core *** +% +% +\def\ALG@makeentity#1% execute the entity (#1) + {% + \def\ALG@thisentity{#1}% + \expandafter\ifx\csname ALG@b@\ALG@L @#1@0\endcsname\relax% + \let\ALG@makenobeginrepeat\ALG@makenobegin\ALG@makenobeginrepeat% this entitie ends or continues blocks + \else% + \let\ALG@makebeginrepeat\ALG@makebegin\ALG@makebeginrepeat% this entitie can open blocks + \fi% + \ALG@entitiecommand% + }% +% +\def\ALG@makebegin% executes an entitie that can open blocks + {% + \expandafter\let\expandafter\ALG@thislifetime\csname ALG@currentlifetime@\theALG@nested\endcsname% + \ifx\ALG@thislifetime\relax% + \let\ALG@makebeginrepeat\ALG@doentity% in infinite block I can open my block + \else% + \ifnum\ALG@thislifetime>0\relax% + \ifnum\ALG@thislifetime>65534\else% + \setcounter{ALG@tmpcounter}{\ALG@thislifetime}% the block has 'space' for another included block + \addtocounter{ALG@tmpcounter}{-1}% + \expandafter\edef\csname ALG@currentlifetime@\theALG@nested\endcsname{\arabic{ALG@tmpcounter}}% + \fi% + \let\ALG@makebeginrepeat\ALG@doentity% + \else% the block needs to be closed + \expandafter\ifx\csname ALG@b@\ALG@L @\ALG@thisentity @\csname ALG@currentblock@\theALG@nested\endcsname\endcsname\relax% + \ALG@closebyforce% I can not close this block, continue after it is closed by force +% \ALG@makebegin% + \else% + % the block would be closed automatically, but this entitie can close it, so let's do it with the entity + \let\ALG@makebeginrepeat\ALG@doentity% + \fi% + \fi% + \fi% + \ALG@makebeginrepeat% + }% +% +\def\ALG@makenobegin% executes an entitie that can not open blocks + {% + \expandafter\ifx\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \let\ALG@makenobeginrepeat\ALG@doentity% an infinite block must be broken + \else% + \expandafter\ifx\csname ALG@b@\ALG@L @\ALG@thisentity @\csname ALG@currentblock@\theALG@nested\endcsname\endcsname\relax% + \ALG@closebyforce% the block must be ended by force, + \else% + \let\ALG@makenobeginrepeat\ALG@doentity% I can continue / end this block, let's do it + \fi% + \fi% + \ALG@makenobeginrepeat% + }% +% +\def\ALG@dobegin% + {% + \ALG@beginblock{\csname ALG@i@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname}% + \expandafter\edef\csname ALG@currentblock@\theALG@nested\endcsname{\csname ALG@b@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname}% + \expandafter\ifx\csname ALG@c@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname\relax% + \expandafter\let\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \else% + \expandafter\edef\csname ALG@currentlifetime@\theALG@nested\endcsname{\csname ALG@c@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname}% + \fi% + }% +% +\def\ALG@doend% + {% + \ALG@endblock% + }% +% +\def\ALG@doentity% the number of the closed block, the entitie + {% + \edef\ALG@thisblock{\csname ALG@currentblock@\theALG@nested\endcsname}% + \expandafter\ifx\csname ALG@b@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname\relax% + \def\ALG@thisblock{0}% + \fi% + \ALG@getentitytext% + \ifnum\ALG@thisblock=0\else\ALG@doend\fi% + \ifx\ALG@text\ALG@x@notext% + \item[]\nointerlineskip%\vskip-\prevdepth\nointerlineskip% bug: if there are no text and no lines, then this is wrong + \else% + \item% + \fi% + \noindent\hskip\ALG@tlm% + \expandafter\ifnum0=\csname ALG@b@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname\else% + \ALG@dobegin% + \fi% + \def\ALG@entitiecommand{\ALG@displayentity}% + }% +% +\def\ALG@getentitytext% + {% + \expandafter\let\expandafter\ALG@text\csname ALG@t@\ALG@L @\ALG@thisentity @\ALG@thisblock\endcsname% + \ifx\ALG@text\ALG@x@default% + % block specific - default + \expandafter\let\expandafter\ALG@text\csname ALG@t@\ALG@L @\ALG@thisentity\endcsname% + \ifx\ALG@text\ALG@x@default% + % block specific - default, language specific - default + \def\ALG@text{\ALG@deftext{\ALG@thisentity}}% + \fi% + \fi% + }% +% +\def\ALG@deftext{\csname ALG@deftext@\ALG@L\endcsname}% +% +\def\ALG@displayentity% + {% + \ifx\ALG@text\ALG@x@notext% + \let\ALG@text\relax% + \fi + \ALG@text% + }% +% +\def\ALG@closebyforce% + {% + \ALG@endblock% + }% +% +\def\ALG@closeloops% closes all finite blocks + {% + \expandafter\ifx\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \else% only if it is finite + \ALG@closebyforce% the block must be ended by force, + \ALG@closeloops% the command still runs + \fi% + }% +% +% +% *** Low level block/entitie defining commands *** +% +% +\def\ALG@bl@{0}% the BIG block +\let\ALG@bl@@\ALG@bl@% the BIG block +% +% Create a block +% +\def\ALG@createblock#1% create the block #1, if it does not exists + {% + \@ifundefined{ALG@bl@\ALG@Ld @#1}% needs to be created? + {% + \addtocounter{ALG@blocknr}{1}% increment the block counter + \expandafter\edef\csname ALG@bl@\ALG@Ld @#1\endcsname{\arabic{ALG@blocknr}}% set the block number + }% + {}% + }% +% +% Get the block number +% +\def\ALG@getblocknumber#1{\csname ALG@bl@\ALG@Ld @#1\endcsname}% +% +% Create an entitie +% +\def\ALG@createentitie#1% create the entitie #1, if it does not exists + {% + \expandafter\ALG@edefcmd\csname #1\endcsname{\noexpand\ALG@makeentity{#1}}% + \@ifundefined{ALG@t@\ALG@Ld @#1}% the entity text is defined in this language? + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#1\endcsname\ALG@x@default% + }% + {}% + }% +% +\def\ALG@createtext#1#2% #1 = closed block; #2 = entitie; creates \ALG@t@#2@#1 + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2@#1\endcsname\ALG@x@default% + }% +% +% End and Continue block +% +\def\ALG@endandcontinueblock#1#2#3#4#5% #1 = new block; #2 = old block; #3 = entitie; #4 = credits; #5 = indent + {% + \ifthenelse{\equal{#3}{}}{}% execute only if the entity is not empty + {% + \ALG@createentitie{#3}% create the entitie + \ALG@createblock{#2}% create the old block, if needed + \ifthenelse{\equal{#1}{}}% whe need to open a new block? + {\expandafter\edef\csname ALG@b@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{0}}% no, just close the old one + {% yes, + \ALG@createblock{#1}% create the block + \expandafter\edef\csname ALG@b@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{\ALG@getblocknumber{#1}}% ending the old block opens a new one + \ifthenelse{\equal{#4}{}}% infinite or finite credits? + {\expandafter\let\csname ALG@c@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname\relax}% infinite credits + {\expandafter\edef\csname ALG@c@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{#4}}% finite credits + \ifthenelse{\equal{#5}{}}% default or specified indentation + {\expandafter\let\csname ALG@i@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname\ALG@defaultindent}% default indentation + {\expandafter\edef\csname ALG@i@\ALG@Ld @#3@\ALG@getblocknumber{#2}\endcsname{#5}}% indentation is specified + }% + \ALG@createtext{\ALG@getblocknumber{#2}}{#3}% + }% + }% +% +% macros used in declarations +% +\def\ALG@p@endtext@E{\algrenewtext{\ALG@v@end}}% +\def\ALG@p@endtext@xE{\algrenewtext[\ALG@v@newblock]{\ALG@v@end}}% +\def\ALG@p@endtext@nE{\algnotext{\ALG@v@end}}% +\def\ALG@p@endtext@xnE{\algnotext[\ALG@v@newblock]{\ALG@v@end}}% +\def\ALG@p@endtext@{}% +% starttext defines are more compex -- care must be taken for the optional parameters +\def\ALG@p@starttext@S{\ALG@p@s@process{\algrenewtext}}% +\def\ALG@p@starttext@C{\ALG@p@s@process{\algrenewtext}}% +\def\ALG@p@starttext@xC{\ALG@p@s@process{\algrenewtext[\ALG@v@oldblock]}}% +\def\ALG@p@s@process#1% + {% + \ifthenelse{\equal{\ALG@v@start}{}}% + {\ALG@p@endtext}% + {\@ifnextchar{[}{\ALG@p@s@getparamcount{#1}}{\ALG@p@s@simple{#1}}}% + }% +\def\ALG@p@s@getparamcount#1[#2]% + {% + \@ifnextchar{[}{\ALG@p@s@getdefparam{#1}{#2}}{\ALG@p@s@param{#1}{#2}}% + }% +\def\ALG@p@s@getdefparam#1#2[#3]% + {% + \ALG@p@s@defparam{#1}{#2}{#3}% + }% +\def\ALG@p@s@simple#1#2{#1{\ALG@v@start}{#2}\ALG@p@endtext}% +\def\ALG@p@s@param#1#2#3{#1{\ALG@v@start}[#2]{#3}\ALG@p@endtext}% +\def\ALG@p@s@defparam#1#2#3#4{#1{\ALG@v@start}[#2][#3]{#4}\ALG@p@endtext}% +% the rest of the crew +\def\ALG@p@starttext@nS{\algnotext{\ALG@v@start}\ALG@p@endtext}% +\def\ALG@p@starttext@nC{\algnotext{\ALG@v@start}\ALG@p@endtext}% +\def\ALG@p@starttext@xnC{\algnotext[\ALG@v@oldblock]{\ALG@v@start}\ALG@p@endtext}% +\def\ALG@p@starttext@{\ALG@p@endtext}% +\def\ALG@p@indent@def#1{\def\ALG@v@indent{#1}\ALG@p@setup}% +\def\ALG@p@indent@{\def\ALG@v@indent{}\ALG@p@setup}% +\def\ALG@p@credits@def#1{\def\ALG@v@credits{#1}\ALG@p@indent}% +\def\ALG@p@credits@{\ALG@p@indent}% +\def\ALG@p@end@def#1{\def\ALG@v@end{#1}\ALG@p@credits}% +\def\ALG@p@end@{\def\ALG@v@end{}\ALG@p@credits}% +\def\ALG@p@start@def#1{\def\ALG@v@start{#1}\ALG@p@end}% +\def\ALG@p@start@{\def\ALG@v@start{}\ALG@p@end}% +\def\ALG@p@oldblock@def#1{\def\ALG@v@oldblock{#1}\ALG@p@start}% +\def\ALG@p@oldblock@{\def\ALG@v@oldblock{}\ALG@p@start}% +\newcommand\ALG@p@newblock[1][]{\def\ALG@v@newblock{#1}\ALG@p@oldblock}% +\def\ALG@p@setup% + {% + \ifthenelse{\equal{\ALG@v@newblock}{}}% + {% + \ifthenelse{\equal{\ALG@v@start}{}}% + {% + \PackageError{algorithmicx}{Block or starting entitie must be specified!!!}{}% + }% + {% + \let\ALG@v@newblock\ALG@v@start% + }% + }% + {% + }% + \ALG@endandcontinueblock% + {\ALG@v@newblock}{\ALG@v@oldblock}{\ALG@v@start}% + {\ALG@v@credits}{\ALG@v@indent}% + \ALG@endandcontinueblock% + {}{\ALG@v@newblock}{\ALG@v@end}% + {}{}% + \ALG@p@starttext% + }% +% +% param handling +% +\newcommand\ALG@p@def[2][def]% + {% + \expandafter\let\csname ALG@p@#2\expandafter\endcsname\csname ALG@p@#2@#1\endcsname% + }% +\def\ALG@p@undef{\ALG@p@def[]}% +% +\def\ALG@p@ons{\ALG@p@def{start}}% +\def\ALG@p@onS{\ALG@p@def{start}\ALG@p@def[S]{starttext}}% +\def\ALG@p@onc{\ALG@p@def{oldblock}\ALG@p@def{start}}% +\def\ALG@p@onC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[C]{starttext}}% +\def\ALG@p@one{\ALG@p@def{end}}% +\def\ALG@p@onE{\ALG@p@def{end}\ALG@p@def[E]{endtext}}% +\def\ALG@p@onxC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[xC]{starttext}}% +\def\ALG@p@onxE{\ALG@p@def{end}\ALG@p@def[xE]{endtext}}% +\def\ALG@p@onnS{\ALG@p@def{start}\ALG@p@def[nS]{starttext}}% +\def\ALG@p@onnC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[nC]{starttext}}% +\def\ALG@p@onnE{\ALG@p@def{end}\ALG@p@def[nE]{endtext}}% +\def\ALG@p@onxnC{\ALG@p@def{oldblock}\ALG@p@def{start}\ALG@p@def[xnC]{starttext}}% +\def\ALG@p@onxnE{\ALG@p@def{end}\ALG@p@def[xnE]{endtext}}% +\def\ALG@p@onb{\def\ALG@v@credits{}}% +\def\ALG@p@onl{\def\ALG@v@credits{1}}% +\def\ALG@p@onL{\ALG@p@def{credits}}% +\def\ALG@p@oni{\ALG@p@def{indent}}% +% +\def\ALG@p@main#1% + {% + \@ifundefined{ALG@ps@\ALG@p@state @#1}% + {% + \csname ALG@ps@\ALG@p@state @other\endcsname{#1}% + }% + {% + \csname ALG@ps@\ALG@p@state @#1\endcsname% + }% + \ALG@p@rec% + }% +% STATE : <> +\expandafter\def\csname ALG@ps@@]\endcsname{\let\ALG@p@rec\relax}% +\def\ALG@ps@@s{\ALG@p@ons}% +\def\ALG@ps@@S{\ALG@p@onS}% +\def\ALG@ps@@c{\ALG@p@onc}% +\def\ALG@ps@@C{\ALG@p@onC}% +\def\ALG@ps@@e{\ALG@p@one}% +\def\ALG@ps@@E{\ALG@p@onE}% +\def\ALG@ps@@N{\typeout{algdef: 'N' obsoloted, use 'nE'.}\ALG@p@onnE}% +\def\ALG@ps@@b{\ALG@p@onb}% +\def\ALG@ps@@l{\ALG@p@onl}% +\def\ALG@ps@@L{\ALG@p@onL}% +\def\ALG@ps@@i{\ALG@p@oni}% +\def\ALG@ps@@x{\def\ALG@p@state{x}}% +\def\ALG@ps@@n{\def\ALG@p@state{n}}% +\def\ALG@ps@@other#1{\typeout{algdef: Ignoring unknown token #1}}% +% STATE : x +\def\ALG@ps@x@C{\def\ALG@p@state{}\ALG@p@onxC}% +\def\ALG@ps@x@E{\def\ALG@p@state{}\ALG@p@onxE}% +\def\ALG@ps@x@N{\def\ALG@p@state{}\typeout{algdef: 'xN' obsoloted, use 'xnE'.}\ALG@p@onxnE}% +\def\ALG@ps@x@n{\def\ALG@p@state{xn}}% +\def\ALG@ps@x@other#1% + {% + \typeout{algdef: Ignoring 'x' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% STATE : n +\def\ALG@ps@n@S{\def\ALG@p@state{}\ALG@p@onnS}% +\def\ALG@ps@n@C{\def\ALG@p@state{}\ALG@p@onnC}% +\def\ALG@ps@n@E{\def\ALG@p@state{}\ALG@p@onnE}% +\def\ALG@ps@n@x{\def\ALG@p@state{nx}}% +\def\ALG@ps@n@other#1% + {% + \typeout{algdef: Ignoring 'n' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% STATE : xn +\def\ALG@ps@xn@C{\def\ALG@p@state{}\ALG@p@onxnC}% +\def\ALG@ps@xn@E{\def\ALG@p@state{}\ALG@p@onxnE}% +\def\ALG@ps@xn@x{\typeout{algdef: Ignoring 'x' after 'xn'.}}% +\def\ALG@ps@xn@n{\typeout{algdef: Ignoring 'n' after 'xn'.}}% +\def\ALG@ps@xn@other#1% + {% + \typeout{algdef: Ignoring 'xn' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% STATE : nx +\def\ALG@ps@nx@C{\def\ALG@p@state{}\ALG@p@onxnC}% +\def\ALG@ps@nx@E{\def\ALG@p@state{}\ALG@p@onxnE}% +\def\ALG@ps@nx@x{\typeout{algdef: Ignoring 'x' after 'nx'.}}% +\def\ALG@ps@nx@n{\typeout{algdef: Ignoring 'n' after 'nx'.}}% +\def\ALG@ps@nx@other#1% + {% + \typeout{algdef: Ignoring 'nx' before '#1'.}% + \def\ALG@p@state{}% + \def\ALG@p@rec{\let\ALG@p@rec\ALG@p@main\ALG@p@rec#1}% + }% +% +% +% *** User level block/entitie commands *** +% +% +% +% algdef{switches}... -- the king of all definitions in the algorithmicx package +% +\newcommand\algdef[1]% + {% + \ALG@p@undef{oldblock}% + \ALG@p@undef{start}% + \ALG@p@undef{end}% + \def\ALG@v@credits{}% + \ALG@p@undef{credits}% + \ALG@p@undef{indent}% + \ALG@p@undef{starttext}% + \ALG@p@undef{endtext}% + \def\ALG@p@state{}% + \let\ALG@p@rec\ALG@p@main% + \ALG@p@rec#1]% + \ALG@p@newblock% + }% +% +% a lot of other macros are provided for convenience +% +\def\algblock{\algdef{se}}% +\def\algcblock{\algdef{ce}}% +\def\algloop{\algdef{sl}}% +\def\algcloop{\algdef{cl}}% +\def\algsetblock{\algdef{seLi}}% +\def\algsetcblock{\algdef{ceLi}}% +\def\algblockx{\algdef{SxE}}% +\def\algblockdefx{\algdef{SE}}% +\def\algcblockx{\algdef{CxE}}% +\def\algcblockdefx{\algdef{CE}}% +\def\algsetblockx{\algdef{SxELi}}% +\def\algsetblockdefx{\algdef{SELi}}% +\def\algsetcblockx{\algdef{CxELi}}% +\def\algsetcblockdefx{\algdef{CELi}}% +\def\algloopdefx{\algdef{Sl}}% +\def\algcloopx{\algdef{xCl}}% +\def\algcloopdefx{\algdef{Cl}}% +% algloopx is not correct, use algloopdefx +% +% Text output commands +% +\newcommand\algrenewtext[2][]% [block]{entity} + {% + \ifthenelse{\equal{#2}{}}{}% + {% + \ifthenelse{\equal{#1}{}}% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2\endcsname\relax% + \expandafter\newcommand\csname ALG@t@\ALG@Ld @#2\endcsname% + }% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2@\ALG@getblocknumber{#1}\endcsname\relax% + \expandafter\newcommand\csname ALG@t@\ALG@Ld @#2@\ALG@getblocknumber{#1}\endcsname% + }% + }% + }% +% +\def\ALG@letentitytext#1#2% [block]{entity} + {% + \ifthenelse{\equal{#2}{}}{}% + {% + \ifthenelse{\equal{#1}{}}% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2\endcsname% + }% + {% + \expandafter\let\csname ALG@t@\ALG@Ld @#2@\ALG@getblocknumber{#1}\endcsname% + }% + }% + }% +% +\newcommand\algnotext[2][]% [block]{entity} + {% + \ALG@letentitytext{#1}{#2}\ALG@x@notext% + }% +% +\newcommand\algdefaulttext[2][]% [block]{entity} + {% + \ALG@letentitytext{#1}{#2}\ALG@x@default% + }% +% +\def\ALG@notext*{\algnotext}% +\def\algtext{\@ifnextchar{*}{\ALG@notext}{\algrenewtext}}% +% +% +% *** LANGUAGE SWITCHING *** +% +% +% +\newcommand\algnewlanguage[1]% + {% + \@ifundefined{ALG@L@#1}% needs to be created? + {}% + {% + \PackageError{algorithmicx}{Language '#1' already defined!}{}% + }% + \addtocounter{ALG@Lnr}{1}% increment the language counter + \expandafter\edef\csname ALG@L@#1\endcsname{\arabic{ALG@Lnr}}% set the language number + \edef\ALG@Ld{\csname ALG@L@#1\endcsname}% + \expandafter\let\csname ALG@bl@\ALG@Ld @\endcsname\ALG@bl@% the BIG block + \expandafter\let\csname ALG@bl@\ALG@Ld @@\endcsname\ALG@bl@% the BIG block + \algdef{SL}[STATE]{State}{0}{}% + \expandafter\def\csname ALG@deftext@\ALG@Ld\endcsname{\textbf}% + \algnewcommand\algorithmiccomment[1]{\hfill\(\triangleright\) ##1}% + \algnewcommand\algorithmicindent{1.5em}% + \algnewcommand\alglinenumber[1]{\footnotesize ##1:}% + \algnewcommand\ALG@beginalgorithmic\relax% for user overrides + \algnewcommand\ALG@endalgorithmic\relax% for user overrides + }% +% +\newcommand\algsetlanguage[1]% + {% + \@ifundefined{ALG@L@#1}% needs to be created? + {% + \PackageError{algorithmicx}{Language '#1' is not yet defined!}{}% + }{}% + \edef\ALG@L{\csname ALG@L@#1\endcsname}% + }% +% +\newcommand\algdeflanguage[1]% + {% + \@ifundefined{ALG@L@#1}% needs to be created? + {% + \PackageError{algorithmicx}{Language '#1' is not yet defined!}{}% + }{}% + \edef\ALG@Ld{\csname ALG@L@#1\endcsname}% + }% +% +\newcommand\alglanguage[1]% + {% + \algdeflanguage{#1}% + \algsetlanguage{#1}% + }% +% +% +% *** Defining language dependent stuff *** +% +% +\def\ALG@eatoneparam#1{}% +\def\ALG@defbasecmd#1#2% + {% + \edef\ALG@tmp{\expandafter\ALG@eatoneparam\string #2}% + \@ifundefined\ALG@tmp{\edef #2{\noexpand\csname ALG@cmd@\noexpand\ALG@L @\ALG@tmp\endcsname}}{}% + \expandafter#1\csname ALG@cmd@\ALG@Ld @\ALG@tmp\endcsname% + }% +\newcommand\algnewcommand{\ALG@defbasecmd\newcommand}% +\newcommand\algrenewcommand{\ALG@defbasecmd\renewcommand}% +\def\ALG@letcmd{\ALG@defbasecmd\let}% +\def\ALG@defcmd{\ALG@defbasecmd\def}% +\def\ALG@edefcmd{\ALG@defbasecmd\edef}% +% +% +% *** OTHERS *** +% +% +\def\BState{\State \algbackskip}% +\def\Statex{\item[]}% an empty line +\newcommand\algrenewcomment{\algrenewcommand\algorithmiccomment}% +\def\Comment{\algorithmiccomment}% +\def\algref#1#2{\ref{#1}.\ref{#2}}% +\algnewlanguage{default}% +\algsetlanguage{default}% +% +% +% *** Line breaks *** +% +% +\newcommand\algbreak% for multiline parameters !!! needs fix + {% + \item% +% \hskip\ALG@parindent%!!! not yet implemented +% \hskip-\algorithmicindent% + }% +% +\def\ALG@noputindents% + {% + \hskip\ALG@tlm% + }% +% +% +% *** algorithm store / restore *** +% +% +% store +% +\ALG@newcondstate{mustrestore}% +\def\algstore% + {% + \renewcommand\ALG@beginblock% + {% + \PackageError{algorithmicx}{The environment must be closed after store!}{}% + }% + \@ifstar{\ALG@starstore}{\ALG@nostarstore}% + }% +\def\ALG@nostarstore#1% save all infos into #1 and terminate the algorithmic block + {% + \addtocounter{ALG@storecount}{1}% + \expandafter\global\expandafter\let\csname ALG@save@mustrestore@#1\endcsname\ALG@x@mustrestore% + \ALG@starstore{#1}% + }% +\def\ALG@starstore#1% + {% + \@ifundefined{ALG@save@line@#1}{}% + {\PackageError{algorithmicx}{This save name '#1' is already used!}{}}% + \def\ALG@savename{#1}% + \expandafter\xdef\csname ALG@save@totalnr@\ALG@savename\endcsname{\theALG@nested}% + \expandafter\xdef\csname ALG@save@line@\ALG@savename\endcsname{\theALG@line}% + \expandafter\xdef\csname ALG@save@numberfreq@\ALG@savename\endcsname{\ALG@numberfreq}% + \expandafter\xdef\csname ALG@save@rem@\ALG@savename\endcsname{\theALG@rem}% + \let\ALG@storerepeat\ALG@store% + \ALG@storerepeat% + }% +\def\ALG@store% simply terminate all open blocks + {% + \ifnum\theALG@nested=0\let\ALG@storerepeat\relax% + \else% + \expandafter\xdef\csname ALG@save@currentblock@\ALG@savename @\theALG@nested\endcsname% + {\csname ALG@currentblock@\theALG@nested\endcsname}% + \expandafter\ifx\csname ALG@currentlifetime@\theALG@nested\endcsname\relax% + \else% + \expandafter\xdef\csname ALG@save@currentlifetime@\ALG@savename @\theALG@nested\endcsname% + {\csname ALG@currentlifetime@\theALG@nested\endcsname}% + \fi% + \expandafter\xdef\csname ALG@save@ind@\ALG@savename @\theALG@nested\endcsname% + {\csname ALG@ind@\theALG@nested\endcsname}% + \ALG@closebyforce% + \fi% + \ALG@storerepeat% + }% +% +% restore +% +\def\algrestore% + {% + \@ifstar{\ALG@starrestore}{\ALG@nostarrestore}% + }% +\def\ALG@starrestore% + {% + \let\ALG@restorerem\relax% + \let\ALG@restorereprem\relax% + \ALG@restoremain% + }% +\def\ALG@nostarrestore% + {% + \let\ALG@restorerem\ALG@restoreremovesave% + \let\ALG@restorereprem\ALG@restorerepremovesave% + \ALG@restoremain% + }% +\def\ALG@restoreremovesave% + {% + \expandafter\global\expandafter\let\csname ALG@save@totalnr@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@line@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@rem@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@totalnr@\ALG@savename\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@numberfreq@\ALG@savename\endcsname\relax% + }% +\def\ALG@restorerepremovesave% + {% + \expandafter\global\expandafter\let\csname ALG@save@currentblock@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\global\expandafter\let\csname ALG@save@ind@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + }% +\def\ALG@restoremain#1% restore all infos from #1 in an open algorithmic block + {% + \ifnum\theALG@line=0% + \else\PackageError{algorithmicx}{Restore might be used only at the beginning of the environment!}{}% + \fi% + \def\ALG@savename{#1}% + \expandafter\ifx\csname ALG@save@totalnr@\ALG@savename\endcsname\relax% + \PackageError{algorithmicx}{Save '\ALG@savename'\space not defined!!!}{}% + \fi% + \@ifundefined{ALG@save@mustrestore@\ALG@savename}{}% + {% + \addtocounter{ALG@storecount}{-1}% + \expandafter\global\expandafter\let\csname ALG@save@mustrestore@\ALG@savename\endcsname\relax% + }% + \setcounter{ALG@line}{\csname ALG@save@line@\ALG@savename\endcsname}% + \edef\ALG@numberfreq{\csname ALG@save@numberfreq@\ALG@savename\endcsname}% + \setcounter{ALG@rem}{\csname ALG@save@rem@\ALG@savename\endcsname}% + \setcounter{ALG@tmpcounter}{\csname ALG@save@totalnr@\ALG@savename\endcsname}% + \setcounter{ALG@nested}{0}% + \ALG@restorerem% + \let\ALG@restorerepeat\ALG@restore% + \ALG@restorerepeat% + }% +\def\ALG@restore% + {% + \ifnum\theALG@tmpcounter>0% + \expandafter\edef\csname ALG@currentblock@\theALG@tmpcounter\endcsname% + {\csname ALG@save@currentblock@\ALG@savename @\theALG@tmpcounter\endcsname}% + \expandafter\ifx\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname\relax% + \expandafter\let\csname ALG@currentlifetime@\theALG@tmpcounter\endcsname\relax% + \else% + \expandafter\edef\csname ALG@currentlifetime@\theALG@tmpcounter\endcsname% + {\csname ALG@save@currentlifetime@\ALG@savename @\theALG@tmpcounter\endcsname}% + \fi% + % + \ALG@beginblock{\csname ALG@save@ind@\ALG@savename @\theALG@tmpcounter\endcsname}% + \ALG@restorereprem% + \addtocounter{ALG@tmpcounter}{-1}% + \else\let\ALG@restorerepeat\relax% + \fi% + \ALG@restorerepeat% + }% +\AtEndDocument% + {% + \ifnum\theALG@storecount>0\relax% + \PackageError{algorithmicx}{Some stored algorithms are not restored!}{}% + \fi% + }% diff --git a/macros/latex/contrib/algorithmicx/algorithmicx.tex b/macros/latex/contrib/algorithmicx/algorithmicx.tex new file mode 100644 index 0000000000..a92c017f7a --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algorithmicx.tex @@ -0,0 +1,1768 @@ +\documentclass{article} +\usepackage{algorithmicx} +\usepackage[ruled]{algorithm} +\usepackage{algpseudocode} +\usepackage{algpascal} +\usepackage{algc} +%\algdisablelines + + +\newcommand{\alg}{\texttt{algorithmicx}} +\newcommand{\old}{\texttt{algorithmic}} +\newcommand{\euk}{Euclid} +\newcommand\ASTART{\bigskip\noindent\begin{minipage}[b]{0.5\linewidth}} +\newcommand\ACONTINUE{\end{minipage}\begin{minipage}[b]{0.5\linewidth}} +\newcommand\AENDSKIP{\end{minipage}\bigskip} +\newcommand\AEND{\end{minipage}} + + + +\title{The \alg\ package\footnote{This is the documentation for the version 1.2 +of the package. This package is released under LPPL.}} +\author{Sz\'asz J\'anos\\szaszjanos@users.sourceforge.net} + + + +\begin{document} +\maketitle +\begin{abstract} +The \alg\ package provides many possibilities to customize the layout of algorithms. +You can use one of the predefined layouts (\textbf{pseudocode}, \textbf{pascal} +and \textbf{c} and others), with or without modifications, or you can define a +completely new layout for your specific needs. +\end{abstract} +\tableofcontents + + + + +\section{Introduction} +All this has begun in my last year at the university. The only thing that I knew of +\LaTeX\ was that it exists, and that it is ``good''. I started using it, but I needed to typeset some +algorithms. So I begun searching for a good algorithmic style, and I have found the \old\ package. +It was a great joy for me, and I started to use it\dots\ +Well\dots\ Everything went nice, until I needed some block that wasn't defined in there. What to do? +I was no \LaTeX\ guru, in fact I only knew the few basic macros. But there was no other way, so I opened +the style file, and I copied one existing block, renamed a few things, and voil\`a! This (and some other +small changes) where enough for me\dots + +One year later --- for one good soul --- I had to make some really big changes on the style. And there on +a sunny day came the idea. What if I would write some macros to let others create blocks automatically? +And so I did! Since then the style was completely rewritten\dots\ several times\dots + +I had fun writing it, may you have fun using it! I am still no \LaTeX\ guru, so if you are, and you find +something really ugly in the style, please mail me! All ideas for improvements are welcome! + +Thanks go to Benedek Zsuzsa, Ionescu Clara, Sz\H ocs Zolt\'an, Cseke Botond, Kanoc +%Szotyori Zolt\'an Csaba +and many-many others. Without them I would have never started or continued \textbf{algorithmicx}. + + + + +\section{General informations} + +\subsection{The package} +The package \textbf{algorithmicx} itself doesn't define any algorithmic commands, but gives +a set of macros to define such a command set. You may use only \textbf{algorithmicx}, and define +the commands yourself, or you may use one of the predefined command sets. + +These predefined command sets (layouts) are: +\begin{description} +\item[algpseudocode] has the same look\footnote{almost :-)} as the one defined in the +\old\ package. The main difference is that while the \old\ package doesn't +allow you to modify predefined structures, or to create new ones, the \alg\ +package gives you full control over the definitions (ok, there are some +limitations --- you can not send mail with a, say, \verb:\For: command). +\item[algcompatible] is fully compatible with the \old\ package, it should be +used only in old documents. +\item[algpascal] aims to create a formatted pascal program, it performs +automatic indentation (!), so you can transform a pascal program into an +\textbf{algpascal} algorithm description with some basic substitution rules. +\item[algc] -- yeah, just like the \textbf{algpascal}\dots\ but for c\dots\ +This layout is incomplete. +\end{description} + +To create floating algorithms you will need \verb:algorithm.sty:. This file may or may not be +included in the \alg\ package. You can find it on CTAN, in the \old\ package. + + + +\subsection{The algorithmic block} +Each algorithm begins with the \verb:\begin{algorithmic}[lines]: command, the +optional \verb:lines: controls the line numbering: $0$ means no line numbering, +$1$ means number every line, and $n$ means number lines $n$, $2n$, $3n$\dots\ until the +\verb:\end{algorithmic}: command, witch ends the algorithm. + + + +\subsection{Simple lines} + +A simple line of text is beginned with \verb:\State:. This macro marks the begin of every +line. You don't need to use \verb:\State: before a command defined in the package, since +these commands use automatically a new line. + +To obtain a line that is not numbered, and not counted when counting the lines for line numbering +(in case you choose to number lines), use the \verb:Statex: macro. This macro jumps into a new line, +the line gets no number, and any label will point to the previous numbered line. + +We will call \textit{statament\/}s the lines starting with \verb:\State:. The \verb:\Statex: +lines are not stataments. + + + +\subsection{Placing comments in sources}\label{Putting comments in sources} + +Comments may be placed everywhere in the source using the \verb:\Comment: macro +(there are no limitations like those in the \old\ package), feel the freedom! +If you would like to change the form in witch comments are displayed, just +change the \verb:\algorithmiccomment: macro: + +\begin{verbatim} +\algrenewcommand{\algorithmiccomment}[1]{\hskip3em$\rightarrow$ #1} +\end{verbatim} + +will result: +\medskip +\begin{algorithmic}[1] +\algrenewcommand{\algorithmiccomment}[1]{\hskip3em$\rightarrow$ #1} +\State $x\gets x+1$\Comment{Here is the new comment} +\end{algorithmic} + + + +\subsection{Labels and references} +Use the \verb:\label: macro, as usual to label a line. When you use \verb:\ref: to reference +the line, the \verb:\ref: will be subtitued with the corresponding line number. When using the +\textbf{algorithmicx} package togedher with the \textbf{algorithm} package, then you can label +both the algorithm and the line, and use the \verb:\algref: macro to reference a given line +from a given algorithm: + +\begin{verbatim} +\algref{}{} +\end{verbatim} + +\noindent\begin{minipage}[t]{0.5\linewidth} +\begin{verbatim} +The \textbf{while} in algorithm +\ref{euclid} ends in line +\ref{euclidendwhile}, so +\algref{euclid}{euclidendwhile} +is the line we seek. +\end{verbatim} +\end{minipage}\begin{minipage}[t]{0.5\linewidth} +The \textbf{while} in algorithm \ref{euclid} ends in line \ref{euclidendwhile}, +so \algref{euclid}{euclidendwhile} is the line we seek. +\end{minipage} + +\subsection{Breaking up long algorithms} + +Sometimes you have a long algorithm that needs to be broken into parts, each on a +separate float. For this you can use the following: + +\begin{description} +\item[]\verb:\algstore{}: saves the line number, indentation, open blocks of +the current algorithm and closes all blocks. If used, then this must be the last command +before closing the algorithmic block. Each saved algorithm must be continued later in the +document. +\item[]\verb:\algstore*{}: Like the above, but the algorithm must not be continued. +\item[]\verb:\algrestore{}: restores the state of the algorithm saved under +\verb:: in this algorithmic block. If used, then this must be the first command +in an algorithmic block. A save is deleted while restoring. +\item[]\verb:\algrestore*{}: Like the above, but the save will not be deleted, so it +can be restored again. +\end{description} + +See example in the \textbf{Examples} section. + +\subsection{Multiple layouts in the same document} + +You can load multiple algorithmicx layouts in the same document. You can switch between the layouts +using the \verb:\alglanguage{}: command. After this command all new algorithmic +environments will use the given layout until the layout is changed again. + + + + +\section{The predefined layouts} + +\subsection{The \textbf{algpseudocode} layout}\label{algpseudocode} +\alglanguage{pseudocode} +If you are familiar with the \old\ package, then you'll find it easy to +switch. You can use the old algorithms with the \textbf{algcompatible} layout, but please +use the \textbf{algpseudocode} layout for new algorithms. + +To use \textbf{algpseudocode}, simply load \verb:algpseudocode.sty:: + +\begin{verbatim} +\usepackage{algpseudocode} +\end{verbatim} + +You don't need to manually load the \textbf{algorithmicx} package, as this is done by +\textbf{algpseudocode}. + +The first algorithm one should write is the first algorithm ever (ok, +an improved version), \textit{\euk's algorithm}: + +\begin{algorithm}[H] +\caption{\euk's algorithm}\label{euclid} +\begin{algorithmic}[1] +\Procedure{\euk}{$a,b$}\Comment{The g.c.d. of a and b} + \State $r\gets a\bmod b$ + \While{$r\not=0$}\Comment{We have the answer if r is 0} + \State $a\gets b$ + \State $b\gets r$ + \State $r\gets a\bmod b$ + \EndWhile\label{euclidendwhile} + \State \Return $b$\Comment{The gcd is b} +\EndProcedure +\end{algorithmic} +\end{algorithm} + + +Created with the following source: +\begin{verbatim} +\begin{algorithm} +\caption{Euclid's algorithm}\label{euclid} +\begin{algorithmic}[1] +\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b} + \State $r\gets a\bmod b$ + \While{$r\not=0$}\Comment{We have the answer if r is 0} + \State $a\gets b$ + \State $b\gets r$ + \State $r\gets a\bmod b$ + \EndWhile\label{euclidendwhile} + \State \textbf{return} $b$\Comment{The gcd is b} +\EndProcedure +\end{algorithmic} +\end{algorithm} +\end{verbatim} + +The \verb:\State: stands at the beginning of each simple statement; the respective +statement is put in a new line, with the needed indentation. +The \verb:\Procedure: \dots\verb:\EndProcedure: and +\verb:\While: \dots\verb:\EndWhile: blocks (like any block defined in the +\textbf{algpseudocode} layout) automatically indent their content. +The indentation of the source doesn't matter, so + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Repeat +\Comment{forever} +\State this\Until{you die.} +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Repeat +\Comment{forever} +\State this\Until{you die.} +\Statex +\end{algorithmic} +\AENDSKIP + +But, generally, it is a good idea to keep the source indented, since you will find +errors much easier. And your tex file looks better! + +All examples and syntax descriptions will be shown as the previous +example --- the left side shows the \LaTeX\ input, and the right side +the algorithm, as it appears in your document. I'm cheating! Don't look +in the \verb:algorithmicx.tex: file! Believe what the examples state! I may use some +undocumented and dirty stuff to create all these examples. You might be more +confused after opening \verb:algorithmicx.tex: as you was before. + +In the case of syntax +descriptions the text between $<$ and $>$ is symbolic, so if you type +what you see on the left side, you will not get the algorithm on the +right side. But if you replace the text between $<$ $>$ with a proper piece of +algorithm, then you will probably get what you want. The parts between +$[$ and $]$ are optional. + + +\subsubsection{The \textbf{for} block} +The \textbf{for} block may have one of the forms: + +\ASTART +\begin{verbatim} +\For{} + +\EndFor +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\For{$<$text$>$} + \State $<$body$>$ +\EndFor +\end{algorithmic} +\AEND + +\ASTART +\begin{verbatim} +\ForAll{} + +\EndFor +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\ForAll{$<$text$>$} + \State $<$body$>$ +\EndFor +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\State $sum\gets 0$ +\For{$i\gets 1, n$} + \State $sum\gets sum+i$ +\EndFor +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\State $sum\gets 0$ +\For{$i\gets 1, n$} + \State $sum\gets sum+i$ +\EndFor +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{while} block} +The \textbf{while} block has the form: + +\ASTART +\begin{verbatim} +\While{} + +\EndWhile +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\While{$<$text$>$} + \State $<$body$>$ +\EndWhile +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\While{$i\le n$} + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\While{$i\le n$} + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\EndWhile +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{repeat} block} +The \textbf{repeat} block has the form: + +\ASTART +\begin{verbatim} +\Repeat + +\Until{} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Repeat + \State $<$body$>$ +\Until{$<$text$>$} +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\Repeat + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\Until{$i>n$} +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\State $sum\gets 0$ +\State $i\gets 1$ +\Repeat + \State $sum\gets sum+i$ + \State $i\gets i+1$ +\Until{$i>n$} +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{if} block} +The \textbf{if} block has the form: + +\ASTART +\begin{verbatim} +\If{} + +[ +\ElsIf{} + +... +] +[ +\Else + +] +\EndIf +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\If{$<$text$>$} + \State $<$body$>$ +\Statex [ +\ElsIf{$<$text$>$} + \State $<$body$>$ +\Statex \dots +\Statex ] +\Statex [ +\Else + \State $<$body$>$ +\Statex ] +\EndIf +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\If{$quality\ge 9$} + \State $a\gets perfect$ +\ElsIf{$quality\ge 7$} + \State $a\gets good$ +\ElsIf{$quality\ge 5$} + \State $a\gets medium$ +\ElsIf{$quality\ge 3$} + \State $a\gets bad$ +\Else + \State $a\gets unusable$ +\EndIf +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\If{$quality\ge 9$} + \State $a\gets perfect$ +\ElsIf{$quality\ge 7$} + \State $a\gets good$ +\ElsIf{$quality\ge 5$} + \State $a\gets medium$ +\ElsIf{$quality\ge 3$} + \State $a\gets bad$ +\Else + \State $a\gets unusable$ +\EndIf +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{procedure} block} +The \textbf{procedure} block has the form: + +\ASTART +\begin{verbatim} +\Procedure{}{} + +\EndProcedure +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Procedure{$<$name$>$}{$<$params$>$} + \State $<$body$>$ +\EndProcedure +\end{algorithmic} +\AENDSKIP + +\noindent Example: See \euk's\ algorithm on page \pageref{euclid}. + +\subsubsection{The \textbf{function} block}The +\textbf{function} block has the same syntax as the \textbf{procedure} block: + +\ASTART +\begin{verbatim} +\Function{}{} + +\EndFunction +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Function{$<$name$>$}{$<$params$>$} + \State $<$body$>$ +\EndFunction +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{loop} block} +The \textbf{loop} block has the form: + +\ASTART +\begin{verbatim} +\Loop + +\EndLoop +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Loop + \State $<$body$>$ +\EndLoop +\end{algorithmic} +\AEND + +\subsubsection{Other commands in this layout} + +The starting conditions for the algorithm can be described with the \textbf{require} +instruction, and its result with the \textbf{ensure} instruction. + +A procedure call can be formatted with \verb:\Call:. + +\ASTART +\begin{verbatim} +\Require something +\Ensure something +\Statex +\State \Call{Create}{10} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Require something +\Ensure something +\Statex +\State \Call{Create}{10} +\end{algorithmic} +\AENDSKIP + +\noindent Example: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Require $x\ge5$ +\Ensure $x\le-5$ +\Statex +\While{$x>-5$} + \State $x\gets x-1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Require $x\ge5$ +\Ensure $x\le-5$ +\Statex +\While{$x>-5$} + \State $x\gets x-1$ +\EndWhile +\Statex +\end{algorithmic} +\AEND + + + + + +\subsubsection{Package options}\label{algpseudocode package options} + +The \texttt{algpseudocode} package supports the following options: + +\begin{description} +\item[compatible/noncompatible]\ \textit{Obsolote, use the algcompatible layout instead.}\\ +If you would like to use old +algorithms, written with the \old\ package without (too much) +modification, then use the \textbf{compatible} option. This option +defines the uppercase version of the commands. Note that you still need +to remove the \verb:[...]: comments (these comments appeared due to some +limitations in the \old\ package, these limitations and comments are gone now). +The default \textbf{noncompatible} does not define the all uppercase +commands. +\item[noend/end]\ \\With \textbf{noend} specified all \textbf{end \dots} +lines are omitted. You get a somewhat smaller algorithm, and the ugly +feeling, that something is missing\dots{} The \textbf{end} value is the +default, it means, that all \textbf{end \dots} lines are in their right +place. +\end{description} + + +\subsubsection{Changing command names} +One common thing for a pseudocode is to change the command names. Many people +use many different kind of pseudocode command names. In \textbf{algpseudocode} +all keywords are declared as \verb:\algorithmic:. You can change them +to output the text you need: + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\begin{algorithmic}[1] +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x + 1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +\begin{algorithmic}[1] +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x + 1$ +\EndWhile +\Statex +\end{algorithmic} +\end{minipage}\bigskip + +In some cases you may need to change even more (in the above example +\textbf{am\'\i g} and \textbf{v\'ege} should be interchanged in the \verb:\EndWhile: +text). Maybe the number of the parameters taken by some commands must be changed too. +this can be done with the command text customizing macros (see section +\ref{custom text}). Here I'll give only some examples of the most common usage: + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\algrenewtext{EndWhile}{\algorithmicwhile\ \algorithmicend} +\begin{algorithmic}[1] +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x - 1$ +\EndWhile +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +\begin{algorithmic}[1] +\algrenewcommand\algorithmicwhile{\textbf{am\'\i g}} +\algrenewcommand\algorithmicdo{\textbf{v\'egezd el}} +\algrenewcommand\algorithmicend{\textbf{v\'ege}} +\algrenewtext{EndWhile}{\algorithmicwhile\ \algorithmicend} +\State $x \gets 1$ +\While{$x < 10$} + \State $x \gets x - 1$ +\EndWhile +\Statex +\end{algorithmic} +\end{minipage} + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algnewcommand\algorithmicto{\textbf{to}} +\algrenewtext{For}[3]% + {\algorithmicfor\ #1 \gets #2 \algorithmicto\ #3 \algorithmicdo} +\begin{algorithmic}[1] +\State $p \gets 1$ +\For{i}{1}{n} + \State $p \gets p * i$ +\EndFor +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +\begin{algorithmic}[1] +\algnewcommand\algorithmicto{\textbf{to}} +\algrenewtext{For}[3]% + {\algorithmicfor\ $#1 \gets #2$ \algorithmicto\ $#3$ \algorithmicdo} +\State $p \gets 1$ +\For{i}{1}{n} + \State $p \gets p * i$ +\EndFor +\Statex +\end{algorithmic} +\end{minipage}\bigskip + +You could create a translation package, that included after the \textbf{algpseudocode} +package translates the keywords to the language you need. + + + + + +\subsection{The \textbf{algpascal} layout} +\alglanguage{pascal} + + + +The most important feature of the \textbf{algpascal} layout is that +\textit{it performs automatically the block indentation}. In +section \ref{algorithmicx} you will see how to define such +automatically indented loops. Here is an example to demonstrate this +feature: + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Begin +\State $sum:=0$; +\For{i=1}{n}\Comment{sum(i)} + \State $sum:=sum+i$; +\State writeln($sum$); +\End. +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Begin +\State $sum:=0$; +\For{i=1}{n}\Comment{sum(i)} + \State $sum:=sum+i$; +\State writeln($sum$); +\End. +\Statex +\end{algorithmic} +\AENDSKIP + +Note, that the \verb:\For: is not closed explicitly, its end is +detected automatically. Again, the indentation in the source doesn't +affect the output. +In this layout every parameter passed to a command is put in +mathematical mode. + +\subsubsection{The \textbf{begin} \dots{} \textbf{end} block} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Begin + +\End +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Begin + \State $<$body$>$ +\End +\end{algorithmic} +\AENDSKIP + +The \verb:\Begin: \dots{} \verb:\End: block and the +\verb:\Repeat: \dots{} \verb:\Until: block are the only blocks in +the \textbf{algpascal} style (instead of \verb:\Begin: you may write +\verb:\Asm:). This means, that every other loop is ended automatically +after the following command (another loop, or a block). + + + +\subsubsection{The \textbf{for} loop} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\For{}{} + +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\For{<$\relax$assign$\relax$>}{<$\relax$expr$\relax$>} + \State $<$command$>$ +\end{algorithmic} +\AENDSKIP + +The \textbf{For} loop (as all other loops) ends after the following command (a block counts +also as a single command). + +\ASTART +\begin{verbatim} +\begin{algorithmic}[1] +\Begin + \State $sum:=0$; + \State $prod:=1$; + \For{i:=1}{10} + \Begin + \State $sum:=sum+i$; + \State $prod:=prod*i$; + \End +\End. +\end{algorithmic} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Begin + \State $sum:=0$; + \State $prod:=1$; + \For{i:=1}{10} + \Begin + \State $sum:=sum+i$; + \State $prod:=prod*i$; + \End +\End. +\Statex +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{while} loop} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\While{} + +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\While{<$\relax$expression$\relax$>} + \State $<$command$>$ +\end{algorithmic} +\AEND + + +\subsubsection{The \textbf{repeat}\dots\ \textbf{until} block} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Repeat + +\Until{} +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Repeat + \State $<$body$>$ +\Until{<$\relax$expression$\relax$>} +\end{algorithmic} +\AEND + +\subsubsection{The \textbf{if} command} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\If{} + +[ +\Else + +] +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\If{<$\relax$expression$\relax$>} + \State $<$command$>$ +\Statex \hskip-\algorithmicindent\hskip-\algorithmicindent[ +\Else + \State $<$command$>$ +\Statex \hskip-\algorithmicindent\hskip-\algorithmicindent] +\end{algorithmic} +\AENDSKIP + +Every \verb:\Else: matches the nearest \verb:\If:. + +\subsubsection{The \textbf{procedure} command} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Procedure +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Procedure $<$some text$>$ +\end{algorithmic} +\AENDSKIP + +\verb:\Procedure: just writes the ``procedure'' word on a new +line... You will probably put a \verb:\Begin:\dots\ \verb:\End: +block after it. + + +\subsubsection{The \textbf{function} command} + +\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\Function +\end{verbatim} +\ACONTINUE +\begin{algorithmic}[1] +\Function $<$some text$>$ +\end{algorithmic} +\AENDSKIP + +Just like \textbf{Procedure}. + + + +\subsection{The \textbf{algc} layout} + +Sorry, the \textbf{algc} layout is unfinished. +The commands defined are: + +\begin{itemize} +\item\verb:\{:\dots\ \verb:\}: block +\item\verb:\For: with 3 params +\item\verb:\If: with 1 param +\item\verb:\Else: with no params +\item\verb:\While: with 1 param +\item\verb:\Do: with no params +\item\verb:\Function: with 3 params +\item\verb:\Return: with no params +\end{itemize} + + + + +\section{Custom algorithmic blocks}\label{algorithmicx} +\alglanguage{default} + + + +\subsection{Blocks and loops} + +Most of the environments defined in the standard layouts (and most probably +the ones you will define) are divided in two categories: + +\begin{description} +\item[Blocks] are the environments witch contain an arbitrary number of +commands or nested blocks. Each block has a name, begins with a starting command +and ends with an ending command. The commands in a block are +indented by \verb:\algorithmicindent: (or another amount). + +If your algorithm ends without closing all blocks, the \alg\ package gives +you a nice error. So be good, and close them all! + +Blocks are all the environments defined in the \verb:algpseudocode: +package, the \verb:\Begin: \dots \verb:\End: block in the +\verb:algpascal: package, and some other ones. +\item[Loops] (Let us call them loops\dots) The loops are environments +that include only one command, loop or block; a loop is closed +automatically after this command. So loops have no ending commands. If +your algorithm (or a block) ends before the single command of a loop, +then this is considered an empty command, and the loop is closed. Feel +free to leave open loops at the end of blocks! + +Loops are most of the environments in the \verb:algpascal: and +\verb:algc: packages. +\end{description} + +For some rare constructions you can create mixtures of the two +environments (see section \ref{setblock}). +Each block and loop may be continued with another one (like the \verb:If: +with \verb:Else:). + +\subsection{Defining blocks}\label{defblocks} + +There are several commands to define blocks. The difference is in what is defined +beyond the block. The macro \verb:\algblock: defines a new block with starting and +ending entity. + +\begin{verbatim} +\algblock[]{}{} +\end{verbatim} + +The defined commands have no parameters, and the text displayed by them is +\verb:\textbf{}: and \verb:\textbf{}:. You can change these texts later +(\ref{custom text}). + +With \verb:\algblockdefx: you can give the text to be output by the starting +and ending command and the number of parameters for these commands. In the text +reference with \#$n$ to the parameter number $n$. Observe that the text +is given in the form you define or redefine macros, and really, this is what happens. + +\begin{verbatim} +\algblockdefx[]{}{} + [][]{} + [][]{} +\end{verbatim} + +This defines a new block called \verb::, \verb:: opens the block, +\verb:: closes the block, +\verb:: displays \verb::, and has \verb:: parameters, +\verb:: displays \verb::, and has \verb:: parameters. +For both \verb:: and \verb::, if +\verb:: is given, then the first parameter is optional, and its default value +is \verb::. + +If you want to display different text (and to have a different number of parameters) +for \verb:: at the end of different blocks, then use +the \verb:\algblockx: macro. Note that it is not possible to display different starting texts, +since it is not possible to start different blocks with the same command. The \verb:: +defined with \verb:\algblockx: has the same behavior as if defined with \verb:\algblockdefx:. All ending commands +not defined with \verb:\algblockx: will display the same text, and the ones defined with this +macro will display the different texts you specified. + +\begin{verbatim} +\algblockx[]{}{} + [][]{} + [][]{} +\end{verbatim} + +If in the above definitions the \verb:: is missing, then the name of the starting command +is used as block name. If a block with the given name +already exists, these macros don't define a new block, instead this it will be used the defined +block. If \verb:: or \verb:: is empty, then +the definition does not define a new starting/ending command for the block, and then the +respective text must be missing from the definition. You may have more starting and ending commands +for one block. If the block name is missing, then a starting command must be given. + + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algblock[Name]{Start}{End} +\algblockdefx[NAME]{START}{END}% + [2][Unknown]{Start #1(#2)}% + {Ending} +\algblockdefx[NAME]{}{OTHEREND}% + [1]{Until (#1)} +\begin{algorithmic}[1] +\Start + \Start + \START[One]{x} + \END + \START{0} + \OTHEREND{\texttt{True}} + \End + \Start + \End +\End +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algblock[Name]{Start}{End} +\algblockdefx[NAME]{START}{END}% + [2][Unknown]{Start #1(#2)}% + {Ending} +\algblockdefx[NAME]{}{OTHEREND}% + [1]{Until (#1)} +\begin{algorithmic}[1] +\Start + \Start + \START[One]{x} + \END + \START{0} + \OTHEREND{\texttt{True}} + \End + \Start + \End +\End +\Statex +\end{algorithmic} +} +\end{minipage} + +\subsection{Defining loops} + +The loop defining macros are similar to the block defining macros. A loop has no ending command +and ends after the first state, block or loop that follows the loop. +Since loops have no ending command, the macro \verb:\algloopx: would not have mutch sense. +The loop defining macros are: + +\begin{verbatim} +\algloop[]{} + +\algloopdefx[]{} + [][]{} +\end{verbatim} + +Both create a loop named \verb:: with the starting command \verb::. +The second also sets the number of parameters, and the text displayed by the starting command. + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algloop{For} +\algloopdefx{If}[1]{\textbf{If} #1 \textbf{then}} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\For + \Begin + \If{$a < b$} + \For + \Begin + \End + \Begin + \End + \End +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algloop{For} +\algloopdefx{If}% + [1]{\textbf{If} #1 \textbf{then}} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\For + \Begin + \If{$a < b$} + \For + \Begin + \End + \Begin + \End + \End +\Statex +\end{algorithmic} +} +\end{minipage} + +\subsection{Continuing blocks and loops} + +For each block/loop you may give commands that close the block or loop and open another +block or loop. A good example for this is the \textbf{if}~\dots~\textbf{then}~\dots~\textbf{else} +construct. The new block or loop can be closed or continued, as any other blocks and loops. + +To create a continuing block use one of the following: + +\begin{verbatim} +\algcblock[]{}{}{} + +\algcblockdefx[]{}{}{} + [][]{} + [][]{} + +\algcblockx[]{}{}{} + [][]{} + [][]{} +\end{verbatim} + +All three macros define a new block named \verb::. If \verb:: is not given, +then \verb:: is used as the new block name. It is not allowed to have both +\verb:: missing, and \verb:: empty. The \verb:: command ends the +\verb:: block/loop and opens the \verb:: block. Since \verb:: may +end different blocks and loops, it can have different text +at the end of the different blocks/loops. If the \verb:: command doesn't find an +\verb:: to close, then an error is reported. + +Create continuing loops with the followings: + +\begin{verbatim} +\algcloop[]{}{} + +\algcloopdefx[]{}{} + [][]{} + +\algcloopx[]{}{} + [][]{} +\end{verbatim} + +These macros create a continuing loop, the \verb:: closes the \verb:: +block/loop, and opens a \verb:: loop. + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algblock{If}{EndIf} +\algcblock[If]{If}{ElsIf}{EndIf} +\algcblock{If}{Else}{EndIf} +\algcblockdefx[Strange]{If}{Eeee}{Oooo} + [1]{\textbf{Eeee} "#1"} + {\textbf{Wuuuups\dots}} +\begin{algorithmic}[1] +\If + \If + \ElsIf + \ElsIf + \If + \ElsIf + \Else + \EndIf + \EndIf + \If + \EndIf +\Eeee{Creep} +\Oooo +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algblock{If}{EndIf} +\algcblock[If]{If}{ElsIf}{EndIf} +\algcblock{If}{Else}{EndIf} +\algcblockdefx[Strange]{If}{Eeee}{Oooo} + [1]{\textbf{Eeee} "#1"} + {\textbf{Wuuuups\dots}} +\begin{algorithmic}[1] +\If + \If + \ElsIf + \ElsIf + \If + \ElsIf + \Else + \EndIf + \EndIf + \If + \EndIf +\Eeee{Creep} +\Oooo +\Statex +\end{algorithmic} +} +\end{minipage}\bigskip + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algloop{If} +\algcloop{If}{Else} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\If + \Begin + \End +\Else + \If + \Begin + \End +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algloop{If} +\algcloop{If}{Else} +\algblock{Begin}{End} +\begin{algorithmic}[1] +\If + \Begin + \End +\Else + \If + \Begin + \End +\Statex +\end{algorithmic} +} +\end{minipage}\bigskip + + + +\subsection{Even more customisation}\label{setblock} + +With the following macros you can give the indentation used by the new block (or loop), +and the number of stataments after that the "block" is automatically closed. This value is $\infty$ +for blocks, 1 for loops, and 0 for stataments. There is a special value, 65535, meaning that the +defined "block" does not end automatically, but if it is enclosed in a block, then the ending +command of the block closes this "block" as well. + +\begin{verbatim} +\algsetblock[]{}{} + {}{} + +\algsetblockdefx[]{}{} + {}{} + [][]{} + [][]{} + +\algsetblockx[]{}{} + {}{} + [][]{} + [][]{} + +\algcsetblock[]{}{}{} + {}{} + +\algcsetblockdefx[]{}{}{} + {}{} + [][]{} + [][]{} + +\algcsetblockx[]{}{}{} + {}{} + [][]{} + [][]{} +\end{verbatim} + +The \verb:: is the number of stataments after that the block is closed. An empty +\verb:: field means $\infty$. The \verb:: gives the indentation of the block. +Leave this field empty for the default indentation. The rest of the parameters has the same +function as for the previous macros. + +\bigskip\noindent\begin{minipage}[b]{0.5\linewidth} +\begin{verbatim} +\algsetblock[Name]{Start}{Stop}{3}{1cm} +\algsetcblock[CName]{Name}{CStart}{CStop}{2}{2cm} +\begin{algorithmic}[1] +\Start + \State 1 + \State 2 + \State 3 +\State 4 +\Start + \State 1 +\Stop +\State 2 +\Start + \State 1 +\CStart + \State 1 + \State 2 +\State 3 +\Start + \State 1 +\CStart + \State 1 +\CStop +\end{algorithmic} +\end{verbatim} +\end{minipage} +\begin{minipage}[b]{0.5\linewidth} +{ +\algsetblock[Name]{Start}{Stop}{3}{1cm} +\algsetcblock[CName]{Name}{CStart}{CStop}{2}{2cm} +\begin{algorithmic}[1] +\Start + \State 1 + \State 2 + \State 3 +\State 4 +\Start + \State 1 +\Stop +\State 2 +\Start + \State 1 +\CStart + \State 1 + \State 2 +\State 3 +\Start + \State 1 +\CStart + \State 1 +\CStop +\Statex +\end{algorithmic} +} +\end{minipage}\bigskip + +The created environments behave as follows: + +\begin{itemize} +\item It starts with \verb:\Start:. The nested environments are +indented by 1 cm. +\item If it is followed by at least 3 environments (stataments), then it closes +automatically after the third one. +\item If you put a \verb:\Stop: before the automatic closure, then this +\verb:\Stop: closes the environment. \verb:CStart: closes a block called \verb:Name: +and opens a new one called \verb:CName: and having an indentaion of 2 cm. +\item \verb:CName: can be closed with \verb:CStop: or it is closed automatically after +2 environments. +\end{itemize} + + + +\subsection{Parameters, custom text}\label{custom text} + +With \verb:\algrenewtext: you can change the number of parameters, and the text displayed by the +commands. With \verb:algnotext: you can makes the vole output line disappear, but +it works only for ending commands, for beginning commands you will get an incorrect output. + +\begin{verbatim} +\algrenewcommand[]{} + [][]{} + +\algnotext[]{} +\end{verbatim} + +If \verb:: is missing, then the default text is changed, and if \verb:: is given, +then the text displayed at the end of \verb:: is changed. + +To make a command output the default text at the end of a block (say, you have changed the text +for this block), use \verb:\algdefaulttext:. + +\begin{verbatim} +\algdefaulttext[]{} +\end{verbatim} + +If the \verb:: is missing, than the default text itself will be set to the default value +(this is \verb:\textbf{}:). + + + +\subsection{The ONE defining macro} + +All block and loop defining macros call the same macro. You may use this macro to gain a +better acces to what will be defined. This macro is \verb:\algdef:. + +\begin{verbatim} +\algdef{}... +\end{verbatim} + +Depending on the flags the macro can have many forms. + +\begin{center} +\begin{tabular}{|c|l|} +\hline +\textbf{Flag}&\textbf{Meaning}\\ +\hline +s&starting command, without text\\ +S&starting command with text\\ +c&continuing command, without text\\ +C&continuing command, with default text\\ +xC&continuing command, with block specific text\\ +\hline +e&ending command, without text\\ +E&continuing command, with default text\\ +xE&continuing command, with block specific text\\ +N&ending command, with default "no text"\\ +xN&ending command, with no text for this block\\ +\hline +b&block(default)\\ +l&loop\\ +L&loop closes after the given number of stataments\\ +\hline +i&indentation specified\\ +\hline +\end{tabular} +\end{center} + +The \verb:: may be given for any combination of flags, and it is not allowed to have +\verb:: missing and \verb:: missing/empty. +For c, C, xC an old block is expected. For s, S, c, C, xC the \verb:: must be given. +For e, E, xE, N, xN the \verb:: must be given. For L the \verb:: must be given. +For i the \verb:: must be given. +For S, C, xC the starting text and related infos must be given. For E, xE the ending text must be given. +For each combination of flags give only the needed parameters, in the following order: + +\begin{verbatim} +\algdef{}[]{}{}{} + {}{} + [][]{} + [][]{} +\end{verbatim} + +The block and loop defining macros call \verb:\algdef: with the following flags: +\begin{center} +\begin{tabular}{|l|l|} +\hline +\textbf{Macro}&\textbf{Meaning}\\ +\hline +\verb:\algblock:&\verb:\algdef{se}:\\ +\hline +\verb:\algcblock:&\verb:\algdef{ce}:\\ +\hline +\verb:\algloop:&\verb:\algdef{sl}:\\ +\hline +\verb:\algcloop:&\verb:\algdef{cl}:\\ +\hline +\verb:\algsetblock:&\verb:\algdef{seLi}:\\ +\hline +\verb:\algsetcblock:&\verb:\algdef{ceLi}:\\ +\hline +\verb:\algblockx:&\verb:\algdef{SxE}:\\ +\hline +\verb:\algblockdefx:&\verb:\algdef{SE}:\\ +\hline +\verb:\algcblockx:&\verb:\algdef{CxE}:\\ +\hline +\verb:\algcblockdefx:&\verb:\algdef{CE}:\\ +\hline +\verb:\algsetblockx:&\verb:\algdef{SxELi}:\\ +\hline +\verb:\algsetblockdefx:&\verb:\algdef{SELi}:\\ +\hline +\verb:\algsetcblockx:&\verb:\algdef{CxELi}:\\ +\hline +\verb:\algsetcblockdefx:&\verb:\algdef{CELi}:\\ +\hline +\verb:\algloopdefx:&\verb:\algdef{Sl}:\\ +\hline +\verb:\algcloopx:&\verb:\algdef{Cxl}:\\ +\hline +\verb:\algcloopdefx:&\verb:\algdef{Cl}:\\ +\hline +\end{tabular} +\end{center} + + +\vfill +\section{Examples} +\subsection{A full example using \textbf{algpseudocode}} + + +\begin{verbatim} +\documentclass{article} +\usepackage{algorithm} +\usepackage{algpseudocode} +\begin{document} +\begin{algorithm} +\caption{The Bellman-Kalaba algorithm} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\Statex +\Procedure {FindPathBK}{$v$, $u$, $p$} + \If {$v = u$} + \State \textbf{Write} $v$ + \Else + \State $w \leftarrow v$ + \While {$w \not= u$} + \State \textbf{Write} $w$ + \State $w \leftarrow p(w)$ + \EndWhile + \EndIf +\EndProcedure +\end{algorithmic} +\end{algorithm} +\end{document} +\end{verbatim} +\eject + + +\alglanguage{pseudocode} +\begin{algorithm}[h] +\caption{The Bellman-Kalaba algorithm} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\Statex +\Procedure {FindPathBK}{$v$, $u$, $p$} + \If {$v = u$} + \State \textbf{Write} $v$ + \Else + \State $w \leftarrow v$ + \While {$w \not= u$} + \State \textbf{Write} $w$ + \State $w \leftarrow p(w)$ + \EndWhile + \EndIf +\EndProcedure +\end{algorithmic} +\end{algorithm} +\eject + + + + +\subsection{Breaking up an algorithm} + + +\begin{verbatim} +\documentclass{article} +\usepackage{algorithm} +\usepackage{algpseudocode} +\begin{document} +\begin{algorithm} +\caption{Part 1} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State \Comment For some reason we need to break here! +\algstore{bkbreak} +\end{algorithmic} +\end{algorithm} + +And we need to put some additional text between\dots + +\begin{algorithm}[h] +\caption{Part 2} +\begin{algorithmic}[1] +\algrestore{bkbreak} + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\end{algorithmic} +\end{algorithm} +\end{document} +\end{verbatim} +\eject + + +\alglanguage{pseudocode} +\begin{algorithm}[h] +\caption{Part 1} +\begin{algorithmic}[1] +\Procedure {BellmanKalaba}{$G$, $u$, $l$, $p$} + \ForAll {$v \in V(G)$} + \State $l(v) \leftarrow \infty$ + \EndFor + \State $l(u) \leftarrow 0$ + \Repeat + \For {$i \leftarrow 1, n$} + \State $min \leftarrow l(v_i)$ + \For {$j \leftarrow 1, n$} + \If {$min > e(v_i, v_j) + l(v_j)$} + \State $min \leftarrow e(v_i, v_j) + l(v_j)$ + \State \Comment For some reason we need to break here! +\algstore{bkbreak} +\end{algorithmic} +\end{algorithm} + +And we need to put some additional text between\dots + +\begin{algorithm}[h] +\caption{Part 2} +\begin{algorithmic}[1] +\algrestore{bkbreak} + \State $p(i) \leftarrow v_j$ + \EndIf + \EndFor + \State $l'(i) \leftarrow min$ + \EndFor + \State $changed \leftarrow l \not= l'$ + \State $l \leftarrow l'$ + \Until{$\neg changed$} +\EndProcedure +\end{algorithmic} +\end{algorithm} +\eject + + + + +\subsection{Using multiple layouts} + + +\begin{verbatim} +\documentclass{article} +\usepackage{algorithm} +\usepackage{algpseudocode} +\usepackage{algpascal} +\begin{document} + +\alglanguage{pseudocode} +\begin{algorithm} +\caption{A small pseudocode} +\begin{algorithmic}[1] +\State $s \gets 0$ +\State $p \gets 0$ +\For{$i \gets 1,\, 10$} + \State $s \gets s + i$ + \State $p \gets p + s$ +\EndFor +\end{algorithmic} +\end{algorithm} + +\alglanguage{pascal} +\begin{algorithm} +\caption{The pascal version} +\begin{algorithmic}[1] +\State $s := 0$ +\State $p := 0$ +\For{i = 1}{10} + \Begin + \State $s := s + i$ + \State $p := p + s$ + \End +\end{algorithmic} +\end{algorithm} + +\end{document} +\end{verbatim} +\eject + + +\alglanguage{pseudocode} +\begin{algorithm} +\caption{A small pseudocode} +\begin{algorithmic}[1] +\State $s \gets 0$ +\State $p \gets 0$ +\For{$i \gets 1,\, 10$} + \State $s \gets s + i$ + \State $p \gets p + s$ +\EndFor +\end{algorithmic} +\end{algorithm} + +\alglanguage{pascal} +\begin{algorithm} +\caption{The pascal version} +\begin{algorithmic}[1] +\State $s := 0$ +\State $p := 0$ +\For{i = 1}{10} + \Begin + \State $s := s + i$ + \State $p := p + s$ + \End +\end{algorithmic} +\end{algorithm} +\eject + + + +\section{Bugs} + +If you have a question or find a bug you can contact me on: + +\medskip +\textbf{szaszjanos@users.sourceforge.net} + +\medskip +\noindent If possible, please create a small \LaTeX{} example related to your problem. + + + +\end{document} diff --git a/macros/latex/contrib/algorithmicx/algpascal.sty b/macros/latex/contrib/algorithmicx/algpascal.sty new file mode 100644 index 0000000000..0c9a57779f --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algpascal.sty @@ -0,0 +1,44 @@ +% A PASCAL LIKE ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@sourceforge.net +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algpascal}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - pascal environments for the `algorithmicx' style}% +% +\ProcessOptions% +% +% +% *** DECLARATIONS *** +% +% +\algnewlanguage{pascal}% +\alglanguage{pascal}% +% +% *** KEYWORDS *** +% +\algnewcommand\textkeyword{\textbf}% +% +% *** DECLARED BLOCKS AND LOOPS *** +% +\algdef{SEi}{Begin}{End}{0cm}{\textkeyword{begin}}{\textkeyword{end}}% +\algdef{Sei}{Asm}{End}{0cm}{\textkeyword{asm}}% +% +\algdef{lS}{For}[2]{\textkeyword{for} \(#1\) \textkeyword{to} \(#2\) \textkeyword{do}}% +\algdef{lS}{While}[1]{\textkeyword{while} \(#1\) \textkeyword{do}}% +\algdef{lS}{With}[1]{\textkeyword{with}\ \(#1\) \textkeyword{do}}% +\algdef{SE}{Repeat}{Until}{\textkeyword{repeat}}[1]{\textkeyword{until}\ \(#1\)}% +\algdef{lS}{If}[1]{\textkeyword{if}\ \(#1\) \textkeyword{then}}% +\algdef{lC}{If}{Else}{\textkeyword{else}}% +% +% *** OTHER DECLARATIONS *** +% +\algnewcommand\Procedure{\State\textkeyword{procedure}\space}% +\algnewcommand\Function{\State\textkeyword{function}\space}% +% +\algrenewcomment[1]{\hfill\{#1\}}% +% diff --git a/macros/latex/contrib/algorithmicx/algpseudocode.sty b/macros/latex/contrib/algorithmicx/algpseudocode.sty new file mode 100644 index 0000000000..fca966ac65 --- /dev/null +++ b/macros/latex/contrib/algorithmicx/algpseudocode.sty @@ -0,0 +1,92 @@ +% PSEUDOCODE ALGORITHMIC STYLE -- Released 27 APR 2005 +% for LaTeX version 2e +% +% Copyright Szasz Janos +% E-mail szaszjanos@users.sourceforge.net +% Based on Peter Williams's algorithmic.sty +% +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{algpseudocode}% +\RequirePackage{ifthen}% +\RequirePackage{algorithmicx}% +\typeout{Document Style - pseudocode environments for use with the `algorithmicx' style}% +% +\def\ALG@noend{f}% +\newboolean{ALG@compatible}% +\setboolean{ALG@compatible}{false}% +% +\DeclareOption{noend}{\def\ALG@noend{t}}% +\DeclareOption{end}{\def\ALG@noend{f}}% +\DeclareOption{compatible}{\typeout{For compatibility mode use algcompatible.sty!!!}\setboolean{ALG@compatible}{true}}% +\DeclareOption{noncompatible}{\setboolean{ALG@noncompatible}{false}}% +\ProcessOptions% +% +% *** DECLARATIONS *** +% +\algnewlanguage{pseudocode}% +\alglanguage{pseudocode}% +% +% *** KEYWORDS *** +% +\algnewcommand\algorithmicend{\textbf{end}} +\algnewcommand\algorithmicdo{\textbf{do}} +\algnewcommand\algorithmicwhile{\textbf{while}} +\algnewcommand\algorithmicfor{\textbf{for}} +\algnewcommand\algorithmicforall{\textbf{for all}} +\algnewcommand\algorithmicloop{\textbf{loop}} +\algnewcommand\algorithmicrepeat{\textbf{repeat}} +\algnewcommand\algorithmicuntil{\textbf{until}} +\algnewcommand\algorithmicprocedure{\textbf{procedure}} +\algnewcommand\algorithmicfunction{\textbf{function}} +\algnewcommand\algorithmicif{\textbf{if}} +\algnewcommand\algorithmicthen{\textbf{then}} +\algnewcommand\algorithmicelse{\textbf{else}} +\algnewcommand\algorithmicrequire{\textbf{Require:}} +\algnewcommand\algorithmicensure{\textbf{Ensure:}} +\algnewcommand\algorithmicreturn{\textbf{return}} +\algnewcommand\textproc{\textsc} +% +% *** DECLARED LOOPS *** +% +\algdef{SE}[WHILE]{While}{EndWhile}[1]{\algorithmicwhile\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicwhile}% +\algdef{SE}[FOR]{For}{EndFor}[1]{\algorithmicfor\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicfor}% +\algdef{S}[FOR]{ForAll}[1]{\algorithmicforall\ #1\ \algorithmicdo}% +\algdef{SE}[LOOP]{Loop}{EndLoop}{\algorithmicloop}{\algorithmicend\ \algorithmicloop}% +\algdef{SE}[REPEAT]{Repeat}{Until}{\algorithmicrepeat}[1]{\algorithmicuntil\ #1}% +\algdef{SE}[IF]{If}{EndIf}[1]{\algorithmicif\ #1\ \algorithmicthen}{\algorithmicend\ \algorithmicif}% +\algdef{C}[IF]{IF}{ElsIf}[1]{\algorithmicelse\ \algorithmicif\ #1\ \algorithmicthen}% +\algdef{Ce}[ELSE]{IF}{Else}{EndIf}{\algorithmicelse}% +\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}% + [2]{\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% + {\algorithmicend\ \algorithmicprocedure}% +\algdef{SE}[FUNCTION]{Function}{EndFunction}% + [2]{\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% + {\algorithmicend\ \algorithmicfunction}% +% +\ifthenelse{\equal{\ALG@noend}{t}}% + {% + \algtext*{EndWhile}% + \algtext*{EndFor}% + \algtext*{EndLoop}% + \algtext*{EndIf}% + \algtext*{EndProcedure}% + \algtext*{EndFunction}% + }{}% +% +% *** OTHER DECLARATIONS *** +% +\algnewcommand\Require{\item[\algorithmicrequire]}% +\algnewcommand\Ensure{\item[\algorithmicensure]}% +\algnewcommand\Return{\algorithmicreturn{} }% +\algnewcommand\Call[2]{\textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% +% +% +% +\ifthenelse{\boolean{ALG@compatible}}% + {% + \ifthenelse{\equal{\ALG@noend}{t}}% + {\RequirePackage[noend]{algcompatible}}% + {\RequirePackage{algcompatible}}% + }% + {}% +% -- cgit v1.2.3