From c7bf3f5a728fcb426d1aa38fbec211d4344a3725 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 3 Oct 2021 03:01:24 +0000 Subject: CTAN sync 202110030301 --- FILES.byname | 1587 +- FILES.byname.gz | Bin 2388479 -> 2388731 bytes FILES.last07days | 1060 +- graphics/circuit_macros/CHANGES | 4 + graphics/circuit_macros/Copying | 2 +- graphics/circuit_macros/README | 2 +- graphics/circuit_macros/darrow.m4 | 2 +- graphics/circuit_macros/doc/CapacitorsMan.m4 | 8 +- graphics/circuit_macros/doc/Circuit_macros.html | 8601 ++++++ graphics/circuit_macros/doc/Circuit_macros.pdf | Bin 973559 -> 978438 bytes graphics/circuit_macros/doc/ConfigA.m4 | 1 + graphics/circuit_macros/doc/ConfigB.m4 | 1 + graphics/circuit_macros/doc/ConfigC.m4 | 1 + graphics/circuit_macros/doc/Flowdiag.m4 | 2 + graphics/circuit_macros/doc/Makefile | 1 + graphics/circuit_macros/doc/MoreTableMan.m4 | 13 +- graphics/circuit_macros/doc/ResistorsMan.m4 | 22 +- graphics/circuit_macros/doc/Taps.m4 | 2 +- graphics/circuit_macros/doc/Version.tex | 2 +- graphics/circuit_macros/doc/arrowex.m4 | 33 + graphics/circuit_macros/doc/body.tex | 61 +- graphics/circuit_macros/doc/defines.tex | 89 +- graphics/circuit_macros/dpictools.pic | 2 +- graphics/circuit_macros/examples/ASME_Y14-5.m4 | 10 +- graphics/circuit_macros/examples/AntiqueClock.m4 | 145 + graphics/circuit_macros/examples/Capacitors.m4 | 14 +- graphics/circuit_macros/examples/Crow.m4 | 3 +- graphics/circuit_macros/examples/Geometry.m4 | 30 +- graphics/circuit_macros/examples/Inductors.m4 | 5 +- .../circuit_macros/examples/IntersectingPlanes.m4 | 84 + graphics/circuit_macros/examples/Makefile | 6 +- graphics/circuit_macros/examples/Metamodel.m4 | 78 + graphics/circuit_macros/examples/MoreTable.m4 | 11 +- graphics/circuit_macros/examples/Resistors.m4 | 22 +- graphics/circuit_macros/examples/Rotbox.m4 | 3 +- graphics/circuit_macros/examples/Shaky.m4 | 45 +- graphics/circuit_macros/examples/birds.m4 | 2 + graphics/circuit_macros/examples/control.m4 | 14 +- graphics/circuit_macros/examples/ex01.m4 | 8 +- graphics/circuit_macros/examples/examples.pdf | Bin 893291 -> 892920 bytes graphics/circuit_macros/examples/examples.tex | 6 +- graphics/circuit_macros/examples/files.tex | 55 +- graphics/circuit_macros/examples/mf/cct.mf | 2 +- graphics/circuit_macros/examples/squiggle.m4 | 3 +- graphics/circuit_macros/examples/svg/ByteSVG.m4 | 2 +- .../circuit_macros/examples/svg/CapacitorsSVG.m4 | 9 +- graphics/circuit_macros/examples/svg/ChipsSVG.m4 | 2 +- graphics/circuit_macros/examples/svg/EEPSVG.m4 | 56 +- .../circuit_macros/examples/svg/GeometrySVG.m4 | 35 +- .../circuit_macros/examples/svg/MoreTableSVG.m4 | 2 + .../circuit_macros/examples/svg/ResistorsSVG.m4 | 30 +- graphics/circuit_macros/examples/svg/RotboxSVG.m4 | 5 +- graphics/circuit_macros/examples/svg/SLD.m4 | 389 + .../circuit_macros/examples/svg/SchottkySVG.m4 | 2 +- graphics/circuit_macros/examples/svg/ex01SVG.m4 | 8 +- .../circuit_macros/examples/svg/examplesSVG.htmx | 67 +- graphics/circuit_macros/examples/svg/tstSVG.htmx | 261 +- graphics/circuit_macros/examples/xfig/xfiglib.fig | 4 +- graphics/circuit_macros/gpic.m4 | 2 +- graphics/circuit_macros/lib3D.m4 | 2 +- graphics/circuit_macros/libcct.m4 | 139 +- graphics/circuit_macros/libgen.m4 | 178 +- graphics/circuit_macros/liblog.m4 | 2 +- graphics/circuit_macros/mfpic.m4 | 2 +- graphics/circuit_macros/mpost.m4 | 2 +- graphics/circuit_macros/pgf.m4 | 2 +- graphics/circuit_macros/postscript.m4 | 2 +- graphics/circuit_macros/psfrag.m4 | 2 +- graphics/circuit_macros/pstricks.m4 | 2 +- graphics/circuit_macros/svg.m4 | 3 +- graphics/circuit_macros/xfig.m4 | 2 +- .../pstricks/contrib/pedigree/pedigree-perl/NEWS | 6 +- .../contrib/pedigree/pedigree-perl/Pedigree.3 | 66 +- .../contrib/pedigree/pedigree-perl/Pedigree.pm | 6 +- .../pedigree/pedigree-perl/Pedigree/AbortionNode.3 | 52 +- .../pedigree-perl/Pedigree/AbortionNode.pm | 3 +- .../contrib/pedigree/pedigree-perl/Pedigree/Area.3 | 114 +- .../pedigree/pedigree-perl/Pedigree/Area.pm | 3 +- .../pedigree-perl/Pedigree/ChildlessNode.3 | 57 +- .../pedigree-perl/Pedigree/ChildlessNode.pm | 5 +- .../pedigree/pedigree-perl/Pedigree/Language.3 | 93 +- .../pedigree/pedigree-perl/Pedigree/Language.pm | 2 +- .../pedigree/pedigree-perl/Pedigree/Makefile | 2 +- .../pedigree/pedigree-perl/Pedigree/MarriageNode.3 | 94 +- .../pedigree-perl/Pedigree/MarriageNode.pm | 3 +- .../contrib/pedigree/pedigree-perl/Pedigree/Node.3 | 232 +- .../pedigree/pedigree-perl/Pedigree/Node.pm | 5 +- .../pedigree/pedigree-perl/Pedigree/Parser.3 | 51 +- .../pedigree/pedigree-perl/Pedigree/Parser.pm | 3 +- .../pedigree/pedigree-perl/Pedigree/PersonNode.3 | 118 +- .../pedigree/pedigree-perl/Pedigree/PersonNode.pm | 4 +- .../pedigree/pedigree-perl/Pedigree/TwinsNode.3 | 59 +- .../pedigree/pedigree-perl/Pedigree/TwinsNode.pm | 3 +- .../pstricks/contrib/pedigree/pedigree-perl/README | 4 +- .../contrib/pedigree/pedigree-perl/doc/Makefile | 4 +- .../pedigree/pedigree-perl/doc/abortions.tex | 2 +- .../contrib/pedigree/pedigree-perl/doc/english.tex | 18 +- .../pedigree/pedigree-perl/doc/english1.tex | 38 +- .../pedigree/pedigree-perl/doc/pedigree.pdf | Bin 287012 -> 304837 bytes .../contrib/pedigree/pedigree-perl/doc/pedigree.ps | 27305 ------------------- .../contrib/pedigree/pedigree-perl/doc/russian.tex | 4 +- .../contrib/pedigree/pedigree-perl/pedigree.1 | 42 +- .../contrib/pedigree/pedigree-perl/pedigree.pl | 32 +- info/tex-vpat/LICENSE | 7 + info/tex-vpat/Makefile | 38 + info/tex-vpat/README.md | 15 + info/tex-vpat/texlive-vpat.css | 180 + info/tex-vpat/texlive-vpat.html | 2755 ++ info/tex-vpat/texlive-vpat.pdf | Bin 0 -> 168794 bytes info/tex-vpat/texlive-vpat.tex | 729 + macros/luatex/latex/truthtable/README.md | 26 + .../luatex/latex/truthtable/res/exampletable.tex | 9 + .../latex/truthtable/res/exampletableoutput.tex | 5 + macros/luatex/latex/truthtable/truthtable.pdf | Bin 0 -> 106754 bytes macros/luatex/latex/truthtable/truthtable.sty | 148 + macros/luatex/latex/truthtable/truthtable.tex | 192 + support/crossrefware/Makefile | 20 +- support/crossrefware/README | 66 +- support/crossrefware/bbl2bib.1 | 16 +- support/crossrefware/bbl2bib.pl | 4 +- support/crossrefware/bibdoiadd.1 | 16 +- support/crossrefware/bibdoiadd.pl | 4 +- support/crossrefware/bibmradd.1 | 14 +- support/crossrefware/bibmradd.pl | 4 +- support/crossrefware/biburl2doi.1 | 14 +- support/crossrefware/biburl2doi.pl | 4 +- support/crossrefware/bibzbladd.1 | 14 +- support/crossrefware/bibzbladd.pl | 4 +- support/crossrefware/crossrefware.pdf | Bin 136411 -> 233582 bytes support/crossrefware/head.ltx | 47 +- support/crossrefware/ltx2crossrefxml.1 | 248 +- support/crossrefware/ltx2crossrefxml.cfg | 23 +- support/crossrefware/ltx2crossrefxml.pl | 808 +- .../texlive/tlnet/tlpkg/installer/ctan-mirrors.pl | 3 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb | 68 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 | 2 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 | 2 +- .../texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc | 14 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz | Bin 2312796 -> 2312684 bytes systems/win32/miktex/tm/packages/next/pr.ini | 8 +- systems/win32/miktex/tm/packages/pr.ini | 8 +- timestamp | 2 +- 142 files changed, 17430 insertions(+), 29771 deletions(-) create mode 100644 graphics/circuit_macros/doc/Circuit_macros.html create mode 100644 graphics/circuit_macros/doc/arrowex.m4 create mode 100644 graphics/circuit_macros/examples/AntiqueClock.m4 create mode 100644 graphics/circuit_macros/examples/IntersectingPlanes.m4 create mode 100644 graphics/circuit_macros/examples/Metamodel.m4 create mode 100644 graphics/circuit_macros/examples/svg/SLD.m4 delete mode 100644 graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.ps create mode 100644 info/tex-vpat/LICENSE create mode 100644 info/tex-vpat/Makefile create mode 100644 info/tex-vpat/README.md create mode 100644 info/tex-vpat/texlive-vpat.css create mode 100644 info/tex-vpat/texlive-vpat.html create mode 100644 info/tex-vpat/texlive-vpat.pdf create mode 100644 info/tex-vpat/texlive-vpat.tex create mode 100644 macros/luatex/latex/truthtable/README.md create mode 100644 macros/luatex/latex/truthtable/res/exampletable.tex create mode 100644 macros/luatex/latex/truthtable/res/exampletableoutput.tex create mode 100644 macros/luatex/latex/truthtable/truthtable.pdf create mode 100644 macros/luatex/latex/truthtable/truthtable.sty create mode 100644 macros/luatex/latex/truthtable/truthtable.tex diff --git a/FILES.byname b/FILES.byname index 92ede577b7..25b8dfaae1 100644 --- a/FILES.byname +++ b/FILES.byname @@ -5105,7 +5105,7 @@ 1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp 1990/10/02 | 812 | dviware/vutex/vaxvms.ins 1990/10/02 | 127576 | dviware/vutex/vutex.web -2021/10/01 | 74735 | FILES.last07days +2021/10/02 | 76720 | FILES.last07days 2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs 2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf 2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf @@ -146153,468 +146153,474 @@ 2020/05/24 | 7475 | graphics/bookshelf/README.md 2020/05/24 | 41 | graphics/bookshelf/VERSION 2020/05/24 | 1783280 | graphics/bookshelf.zip -2021/06/02 | 1185 | graphics/circuit_macros/boxdims.sty -2021/06/02 | 12856 | graphics/circuit_macros/CHANGES -2021/06/02 | 462 | graphics/circuit_macros/Copying -2021/06/02 | 14287 | graphics/circuit_macros/darrow.m4 -2021/06/02 | 26 | graphics/circuit_macros/doc/ACsymbol.m4 -2021/06/02 | 494 | graphics/circuit_macros/doc/AmpTableMan.m4 -2021/06/02 | 1940 | graphics/circuit_macros/doc/AmpTable.tex -2021/06/02 | 1230 | graphics/circuit_macros/doc/AntennasMan.m4 -2021/06/02 | 1618 | graphics/circuit_macros/doc/ArrestersMan.m4 -2021/06/02 | 2634 | graphics/circuit_macros/doc/AudioMan.m4 -2021/06/02 | 10164 | graphics/circuit_macros/doc/Audio.tex -2021/06/02 | 131 | graphics/circuit_macros/doc/Axes.m4 -2021/06/02 | 614 | graphics/circuit_macros/doc/BigResistor.m4 -2021/06/02 | 1619 | graphics/circuit_macros/doc/BipMan.m4 -2021/06/02 | 5545 | graphics/circuit_macros/doc/Bip.tex -2021/06/02 | 1074 | graphics/circuit_macros/doc/bistableMan.m4 -2021/06/02 | 1860 | graphics/circuit_macros/doc/bi_trans.m4 -2021/06/02 | 130 | graphics/circuit_macros/doc/bitrbody.m4 -2021/06/02 | 50 | graphics/circuit_macros/doc/bitr.m4 -2021/06/02 | 141843 | graphics/circuit_macros/doc/body.tex -2021/06/02 | 1953 | graphics/circuit_macros/doc/Buffer.m4 -2021/06/02 | 1074 | graphics/circuit_macros/doc/CapacitorsMan.m4 -2021/06/02 | 4312 | graphics/circuit_macros/doc/Circuit_macros.bib -2021/06/02 | 973559 | graphics/circuit_macros/doc/Circuit_macros.pdf -2021/06/02 | 3000 | graphics/circuit_macros/doc/Circuit_macros.tex -2021/06/02 | 1857 | graphics/circuit_macros/doc/Composite.m4 -2021/06/02 | 1120 | graphics/circuit_macros/doc/ConfigA.m4 -2021/06/02 | 1257 | graphics/circuit_macros/doc/ConfigB.m4 -2021/06/02 | 1291 | graphics/circuit_macros/doc/ConfigC.m4 -2021/06/02 | 2179 | graphics/circuit_macros/doc/ConnMan.m4 -2021/06/02 | 6550 | graphics/circuit_macros/doc/Conn.tex -2021/06/02 | 3326 | graphics/circuit_macros/doc/ContactMan.m4 -2021/06/02 | 1585 | graphics/circuit_macros/doc/ContactsMan.m4 -2021/06/02 | 6067 | graphics/circuit_macros/doc/Contacts.tex -2021/06/02 | 13833 | graphics/circuit_macros/doc/Contact.tex -2021/06/02 | 1995 | graphics/circuit_macros/doc/Corners.m4 -2021/06/02 | 1329 | graphics/circuit_macros/doc/currents.m4 -2021/06/02 | 2389 | graphics/circuit_macros/doc/Dac.m4 -2021/06/02 | 1151 | graphics/circuit_macros/doc/Darlington.m4 -2021/06/02 | 26 | graphics/circuit_macros/doc/DCsymbol.m4 -2021/06/02 | 85915 | graphics/circuit_macros/doc/defines.tex -2021/06/02 | 1485 | graphics/circuit_macros/doc/DemultiplexerMan.m4 -2021/06/02 | 4817 | graphics/circuit_macros/doc/Demultiplexer.tex -2021/06/02 | 1467 | graphics/circuit_macros/doc/DiodesMan.m4 -2021/06/02 | 12050 | graphics/circuit_macros/doc/Diodes.tex -2021/06/02 | 483 | graphics/circuit_macros/doc/eboxdims.m4 -2021/06/02 | 980 | graphics/circuit_macros/doc/EmarrowsMan.m4 -2021/06/02 | 5502 | graphics/circuit_macros/doc/Emarrows.tex -2021/06/02 | 1229 | graphics/circuit_macros/doc/fbfilter.m4 -2021/06/02 | 5315 | graphics/circuit_macros/doc/fetMan.m4 -2021/06/02 | 16420 | graphics/circuit_macros/doc/fet.tex -2021/06/02 | 329 | graphics/circuit_macros/doc/FF.m4 -2021/06/02 | 1975 | graphics/circuit_macros/doc/FlipFlop.m4 -2021/06/02 | 960 | graphics/circuit_macros/doc/Flowdiag.m4 -2021/06/02 | 999 | graphics/circuit_macros/doc/FusesMan.m4 -2021/06/02 | 4789 | graphics/circuit_macros/doc/Fuses.tex -2021/06/02 | 831 | graphics/circuit_macros/doc/GroundsMan.m4 -2021/06/02 | 2661 | graphics/circuit_macros/doc/Grounds.tex -2021/06/02 | 1132 | graphics/circuit_macros/doc/HeadersMan.m4 -2021/06/02 | 7503 | graphics/circuit_macros/doc/Headers.tex -2021/06/02 | 2013 | graphics/circuit_macros/doc/HybridPi.m4 -2021/06/02 | 1342 | graphics/circuit_macros/doc/InductorsMan.m4 -2021/06/02 | 2362 | graphics/circuit_macros/doc/JackMan.m4 -2021/06/02 | 12006 | graphics/circuit_macros/doc/Jack.tex -2021/06/02 | 2119 | graphics/circuit_macros/doc/LogicMan.m4 -2021/06/02 | 7533 | graphics/circuit_macros/doc/Logic.tex -2021/06/02 | 269 | graphics/circuit_macros/doc/Loop.m4 -2021/06/02 | 387 | graphics/circuit_macros/doc/lrarrows.m4 -2021/06/02 | 4828 | graphics/circuit_macros/doc/Makefile -2021/06/02 | 893 | graphics/circuit_macros/doc/MoreTableMan.m4 -2021/06/02 | 1575 | graphics/circuit_macros/doc/mplex.m4 -2021/06/02 | 1400 | graphics/circuit_macros/doc/MultiplexerMan.m4 -2021/06/02 | 4964 | graphics/circuit_macros/doc/Multiplexer.tex -2021/06/02 | 499 | graphics/circuit_macros/doc/NLGMan.m4 -2021/06/02 | 3183 | graphics/circuit_macros/doc/NLG.tex -2021/06/02 | 1128 | graphics/circuit_macros/doc/NPDTMan.m4 -2021/06/02 | 5137 | graphics/circuit_macros/doc/NPDT.tex -2021/06/02 | 1040 | graphics/circuit_macros/doc/NportMan.m4 -2021/06/02 | 4666 | graphics/circuit_macros/doc/Nport.tex -2021/06/02 | 783 | graphics/circuit_macros/doc/Oblique.m4 -2021/06/02 | 137 | graphics/circuit_macros/doc/opampexbody.m4 -2021/06/02 | 56 | graphics/circuit_macros/doc/opampex.m4 -2021/06/02 | 1433 | graphics/circuit_macros/doc/OpampMan.m4 -2021/06/02 | 835 | graphics/circuit_macros/doc/Opto.m4 -2021/06/02 | 1624 | graphics/circuit_macros/doc/ParSeries.m4 -2021/06/02 | 1802 | graphics/circuit_macros/doc/PconnMan.m4 -2021/06/02 | 15033 | graphics/circuit_macros/doc/Pconn.tex -2021/06/02 | 801 | graphics/circuit_macros/doc/Potentiometers.m4 -2021/06/02 | 774 | graphics/circuit_macros/doc/quick.m4 -2021/06/02 | 2086 | graphics/circuit_macros/doc/relaycoilMan.m4 -2021/06/02 | 1259 | graphics/circuit_macros/doc/RelayMan.m4 -2021/06/02 | 7316 | graphics/circuit_macros/doc/Relay.tex -2021/06/02 | 812 | graphics/circuit_macros/doc/ResistorsMan.m4 -2021/06/02 | 369 | graphics/circuit_macros/doc/sampleIC.m4 -2021/06/02 | 404 | graphics/circuit_macros/doc/Series.m4 -2021/06/02 | 1406 | graphics/circuit_macros/doc/ShiftRMan.m4 -2021/06/02 | 9425 | graphics/circuit_macros/doc/ShiftR.tex -2021/06/02 | 421 | graphics/circuit_macros/doc/Sinus.m4 -2021/06/02 | 2225 | graphics/circuit_macros/doc/SourcesMan.m4 -2021/06/02 | 15388 | graphics/circuit_macros/doc/Sources.tex -2021/06/02 | 217 | graphics/circuit_macros/doc/stringdims.m4 -2021/06/02 | 4015 | graphics/circuit_macros/doc/SwitchesMan.m4 -2021/06/02 | 19142 | graphics/circuit_macros/doc/Switches.tex -2021/06/02 | 1464 | graphics/circuit_macros/doc/Taps.m4 -2021/06/02 | 11 | graphics/circuit_macros/doc/test.tex -2021/06/02 | 1022 | graphics/circuit_macros/doc/TgateMan.m4 -2021/06/02 | 4178 | graphics/circuit_macros/doc/Tgate.tex -2021/06/02 | 144 | graphics/circuit_macros/doc/Thermal.m4 -2021/06/02 | 3321 | graphics/circuit_macros/doc/thyristorMan.m4 -2021/06/02 | 20418 | graphics/circuit_macros/doc/thyristor.tex -2021/06/02 | 535 | graphics/circuit_macros/doc/Tline.m4 -2021/06/02 | 165 | graphics/circuit_macros/doc/tranbody.m4 -2021/06/02 | 660 | graphics/circuit_macros/doc/ujtMan.m4 -2021/06/02 | 2441 | graphics/circuit_macros/doc/ujt.tex -2021/06/02 | 944 | graphics/circuit_macros/doc/VariableMan.m4 -2021/06/02 | 10401 | graphics/circuit_macros/doc/Variable.tex -2021/06/02 | 12 | graphics/circuit_macros/doc/Version.tex -2021/06/02 | 3346 | graphics/circuit_macros/doc/WindingsMan.m4 -2021/06/02 | 449 | graphics/circuit_macros/doc/woodchips.m4 -2021/06/02 | 2912 | graphics/circuit_macros/doc/Workflow.m4 -2021/06/02 | 1526 | graphics/circuit_macros/doc/XformMan.m4 -2021/06/02 | 25849 | graphics/circuit_macros/doc/Xform.tex -2021/06/02 | 19250 | graphics/circuit_macros/dpictools.pic -2021/06/02 | 1730 | graphics/circuit_macros/examples/ABlogix.m4 -2021/06/02 | 2402 | graphics/circuit_macros/examples/Adder.m4 -2021/06/02 | 4205 | graphics/circuit_macros/examples/Alogix.m4 -2021/06/02 | 494 | graphics/circuit_macros/examples/AmpTable.m4 -2021/06/02 | 1230 | graphics/circuit_macros/examples/Antennas.m4 -2021/06/02 | 777 | graphics/circuit_macros/examples/Arrester.m4 -2021/06/02 | 1767 | graphics/circuit_macros/examples/ArrowFn.m4 -2021/06/02 | 6243 | graphics/circuit_macros/examples/ASME_Y14-5.m4 -2021/06/02 | 771 | graphics/circuit_macros/examples/Attention.m4 -2021/06/02 | 2634 | graphics/circuit_macros/examples/Audio.m4 -2021/06/02 | 2517 | graphics/circuit_macros/examples/Autoencoder.m4 -2021/06/02 | 1962 | graphics/circuit_macros/examples/Autologix.m4 -2021/06/02 | 4638 | graphics/circuit_macros/examples/Ball.m4 -2021/06/02 | 1619 | graphics/circuit_macros/examples/Bip.m4 -2021/06/02 | 905 | graphics/circuit_macros/examples/birds.m4 -2021/06/02 | 1075 | graphics/circuit_macros/examples/bistable.m4 -2021/06/02 | 3175 | graphics/circuit_macros/examples/Blogix.m4 -2021/06/02 | 2542 | graphics/circuit_macros/examples/brace.m4 -2021/06/02 | 1024 | graphics/circuit_macros/examples/Btree.m4 -2021/06/02 | 3509 | graphics/circuit_macros/examples/Buttons.m4 -2021/06/02 | 991 | graphics/circuit_macros/examples/Byte.m4 -2021/06/02 | 6371 | graphics/circuit_macros/examples/CanLogic.m4 -2021/06/02 | 1046 | graphics/circuit_macros/examples/Capacitors.m4 -2021/06/02 | 233 | graphics/circuit_macros/examples/Ccurve.m4 -2021/06/02 | 1039 | graphics/circuit_macros/examples/chaos.m4 -2021/06/02 | 1175 | graphics/circuit_macros/examples/Chips.m4 -2021/06/02 | 7670 | graphics/circuit_macros/examples/Chuck.m4 -2021/06/02 | 482 | graphics/circuit_macros/examples/clock.m4 -2021/06/02 | 750 | graphics/circuit_macros/examples/Connectors.m4 -2021/06/02 | 2178 | graphics/circuit_macros/examples/Conn.m4 -2021/06/02 | 3326 | graphics/circuit_macros/examples/Contact.m4 -2021/06/02 | 1585 | graphics/circuit_macros/examples/Contacts.m4 -2021/06/02 | 7065 | graphics/circuit_macros/examples/control.m4 -2021/06/02 | 551 | graphics/circuit_macros/examples/Counting.m4 -2021/06/02 | 1521 | graphics/circuit_macros/examples/Coxeter.m4 -2021/06/02 | 1358 | graphics/circuit_macros/examples/Crossbar.m4 -2021/06/02 | 2520 | graphics/circuit_macros/examples/Crow.m4 -2021/06/02 | 1879 | graphics/circuit_macros/examples/Cruller.m4 -2021/06/02 | 7434 | graphics/circuit_macros/examples/csc.m4 -2021/06/02 | 6003 | graphics/circuit_macros/examples/CSlight.m4 -2021/06/02 | 5890 | graphics/circuit_macros/examples/Csource.m4 -2021/06/02 | 460 | graphics/circuit_macros/examples/debug1.tex -2021/06/02 | 1959 | graphics/circuit_macros/examples/debug2.m4 -2021/06/02 | 655 | graphics/circuit_macros/examples/Decoder.m4 -2021/06/02 | 1485 | graphics/circuit_macros/examples/Demultiplexer.m4 -2021/06/02 | 654 | graphics/circuit_macros/examples/diamond.m4 -2021/06/02 | 6854 | graphics/circuit_macros/examples/Dini.m4 -2021/06/02 | 1467 | graphics/circuit_macros/examples/Diodes.m4 -2021/06/02 | 1966 | graphics/circuit_macros/examples/Drive.m4 -2021/06/02 | 980 | graphics/circuit_macros/examples/Emarrows.m4 -2021/06/02 | 6498 | graphics/circuit_macros/examples/Escher.m4 -2021/06/02 | 4023 | graphics/circuit_macros/examples/Euro.m4 -2021/06/02 | 2412 | graphics/circuit_macros/examples/ex00.m4 -2021/06/02 | 2279 | graphics/circuit_macros/examples/ex01.m4 -2021/06/02 | 1100 | graphics/circuit_macros/examples/ex02.m4 -2021/06/02 | 673 | graphics/circuit_macros/examples/ex03.m4 -2021/06/02 | 1654 | graphics/circuit_macros/examples/ex04.m4 -2021/06/02 | 1608 | graphics/circuit_macros/examples/ex05.m4 -2021/06/02 | 2170 | graphics/circuit_macros/examples/ex06.m4 -2021/06/02 | 2556 | graphics/circuit_macros/examples/ex08.m4 -2021/06/02 | 4313 | graphics/circuit_macros/examples/ex09.m4 -2021/06/02 | 1492 | graphics/circuit_macros/examples/ex10.m4 -2021/06/02 | 2361 | graphics/circuit_macros/examples/ex11.m4 -2021/06/02 | 3339 | graphics/circuit_macros/examples/ex12.m4 -2021/06/02 | 1003 | graphics/circuit_macros/examples/ex15.m4 -2021/06/02 | 1865 | graphics/circuit_macros/examples/ex16.m4 -2021/06/02 | 1126 | graphics/circuit_macros/examples/ex17.m4 -2021/06/02 | 865 | graphics/circuit_macros/examples/ex18.m4 -2021/06/02 | 2000 | graphics/circuit_macros/examples/ex21.m4 -2021/06/02 | 893291 | graphics/circuit_macros/examples/examples.pdf -2021/06/02 | 1720 | graphics/circuit_macros/examples/examples.tex -2021/06/02 | 8372 | graphics/circuit_macros/examples/exp.m4 -2021/06/02 | 5311 | graphics/circuit_macros/examples/fet.m4 -2021/06/02 | 17711 | graphics/circuit_macros/examples/files.tex -2021/06/02 | 645 | graphics/circuit_macros/examples/Floor.m4 -2021/06/02 | 11270 | graphics/circuit_macros/examples/FlowchartDefs.m4 -2021/06/02 | 4751 | graphics/circuit_macros/examples/Flow.m4 -2021/06/02 | 999 | graphics/circuit_macros/examples/Fuses.m4 -2021/06/02 | 2262 | graphics/circuit_macros/examples/Geometry.m4 -2021/06/02 | 421 | graphics/circuit_macros/examples/GrayCode.m4 -2021/06/02 | 5486 | graphics/circuit_macros/examples/graysurf.m4 -2021/06/02 | 828 | graphics/circuit_macros/examples/Grounds.m4 -2021/06/02 | 1132 | graphics/circuit_macros/examples/Headers.m4 -2021/06/02 | 1458 | graphics/circuit_macros/examples/header.tex -2021/06/02 | 13330 | graphics/circuit_macros/examples/Heathkit.m4 -2021/06/02 | 2068 | graphics/circuit_macros/examples/I2L.m4 -2021/06/02 | 1668 | graphics/circuit_macros/examples/IC10107.m4 -2021/06/02 | 11426 | graphics/circuit_macros/examples/ics.m4 -2021/06/02 | 32 | graphics/circuit_macros/examples/Incl.eps.bb -2021/06/02 | 45323 | graphics/circuit_macros/examples/Incl.eps.gz -2021/06/02 | 741 | graphics/circuit_macros/examples/Incleps.m4 -2021/06/02 | 29772 | graphics/circuit_macros/examples/Incl.pdf -2021/06/02 | 709 | graphics/circuit_macros/examples/Inclpdf.m4 -2021/06/02 | 1342 | graphics/circuit_macros/examples/Inductors.m4 -2021/06/02 | 2362 | graphics/circuit_macros/examples/Jack.m4 -2021/06/02 | 2696 | graphics/circuit_macros/examples/keyval.m4 -2021/06/02 | 489 | graphics/circuit_macros/examples/Koch.m4 -2021/06/02 | 7127 | graphics/circuit_macros/examples/lcct.m4 -2021/06/02 | 2119 | graphics/circuit_macros/examples/Logic.m4 -2021/06/02 | 2304 | graphics/circuit_macros/examples/Loglog.m4 -2021/06/02 | 4459 | graphics/circuit_macros/examples/Lyap.m4 -2021/06/02 | 9080 | graphics/circuit_macros/examples/Makefile -2021/06/02 | 2986 | graphics/circuit_macros/examples/MC.m4 -2021/06/02 | 95156 | graphics/circuit_macros/examples/mf/cct.mf -2021/06/02 | 764 | graphics/circuit_macros/examples/mf/cct.tfm -2021/06/02 | 4615 | graphics/circuit_macros/examples/mf/font.m4 -2021/06/02 | 1529 | graphics/circuit_macros/examples/mf/Makefile -2021/06/02 | 1076 | graphics/circuit_macros/examples/mf/mftest -2021/06/02 | 3785 | graphics/circuit_macros/examples/Mixer.m4 -2021/06/02 | 893 | graphics/circuit_macros/examples/MoreTable.m4 -2021/06/02 | 1922 | graphics/circuit_macros/examples/MotorControl.m4 -2021/06/02 | 409 | graphics/circuit_macros/examples/mpost/examplesmpost.tex -2021/06/02 | 4247 | graphics/circuit_macros/examples/mpost/Makefile -2021/06/02 | 685 | graphics/circuit_macros/examples/mpost/mptest -2021/06/02 | 703 | graphics/circuit_macros/examples/mpost/README-mpost -2021/06/02 | 418 | graphics/circuit_macros/examples/mpost/tstmpost.tex -2021/06/02 | 1400 | graphics/circuit_macros/examples/Multiplexer.m4 -2021/06/02 | 499 | graphics/circuit_macros/examples/NLG.m4 -2021/06/02 | 1128 | graphics/circuit_macros/examples/NPDT.m4 -2021/06/02 | 1040 | graphics/circuit_macros/examples/Nport.m4 -2021/06/02 | 2792 | graphics/circuit_macros/examples/OpAmpFilter.m4 -2021/06/02 | 1433 | graphics/circuit_macros/examples/Opamp.m4 -2021/06/02 | 2442 | graphics/circuit_macros/examples/Optoiso.m4 -2021/06/02 | 1852 | graphics/circuit_macros/examples/Orbits.m4 -2021/06/02 | 1802 | graphics/circuit_macros/examples/Pconn.m4 -2021/06/02 | 1419 | graphics/circuit_macros/examples/person.m4 -2021/06/02 | 2674 | graphics/circuit_macros/examples/Planes.m4 -2021/06/02 | 6160 | graphics/circuit_macros/examples/Plate.m4 -2021/06/02 | 1174 | graphics/circuit_macros/examples/PPA.m4 -2021/06/02 | 715 | graphics/circuit_macros/examples/psfrag/examplespsfrag.tex -2021/06/02 | 4683 | graphics/circuit_macros/examples/psfrag/Makefile -2021/06/02 | 317 | graphics/circuit_macros/examples/psfrag/README-psfrag.txt -2021/06/02 | 371 | graphics/circuit_macros/examples/psfrag/tstpsfrag.tex -2021/06/02 | 3954 | graphics/circuit_macros/examples/PushPull.m4 -2021/06/02 | 2014 | graphics/circuit_macros/examples/pwrsupply.m4 -2021/06/02 | 918 | graphics/circuit_macros/examples/Quantum.m4 -2021/06/02 | 774 | graphics/circuit_macros/examples/quick.m4 -2021/06/02 | 3727 | graphics/circuit_macros/examples/random.m4 -2021/06/02 | 2817 | graphics/circuit_macros/examples/README-examples -2021/06/02 | 7006 | graphics/circuit_macros/examples/Rectifiers.m4 -2021/06/02 | 3825 | graphics/circuit_macros/examples/recycle.m4 -2021/06/02 | 2086 | graphics/circuit_macros/examples/relaycoil.m4 -2021/06/02 | 1259 | graphics/circuit_macros/examples/Relay.m4 -2021/06/02 | 807 | graphics/circuit_macros/examples/Resistors.m4 -2021/06/02 | 1443 | graphics/circuit_macros/examples/Resolver.m4 -2021/06/02 | 4569 | graphics/circuit_macros/examples/rose.m4 -2021/06/02 | 221 | graphics/circuit_macros/examples/rotate.tex -2021/06/02 | 1525 | graphics/circuit_macros/examples/rotatetext.m4 -2021/06/02 | 518 | graphics/circuit_macros/examples/Rotbox.m4 -2021/06/02 | 365 | graphics/circuit_macros/examples/rotellipse.m4 -2021/06/02 | 740 | graphics/circuit_macros/examples/SampleFlow.m4 -2021/06/02 | 1778 | graphics/circuit_macros/examples/Schottky.m4 -2021/06/02 | 2761 | graphics/circuit_macros/examples/sfg.m4 -2021/06/02 | 4751 | graphics/circuit_macros/examples/Shaky.m4 -2021/06/02 | 7721 | graphics/circuit_macros/examples/shapes.m4 -2021/06/02 | 1406 | graphics/circuit_macros/examples/ShiftR.m4 -2021/06/02 | 1331 | graphics/circuit_macros/examples/Sierpinski.m4 -2021/06/02 | 419 | graphics/circuit_macros/examples/Sixpole.m4 -2021/06/02 | 370 | graphics/circuit_macros/examples/snake.m4 -2021/06/02 | 2165 | graphics/circuit_macros/examples/Sources.m4 -2021/06/02 | 1906 | graphics/circuit_macros/examples/SPM.m4 -2021/06/02 | 380 | graphics/circuit_macros/examples/SQUID.m4 -2021/06/02 | 947 | graphics/circuit_macros/examples/squiggle.m4 -2021/06/02 | 1955 | graphics/circuit_macros/examples/svg/ABlogixSVG.m4 -2021/06/02 | 2528 | graphics/circuit_macros/examples/svg/AdderSVG.m4 -2021/06/02 | 4340 | graphics/circuit_macros/examples/svg/AlogixSVG.m4 -2021/06/02 | 538 | graphics/circuit_macros/examples/svg/AmpTableSVG.m4 -2021/06/02 | 1090 | graphics/circuit_macros/examples/svg/AntennasSVG.m4 -2021/06/02 | 1894 | graphics/circuit_macros/examples/svg/ArrowFnSVG.m4 -2021/06/02 | 2720 | graphics/circuit_macros/examples/svg/AudioSVG.m4 -2021/06/02 | 2989 | graphics/circuit_macros/examples/svg/AutoencoderSVG.m4 -2021/06/02 | 1668 | graphics/circuit_macros/examples/svg/Banking.m4 -2021/06/02 | 1812 | graphics/circuit_macros/examples/svg/BipSVG.m4 -2021/06/02 | 4289 | graphics/circuit_macros/examples/svg/BtreeSVG.m4 -2021/06/02 | 3567 | graphics/circuit_macros/examples/svg/ButtonsSVG.m4 -2021/06/02 | 937 | graphics/circuit_macros/examples/svg/ByteSVG.m4 -2021/06/02 | 6413 | graphics/circuit_macros/examples/svg/CanLogicSVG.m4 -2021/06/02 | 925 | graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 -2021/06/02 | 2661 | graphics/circuit_macros/examples/svg/CctTableSVG.m4 -2021/06/02 | 1209 | graphics/circuit_macros/examples/svg/ChipsSVG.m4 -2021/06/02 | 715 | graphics/circuit_macros/examples/svg/ConnectorsSVG.m4 -2021/06/02 | 2111 | graphics/circuit_macros/examples/svg/ConnSVG.m4 -2021/06/02 | 1737 | graphics/circuit_macros/examples/svg/ContactsSVG.m4 -2021/06/02 | 3646 | graphics/circuit_macros/examples/svg/ContactSVG.m4 -2021/06/02 | 8006 | graphics/circuit_macros/examples/svg/controlSVG.m4 -2021/06/02 | 793 | graphics/circuit_macros/examples/svg/CountingSVG.m4 -2021/06/02 | 2525 | graphics/circuit_macros/examples/svg/CrowSVG.m4 -2021/06/02 | 1874 | graphics/circuit_macros/examples/svg/CrullerSVG.m4 -2021/06/02 | 7485 | graphics/circuit_macros/examples/svg/cscSVG.m4 -2021/06/02 | 7418 | graphics/circuit_macros/examples/svg/CsourceSVG.m4 -2021/06/02 | 745 | graphics/circuit_macros/examples/svg/DecoderSVG.m4 -2021/06/02 | 1373 | graphics/circuit_macros/examples/svg/DemultiplexerSVG.m4 -2021/06/02 | 609 | graphics/circuit_macros/examples/svg/diamondSVG.m4 -2021/06/02 | 6854 | graphics/circuit_macros/examples/svg/DiniSVG.m4 -2021/06/02 | 1429 | graphics/circuit_macros/examples/svg/DiodesSVG.m4 -2021/06/02 | 1966 | graphics/circuit_macros/examples/svg/DriveSVG.m4 -2021/06/02 | 24726 | graphics/circuit_macros/examples/svg/EEPSVG.m4 -2021/06/02 | 1070 | graphics/circuit_macros/examples/svg/EmarrowsSVG.m4 -2021/06/02 | 6501 | graphics/circuit_macros/examples/svg/EscherSVG.m4 -2021/06/02 | 2443 | graphics/circuit_macros/examples/svg/ex00SVG.m4 -2021/06/02 | 2625 | graphics/circuit_macros/examples/svg/ex01SVG.m4 -2021/06/02 | 1093 | graphics/circuit_macros/examples/svg/ex02SVG.m4 -2021/06/02 | 855 | graphics/circuit_macros/examples/svg/ex03SVG.m4 -2021/06/02 | 1891 | graphics/circuit_macros/examples/svg/ex04SVG.m4 -2021/06/02 | 3390 | graphics/circuit_macros/examples/svg/ex05SVG.m4 -2021/06/02 | 2018 | graphics/circuit_macros/examples/svg/ex06SVG.m4 -2021/06/02 | 2559 | graphics/circuit_macros/examples/svg/ex08SVG.m4 -2021/06/02 | 4119 | graphics/circuit_macros/examples/svg/ex09SVG.m4 -2021/06/02 | 1699 | graphics/circuit_macros/examples/svg/ex10SVG.m4 -2021/06/02 | 2685 | graphics/circuit_macros/examples/svg/ex11SVG.m4 -2021/06/02 | 3522 | graphics/circuit_macros/examples/svg/ex12SVG.m4 -2021/06/02 | 970 | graphics/circuit_macros/examples/svg/ex15SVG.m4 -2021/06/02 | 1893 | graphics/circuit_macros/examples/svg/ex16SVG.m4 -2021/06/02 | 1204 | graphics/circuit_macros/examples/svg/ex17SVG.m4 -2021/06/02 | 1065 | graphics/circuit_macros/examples/svg/ex18SVG.m4 -2021/06/02 | 1882 | graphics/circuit_macros/examples/svg/ex21SVG.m4 -2021/06/02 | 24911 | graphics/circuit_macros/examples/svg/examplesSVG.htmx -2021/06/02 | 10589 | graphics/circuit_macros/examples/svg/expSVG.m4 -2021/06/02 | 5365 | graphics/circuit_macros/examples/svg/fetSVG.m4 -2021/06/02 | 5171 | graphics/circuit_macros/examples/svg/FlowSVG.m4 -2021/06/02 | 538 | graphics/circuit_macros/examples/svg/FontsSVG.m4 -2021/06/02 | 1992 | graphics/circuit_macros/examples/svg/FourbarSVG.m4 -2021/06/02 | 959 | graphics/circuit_macros/examples/svg/FusesSVG.m4 -2021/06/02 | 5847 | graphics/circuit_macros/examples/svg/GeometrySVG.m4 -2021/06/02 | 1875 | graphics/circuit_macros/examples/svg/GrayCodeSVG.m4 -2021/06/02 | 5469 | graphics/circuit_macros/examples/svg/graysurfSVG.m4 -2021/06/02 | 810 | graphics/circuit_macros/examples/svg/GroundsSVG.m4 -2021/06/02 | 1265 | graphics/circuit_macros/examples/svg/HeadersSVG.m4 -2021/06/02 | 12711 | graphics/circuit_macros/examples/svg/HeathkitSVG.m4 -2021/06/02 | 2171 | graphics/circuit_macros/examples/svg/I2LSVG.m4 -2021/06/02 | 11593 | graphics/circuit_macros/examples/svg/icsSVG.m4 -2021/06/02 | 4003 | graphics/circuit_macros/examples/svg/InclepsSVG.m4 -2021/06/02 | 21384 | graphics/circuit_macros/examples/svg/Incl.jpg -2021/06/02 | 1343 | graphics/circuit_macros/examples/svg/InductorsSVG.m4 -2021/06/02 | 2051 | graphics/circuit_macros/examples/svg/JackSVG.m4 -2021/06/02 | 7203 | graphics/circuit_macros/examples/svg/lcctSVG.m4 -2021/06/02 | 6216 | graphics/circuit_macros/examples/svg/LgateSVG.m4 -2021/06/02 | 63 | graphics/circuit_macros/examples/svg/local_init.m4 -2021/06/02 | 1931 | graphics/circuit_macros/examples/svg/LogicSVG.m4 -2021/06/02 | 2241 | graphics/circuit_macros/examples/svg/LoglogSVG.m4 -2021/06/02 | 5106 | graphics/circuit_macros/examples/svg/Makefile -2021/06/02 | 3473 | graphics/circuit_macros/examples/svg/MCSVG.m4 -2021/06/02 | 3489 | graphics/circuit_macros/examples/svg/MixerSVG.m4 -2021/06/02 | 921 | graphics/circuit_macros/examples/svg/MoreTableSVG.m4 -2021/06/02 | 1953 | graphics/circuit_macros/examples/svg/MotorControlSVG.m4 -2021/06/02 | 1403 | graphics/circuit_macros/examples/svg/MultiplexerSVG.m4 -2021/06/02 | 532 | graphics/circuit_macros/examples/svg/NLGSVG.m4 -2021/06/02 | 1157 | graphics/circuit_macros/examples/svg/NPDTSVG.m4 -2021/06/02 | 748 | graphics/circuit_macros/examples/svg/Np.m4 -2021/06/02 | 1238 | graphics/circuit_macros/examples/svg/NportSVG.m4 -2021/06/02 | 1034 | graphics/circuit_macros/examples/svg/OpampSVG.m4 -2021/06/02 | 2551 | graphics/circuit_macros/examples/svg/OptoisoSVG.m4 -2021/06/02 | 10193 | graphics/circuit_macros/examples/svg/paletteSVG.m4 -2021/06/02 | 1776 | graphics/circuit_macros/examples/svg/PconnSVG.m4 -2021/06/02 | 6153 | graphics/circuit_macros/examples/svg/PlateSVG.m4 -2021/06/02 | 3778 | graphics/circuit_macros/examples/svg/PushPullSVG.m4 -2021/06/02 | 2027 | graphics/circuit_macros/examples/svg/pwrsupplySVG.m4 -2021/06/02 | 947 | graphics/circuit_macros/examples/svg/QuantumSVG.m4 -2021/06/02 | 886 | graphics/circuit_macros/examples/svg/quickSVG.m4 -2021/06/02 | 3756 | graphics/circuit_macros/examples/svg/randomSVG.m4 -2021/06/02 | 7546 | graphics/circuit_macros/examples/svg/RectifiersSVG.m4 -2021/06/02 | 3825 | graphics/circuit_macros/examples/svg/recycleSVG.m4 -2021/06/02 | 2069 | graphics/circuit_macros/examples/svg/relaycoilSVG.m4 -2021/06/02 | 1431 | graphics/circuit_macros/examples/svg/RelaySVG.m4 -2021/06/02 | 864 | graphics/circuit_macros/examples/svg/ResistorsSVG.m4 -2021/06/02 | 5412 | graphics/circuit_macros/examples/svg/roseSVG.m4 -2021/06/02 | 545 | graphics/circuit_macros/examples/svg/RotboxSVG.m4 -2021/06/02 | 1837 | graphics/circuit_macros/examples/svg/SchottkySVG.m4 -2021/06/02 | 3290 | graphics/circuit_macros/examples/svg/sfgSVG.m4 -2021/06/02 | 7507 | graphics/circuit_macros/examples/svg/shapesSVG.m4 -2021/06/02 | 1313 | graphics/circuit_macros/examples/svg/ShiftRSVG.m4 -2021/06/02 | 1331 | graphics/circuit_macros/examples/svg/SierpinskiSVG.m4 -2021/06/02 | 419 | graphics/circuit_macros/examples/svg/SixpoleSVG.m4 -2021/06/02 | 4277 | graphics/circuit_macros/examples/svg/sldtestsSVG.m4 -2021/06/02 | 1907 | graphics/circuit_macros/examples/svg/SourcesSVG.m4 -2021/06/02 | 417 | graphics/circuit_macros/examples/svg/SQUIDSVG.m4 -2021/06/02 | 1050 | graphics/circuit_macros/examples/svg/SVGconfig.m4 -2021/06/02 | 4309 | graphics/circuit_macros/examples/svg/SwitchesSVG.m4 -2021/06/02 | 1055 | graphics/circuit_macros/examples/svg/TgateSVG.m4 -2021/06/02 | 1444 | graphics/circuit_macros/examples/svg/ThreeSVG.m4 -2021/06/02 | 3310 | graphics/circuit_macros/examples/svg/thyristorSVG.m4 -2021/06/02 | 1612 | graphics/circuit_macros/examples/svg/TimerSVG.m4 -2021/06/02 | 9752 | graphics/circuit_macros/examples/svg/tstSVG.htmx -2021/06/02 | 1630 | graphics/circuit_macros/examples/svg/TTLnandSVG.m4 -2021/06/02 | 3091 | graphics/circuit_macros/examples/svg/TtreeSVG.m4 -2021/06/02 | 12478 | graphics/circuit_macros/examples/svg/TubediagsSVG.m4 -2021/06/02 | 682 | graphics/circuit_macros/examples/svg/ujtSVG.m4 -2021/06/02 | 24141 | graphics/circuit_macros/examples/svg/UNOSVG.m4 -2021/06/02 | 988 | graphics/circuit_macros/examples/svg/VariableSVG.m4 -2021/06/02 | 2994 | graphics/circuit_macros/examples/svg/WindingsSVG.m4 -2021/06/02 | 353 | graphics/circuit_macros/examples/svg/windows.m4 -2021/06/02 | 3631 | graphics/circuit_macros/examples/svg/wormSVG.m4 -2021/06/02 | 1559 | graphics/circuit_macros/examples/svg/XformSVG.m4 -2021/06/02 | 1985 | graphics/circuit_macros/examples/svg/XORSVG.m4 -2021/06/02 | 1546 | graphics/circuit_macros/examples/svg/Xtest.m4 -2021/06/02 | 3973 | graphics/circuit_macros/examples/Switches.m4 -2021/06/02 | 591 | graphics/circuit_macros/examples/test.m4 -2021/06/02 | 416 | graphics/circuit_macros/examples/testpdf.tex -2021/06/02 | 1022 | graphics/circuit_macros/examples/Tgate.m4 -2021/06/02 | 1287 | graphics/circuit_macros/examples/Three.m4 -2021/06/02 | 3321 | graphics/circuit_macros/examples/thyristor.m4 -2021/06/02 | 219 | graphics/circuit_macros/examples/tst1.tex -2021/06/02 | 409 | graphics/circuit_macros/examples/tst.tex -2021/06/02 | 464 | graphics/circuit_macros/examples/tsttikz.tex -2021/06/02 | 1558 | graphics/circuit_macros/examples/TTLnand.m4 -2021/06/02 | 2097 | graphics/circuit_macros/examples/Ttree.m4 -2021/06/02 | 9840 | graphics/circuit_macros/examples/tubedefs.m4 -2021/06/02 | 13264 | graphics/circuit_macros/examples/Tubediags.m4 -2021/06/02 | 660 | graphics/circuit_macros/examples/ujt.m4 -2021/06/02 | 932 | graphics/circuit_macros/examples/Variable.m4 -2021/06/02 | 1906 | graphics/circuit_macros/examples/venus.m4 -2021/06/02 | 442 | graphics/circuit_macros/examples/Wheat.m4 -2021/06/02 | 3346 | graphics/circuit_macros/examples/Windings.m4 -2021/06/02 | 353 | graphics/circuit_macros/examples/windows.m4 -2021/06/02 | 2799 | graphics/circuit_macros/examples/worm.m4 -2021/06/02 | 337 | graphics/circuit_macros/examples/xfig/Makefile -2021/06/02 | 21374 | graphics/circuit_macros/examples/xfig/xfiglib.fig -2021/06/02 | 5969 | graphics/circuit_macros/examples/xfig/xfiglib.m4 -2021/06/02 | 1526 | graphics/circuit_macros/examples/Xform.m4 -2021/06/02 | 1823 | graphics/circuit_macros/examples/XOR.m4 -2021/06/02 | 656 | graphics/circuit_macros/examples/Zcos.m4 -2021/06/02 | 1019 | graphics/circuit_macros/gpic.m4 -2021/06/02 | 4079 | graphics/circuit_macros/INSTALL -2021/06/02 | 12765 | graphics/circuit_macros/lib3D.m4 -2021/06/02 | 171777 | graphics/circuit_macros/libcct.m4 -2021/06/02 | 85790 | graphics/circuit_macros/libgen.m4 -2021/06/02 | 47795 | graphics/circuit_macros/liblog.m4 -2021/06/02 | 19176 | graphics/circuit_macros/Licence.txt -2021/06/02 | 1639 | graphics/circuit_macros/Makefile -2021/06/02 | 1114 | graphics/circuit_macros/mfpic.m4 -2021/06/02 | 1640 | graphics/circuit_macros/mpost.m4 -2021/06/02 | 2085 | graphics/circuit_macros/pgf.m4 -2021/06/02 | 2834 | graphics/circuit_macros/postscript.m4 -2021/06/02 | 706 | graphics/circuit_macros/psfrag.m4 -2021/06/02 | 2099 | graphics/circuit_macros/pstricks.m4 -2021/06/02 | 16309 | graphics/circuit_macros/README -2021/06/02 | 11556 | graphics/circuit_macros/svg.m4 -2021/06/02 | 1029 | graphics/circuit_macros/xfig.m4 -2021/06/03 | 2537816 | graphics/circuit_macros.zip +2021/10/02 | 1185 | graphics/circuit_macros/boxdims.sty +2021/10/02 | 13109 | graphics/circuit_macros/CHANGES +2021/10/02 | 462 | graphics/circuit_macros/Copying +2021/10/02 | 14287 | graphics/circuit_macros/darrow.m4 +2021/10/02 | 26 | graphics/circuit_macros/doc/ACsymbol.m4 +2021/10/02 | 494 | graphics/circuit_macros/doc/AmpTableMan.m4 +2021/10/02 | 1940 | graphics/circuit_macros/doc/AmpTable.tex +2021/10/02 | 1230 | graphics/circuit_macros/doc/AntennasMan.m4 +2021/10/02 | 1618 | graphics/circuit_macros/doc/ArrestersMan.m4 +2021/10/02 | 1017 | graphics/circuit_macros/doc/arrowex.m4 +2021/10/02 | 2634 | graphics/circuit_macros/doc/AudioMan.m4 +2021/10/02 | 10164 | graphics/circuit_macros/doc/Audio.tex +2021/10/02 | 131 | graphics/circuit_macros/doc/Axes.m4 +2021/10/02 | 614 | graphics/circuit_macros/doc/BigResistor.m4 +2021/10/02 | 1619 | graphics/circuit_macros/doc/BipMan.m4 +2021/10/02 | 5545 | graphics/circuit_macros/doc/Bip.tex +2021/10/02 | 1074 | graphics/circuit_macros/doc/bistableMan.m4 +2021/10/02 | 1860 | graphics/circuit_macros/doc/bi_trans.m4 +2021/10/02 | 130 | graphics/circuit_macros/doc/bitrbody.m4 +2021/10/02 | 50 | graphics/circuit_macros/doc/bitr.m4 +2021/10/02 | 142535 | graphics/circuit_macros/doc/body.tex +2021/10/02 | 1953 | graphics/circuit_macros/doc/Buffer.m4 +2021/10/02 | 1063 | graphics/circuit_macros/doc/CapacitorsMan.m4 +2021/10/02 | 4312 | graphics/circuit_macros/doc/Circuit_macros.bib +2021/10/02 | 2571860 | graphics/circuit_macros/doc/Circuit_macros.html +2021/10/02 | 978438 | graphics/circuit_macros/doc/Circuit_macros.pdf +2021/10/02 | 3000 | graphics/circuit_macros/doc/Circuit_macros.tex +2021/10/02 | 1857 | graphics/circuit_macros/doc/Composite.m4 +2021/10/02 | 1121 | graphics/circuit_macros/doc/ConfigA.m4 +2021/10/02 | 1258 | graphics/circuit_macros/doc/ConfigB.m4 +2021/10/02 | 1292 | graphics/circuit_macros/doc/ConfigC.m4 +2021/10/02 | 2179 | graphics/circuit_macros/doc/ConnMan.m4 +2021/10/02 | 6550 | graphics/circuit_macros/doc/Conn.tex +2021/10/02 | 3326 | graphics/circuit_macros/doc/ContactMan.m4 +2021/10/02 | 1585 | graphics/circuit_macros/doc/ContactsMan.m4 +2021/10/02 | 6067 | graphics/circuit_macros/doc/Contacts.tex +2021/10/02 | 13833 | graphics/circuit_macros/doc/Contact.tex +2021/10/02 | 1995 | graphics/circuit_macros/doc/Corners.m4 +2021/10/02 | 1329 | graphics/circuit_macros/doc/currents.m4 +2021/10/02 | 2389 | graphics/circuit_macros/doc/Dac.m4 +2021/10/02 | 1151 | graphics/circuit_macros/doc/Darlington.m4 +2021/10/02 | 26 | graphics/circuit_macros/doc/DCsymbol.m4 +2021/10/02 | 88631 | graphics/circuit_macros/doc/defines.tex +2021/10/02 | 1485 | graphics/circuit_macros/doc/DemultiplexerMan.m4 +2021/10/02 | 4817 | graphics/circuit_macros/doc/Demultiplexer.tex +2021/10/02 | 1467 | graphics/circuit_macros/doc/DiodesMan.m4 +2021/10/02 | 12050 | graphics/circuit_macros/doc/Diodes.tex +2021/10/02 | 483 | graphics/circuit_macros/doc/eboxdims.m4 +2021/10/02 | 980 | graphics/circuit_macros/doc/EmarrowsMan.m4 +2021/10/02 | 5502 | graphics/circuit_macros/doc/Emarrows.tex +2021/10/02 | 1229 | graphics/circuit_macros/doc/fbfilter.m4 +2021/10/02 | 5315 | graphics/circuit_macros/doc/fetMan.m4 +2021/10/02 | 16420 | graphics/circuit_macros/doc/fet.tex +2021/10/02 | 329 | graphics/circuit_macros/doc/FF.m4 +2021/10/02 | 1975 | graphics/circuit_macros/doc/FlipFlop.m4 +2021/10/02 | 970 | graphics/circuit_macros/doc/Flowdiag.m4 +2021/10/02 | 999 | graphics/circuit_macros/doc/FusesMan.m4 +2021/10/02 | 4789 | graphics/circuit_macros/doc/Fuses.tex +2021/10/02 | 831 | graphics/circuit_macros/doc/GroundsMan.m4 +2021/10/02 | 2661 | graphics/circuit_macros/doc/Grounds.tex +2021/10/02 | 1132 | graphics/circuit_macros/doc/HeadersMan.m4 +2021/10/02 | 7503 | graphics/circuit_macros/doc/Headers.tex +2021/10/02 | 2013 | graphics/circuit_macros/doc/HybridPi.m4 +2021/10/02 | 1342 | graphics/circuit_macros/doc/InductorsMan.m4 +2021/10/02 | 2362 | graphics/circuit_macros/doc/JackMan.m4 +2021/10/02 | 12006 | graphics/circuit_macros/doc/Jack.tex +2021/10/02 | 2119 | graphics/circuit_macros/doc/LogicMan.m4 +2021/10/02 | 7533 | graphics/circuit_macros/doc/Logic.tex +2021/10/02 | 269 | graphics/circuit_macros/doc/Loop.m4 +2021/10/02 | 387 | graphics/circuit_macros/doc/lrarrows.m4 +2021/10/02 | 4844 | graphics/circuit_macros/doc/Makefile +2021/10/02 | 963 | graphics/circuit_macros/doc/MoreTableMan.m4 +2021/10/02 | 1575 | graphics/circuit_macros/doc/mplex.m4 +2021/10/02 | 1400 | graphics/circuit_macros/doc/MultiplexerMan.m4 +2021/10/02 | 4964 | graphics/circuit_macros/doc/Multiplexer.tex +2021/10/02 | 499 | graphics/circuit_macros/doc/NLGMan.m4 +2021/10/02 | 3183 | graphics/circuit_macros/doc/NLG.tex +2021/10/02 | 1128 | graphics/circuit_macros/doc/NPDTMan.m4 +2021/10/02 | 5137 | graphics/circuit_macros/doc/NPDT.tex +2021/10/02 | 1040 | graphics/circuit_macros/doc/NportMan.m4 +2021/10/02 | 4666 | graphics/circuit_macros/doc/Nport.tex +2021/10/02 | 783 | graphics/circuit_macros/doc/Oblique.m4 +2021/10/02 | 137 | graphics/circuit_macros/doc/opampexbody.m4 +2021/10/02 | 56 | graphics/circuit_macros/doc/opampex.m4 +2021/10/02 | 1433 | graphics/circuit_macros/doc/OpampMan.m4 +2021/10/02 | 835 | graphics/circuit_macros/doc/Opto.m4 +2021/10/02 | 1624 | graphics/circuit_macros/doc/ParSeries.m4 +2021/10/02 | 1802 | graphics/circuit_macros/doc/PconnMan.m4 +2021/10/02 | 15033 | graphics/circuit_macros/doc/Pconn.tex +2021/10/02 | 801 | graphics/circuit_macros/doc/Potentiometers.m4 +2021/10/02 | 774 | graphics/circuit_macros/doc/quick.m4 +2021/10/02 | 2086 | graphics/circuit_macros/doc/relaycoilMan.m4 +2021/10/02 | 1259 | graphics/circuit_macros/doc/RelayMan.m4 +2021/10/02 | 7316 | graphics/circuit_macros/doc/Relay.tex +2021/10/02 | 1149 | graphics/circuit_macros/doc/ResistorsMan.m4 +2021/10/02 | 369 | graphics/circuit_macros/doc/sampleIC.m4 +2021/10/02 | 404 | graphics/circuit_macros/doc/Series.m4 +2021/10/02 | 1406 | graphics/circuit_macros/doc/ShiftRMan.m4 +2021/10/02 | 9425 | graphics/circuit_macros/doc/ShiftR.tex +2021/10/02 | 421 | graphics/circuit_macros/doc/Sinus.m4 +2021/10/02 | 2225 | graphics/circuit_macros/doc/SourcesMan.m4 +2021/10/02 | 15388 | graphics/circuit_macros/doc/Sources.tex +2021/10/02 | 217 | graphics/circuit_macros/doc/stringdims.m4 +2021/10/02 | 4015 | graphics/circuit_macros/doc/SwitchesMan.m4 +2021/10/02 | 19142 | graphics/circuit_macros/doc/Switches.tex +2021/10/02 | 1463 | graphics/circuit_macros/doc/Taps.m4 +2021/10/02 | 11 | graphics/circuit_macros/doc/test.tex +2021/10/02 | 1022 | graphics/circuit_macros/doc/TgateMan.m4 +2021/10/02 | 4178 | graphics/circuit_macros/doc/Tgate.tex +2021/10/02 | 144 | graphics/circuit_macros/doc/Thermal.m4 +2021/10/02 | 3321 | graphics/circuit_macros/doc/thyristorMan.m4 +2021/10/02 | 20418 | graphics/circuit_macros/doc/thyristor.tex +2021/10/02 | 535 | graphics/circuit_macros/doc/Tline.m4 +2021/10/02 | 165 | graphics/circuit_macros/doc/tranbody.m4 +2021/10/02 | 660 | graphics/circuit_macros/doc/ujtMan.m4 +2021/10/02 | 2441 | graphics/circuit_macros/doc/ujt.tex +2021/10/02 | 944 | graphics/circuit_macros/doc/VariableMan.m4 +2021/10/02 | 10401 | graphics/circuit_macros/doc/Variable.tex +2021/10/02 | 12 | graphics/circuit_macros/doc/Version.tex +2021/10/02 | 3346 | graphics/circuit_macros/doc/WindingsMan.m4 +2021/10/02 | 449 | graphics/circuit_macros/doc/woodchips.m4 +2021/10/02 | 2912 | graphics/circuit_macros/doc/Workflow.m4 +2021/10/02 | 1526 | graphics/circuit_macros/doc/XformMan.m4 +2021/10/02 | 25849 | graphics/circuit_macros/doc/Xform.tex +2021/10/02 | 19250 | graphics/circuit_macros/dpictools.pic +2021/10/02 | 1730 | graphics/circuit_macros/examples/ABlogix.m4 +2021/10/02 | 2402 | graphics/circuit_macros/examples/Adder.m4 +2021/10/02 | 4205 | graphics/circuit_macros/examples/Alogix.m4 +2021/10/02 | 494 | graphics/circuit_macros/examples/AmpTable.m4 +2021/10/02 | 1230 | graphics/circuit_macros/examples/Antennas.m4 +2021/10/02 | 5013 | graphics/circuit_macros/examples/AntiqueClock.m4 +2021/10/02 | 777 | graphics/circuit_macros/examples/Arrester.m4 +2021/10/02 | 1767 | graphics/circuit_macros/examples/ArrowFn.m4 +2021/10/02 | 6270 | graphics/circuit_macros/examples/ASME_Y14-5.m4 +2021/10/02 | 771 | graphics/circuit_macros/examples/Attention.m4 +2021/10/02 | 2634 | graphics/circuit_macros/examples/Audio.m4 +2021/10/02 | 2517 | graphics/circuit_macros/examples/Autoencoder.m4 +2021/10/02 | 1962 | graphics/circuit_macros/examples/Autologix.m4 +2021/10/02 | 4638 | graphics/circuit_macros/examples/Ball.m4 +2021/10/02 | 1619 | graphics/circuit_macros/examples/Bip.m4 +2021/10/02 | 917 | graphics/circuit_macros/examples/birds.m4 +2021/10/02 | 1075 | graphics/circuit_macros/examples/bistable.m4 +2021/10/02 | 3175 | graphics/circuit_macros/examples/Blogix.m4 +2021/10/02 | 2542 | graphics/circuit_macros/examples/brace.m4 +2021/10/02 | 1024 | graphics/circuit_macros/examples/Btree.m4 +2021/10/02 | 3509 | graphics/circuit_macros/examples/Buttons.m4 +2021/10/02 | 991 | graphics/circuit_macros/examples/Byte.m4 +2021/10/02 | 6371 | graphics/circuit_macros/examples/CanLogic.m4 +2021/10/02 | 1201 | graphics/circuit_macros/examples/Capacitors.m4 +2021/10/02 | 233 | graphics/circuit_macros/examples/Ccurve.m4 +2021/10/02 | 1039 | graphics/circuit_macros/examples/chaos.m4 +2021/10/02 | 1175 | graphics/circuit_macros/examples/Chips.m4 +2021/10/02 | 7670 | graphics/circuit_macros/examples/Chuck.m4 +2021/10/02 | 482 | graphics/circuit_macros/examples/clock.m4 +2021/10/02 | 750 | graphics/circuit_macros/examples/Connectors.m4 +2021/10/02 | 2178 | graphics/circuit_macros/examples/Conn.m4 +2021/10/02 | 3326 | graphics/circuit_macros/examples/Contact.m4 +2021/10/02 | 1585 | graphics/circuit_macros/examples/Contacts.m4 +2021/10/02 | 7069 | graphics/circuit_macros/examples/control.m4 +2021/10/02 | 551 | graphics/circuit_macros/examples/Counting.m4 +2021/10/02 | 1521 | graphics/circuit_macros/examples/Coxeter.m4 +2021/10/02 | 1358 | graphics/circuit_macros/examples/Crossbar.m4 +2021/10/02 | 2562 | graphics/circuit_macros/examples/Crow.m4 +2021/10/02 | 1879 | graphics/circuit_macros/examples/Cruller.m4 +2021/10/02 | 7434 | graphics/circuit_macros/examples/csc.m4 +2021/10/02 | 6003 | graphics/circuit_macros/examples/CSlight.m4 +2021/10/02 | 5890 | graphics/circuit_macros/examples/Csource.m4 +2021/10/02 | 460 | graphics/circuit_macros/examples/debug1.tex +2021/10/02 | 1959 | graphics/circuit_macros/examples/debug2.m4 +2021/10/02 | 655 | graphics/circuit_macros/examples/Decoder.m4 +2021/10/02 | 1485 | graphics/circuit_macros/examples/Demultiplexer.m4 +2021/10/02 | 654 | graphics/circuit_macros/examples/diamond.m4 +2021/10/02 | 6854 | graphics/circuit_macros/examples/Dini.m4 +2021/10/02 | 1467 | graphics/circuit_macros/examples/Diodes.m4 +2021/10/02 | 1966 | graphics/circuit_macros/examples/Drive.m4 +2021/10/02 | 980 | graphics/circuit_macros/examples/Emarrows.m4 +2021/10/02 | 6498 | graphics/circuit_macros/examples/Escher.m4 +2021/10/02 | 4023 | graphics/circuit_macros/examples/Euro.m4 +2021/10/02 | 2412 | graphics/circuit_macros/examples/ex00.m4 +2021/10/02 | 2283 | graphics/circuit_macros/examples/ex01.m4 +2021/10/02 | 1100 | graphics/circuit_macros/examples/ex02.m4 +2021/10/02 | 673 | graphics/circuit_macros/examples/ex03.m4 +2021/10/02 | 1654 | graphics/circuit_macros/examples/ex04.m4 +2021/10/02 | 1608 | graphics/circuit_macros/examples/ex05.m4 +2021/10/02 | 2170 | graphics/circuit_macros/examples/ex06.m4 +2021/10/02 | 2556 | graphics/circuit_macros/examples/ex08.m4 +2021/10/02 | 4313 | graphics/circuit_macros/examples/ex09.m4 +2021/10/02 | 1492 | graphics/circuit_macros/examples/ex10.m4 +2021/10/02 | 2361 | graphics/circuit_macros/examples/ex11.m4 +2021/10/02 | 3339 | graphics/circuit_macros/examples/ex12.m4 +2021/10/02 | 1003 | graphics/circuit_macros/examples/ex15.m4 +2021/10/02 | 1865 | graphics/circuit_macros/examples/ex16.m4 +2021/10/02 | 1126 | graphics/circuit_macros/examples/ex17.m4 +2021/10/02 | 865 | graphics/circuit_macros/examples/ex18.m4 +2021/10/02 | 2000 | graphics/circuit_macros/examples/ex21.m4 +2021/10/02 | 892920 | graphics/circuit_macros/examples/examples.pdf +2021/10/02 | 1746 | graphics/circuit_macros/examples/examples.tex +2021/10/02 | 8372 | graphics/circuit_macros/examples/exp.m4 +2021/10/02 | 5311 | graphics/circuit_macros/examples/fet.m4 +2021/10/02 | 17656 | graphics/circuit_macros/examples/files.tex +2021/10/02 | 645 | graphics/circuit_macros/examples/Floor.m4 +2021/10/02 | 11270 | graphics/circuit_macros/examples/FlowchartDefs.m4 +2021/10/02 | 4751 | graphics/circuit_macros/examples/Flow.m4 +2021/10/02 | 999 | graphics/circuit_macros/examples/Fuses.m4 +2021/10/02 | 3221 | graphics/circuit_macros/examples/Geometry.m4 +2021/10/02 | 421 | graphics/circuit_macros/examples/GrayCode.m4 +2021/10/02 | 5486 | graphics/circuit_macros/examples/graysurf.m4 +2021/10/02 | 828 | graphics/circuit_macros/examples/Grounds.m4 +2021/10/02 | 1132 | graphics/circuit_macros/examples/Headers.m4 +2021/10/02 | 1458 | graphics/circuit_macros/examples/header.tex +2021/10/02 | 13330 | graphics/circuit_macros/examples/Heathkit.m4 +2021/10/02 | 2068 | graphics/circuit_macros/examples/I2L.m4 +2021/10/02 | 1668 | graphics/circuit_macros/examples/IC10107.m4 +2021/10/02 | 11426 | graphics/circuit_macros/examples/ics.m4 +2021/10/02 | 32 | graphics/circuit_macros/examples/Incl.eps.bb +2021/10/02 | 45323 | graphics/circuit_macros/examples/Incl.eps.gz +2021/10/02 | 741 | graphics/circuit_macros/examples/Incleps.m4 +2021/10/02 | 29772 | graphics/circuit_macros/examples/Incl.pdf +2021/10/02 | 709 | graphics/circuit_macros/examples/Inclpdf.m4 +2021/10/02 | 1392 | graphics/circuit_macros/examples/Inductors.m4 +2021/10/02 | 2571 | graphics/circuit_macros/examples/IntersectingPlanes.m4 +2021/10/02 | 2362 | graphics/circuit_macros/examples/Jack.m4 +2021/10/02 | 2696 | graphics/circuit_macros/examples/keyval.m4 +2021/10/02 | 489 | graphics/circuit_macros/examples/Koch.m4 +2021/10/02 | 7127 | graphics/circuit_macros/examples/lcct.m4 +2021/10/02 | 2119 | graphics/circuit_macros/examples/Logic.m4 +2021/10/02 | 2304 | graphics/circuit_macros/examples/Loglog.m4 +2021/10/02 | 4459 | graphics/circuit_macros/examples/Lyap.m4 +2021/10/02 | 9288 | graphics/circuit_macros/examples/Makefile +2021/10/02 | 2986 | graphics/circuit_macros/examples/MC.m4 +2021/10/02 | 2846 | graphics/circuit_macros/examples/Metamodel.m4 +2021/10/02 | 95156 | graphics/circuit_macros/examples/mf/cct.mf +2021/10/02 | 764 | graphics/circuit_macros/examples/mf/cct.tfm +2021/10/02 | 4615 | graphics/circuit_macros/examples/mf/font.m4 +2021/10/02 | 1529 | graphics/circuit_macros/examples/mf/Makefile +2021/10/02 | 1076 | graphics/circuit_macros/examples/mf/mftest +2021/10/02 | 3785 | graphics/circuit_macros/examples/Mixer.m4 +2021/10/02 | 960 | graphics/circuit_macros/examples/MoreTable.m4 +2021/10/02 | 1922 | graphics/circuit_macros/examples/MotorControl.m4 +2021/10/02 | 409 | graphics/circuit_macros/examples/mpost/examplesmpost.tex +2021/10/02 | 4247 | graphics/circuit_macros/examples/mpost/Makefile +2021/10/02 | 685 | graphics/circuit_macros/examples/mpost/mptest +2021/10/02 | 703 | graphics/circuit_macros/examples/mpost/README-mpost +2021/10/02 | 418 | graphics/circuit_macros/examples/mpost/tstmpost.tex +2021/10/02 | 1400 | graphics/circuit_macros/examples/Multiplexer.m4 +2021/10/02 | 499 | graphics/circuit_macros/examples/NLG.m4 +2021/10/02 | 1128 | graphics/circuit_macros/examples/NPDT.m4 +2021/10/02 | 1040 | graphics/circuit_macros/examples/Nport.m4 +2021/10/02 | 2792 | graphics/circuit_macros/examples/OpAmpFilter.m4 +2021/10/02 | 1433 | graphics/circuit_macros/examples/Opamp.m4 +2021/10/02 | 2442 | graphics/circuit_macros/examples/Optoiso.m4 +2021/10/02 | 1852 | graphics/circuit_macros/examples/Orbits.m4 +2021/10/02 | 1802 | graphics/circuit_macros/examples/Pconn.m4 +2021/10/02 | 1419 | graphics/circuit_macros/examples/person.m4 +2021/10/02 | 2674 | graphics/circuit_macros/examples/Planes.m4 +2021/10/02 | 6160 | graphics/circuit_macros/examples/Plate.m4 +2021/10/02 | 1174 | graphics/circuit_macros/examples/PPA.m4 +2021/10/02 | 715 | graphics/circuit_macros/examples/psfrag/examplespsfrag.tex +2021/10/02 | 4683 | graphics/circuit_macros/examples/psfrag/Makefile +2021/10/02 | 317 | graphics/circuit_macros/examples/psfrag/README-psfrag.txt +2021/10/02 | 371 | graphics/circuit_macros/examples/psfrag/tstpsfrag.tex +2021/10/02 | 3954 | graphics/circuit_macros/examples/PushPull.m4 +2021/10/02 | 2014 | graphics/circuit_macros/examples/pwrsupply.m4 +2021/10/02 | 918 | graphics/circuit_macros/examples/Quantum.m4 +2021/10/02 | 774 | graphics/circuit_macros/examples/quick.m4 +2021/10/02 | 3727 | graphics/circuit_macros/examples/random.m4 +2021/10/02 | 2817 | graphics/circuit_macros/examples/README-examples +2021/10/02 | 7006 | graphics/circuit_macros/examples/Rectifiers.m4 +2021/10/02 | 3825 | graphics/circuit_macros/examples/recycle.m4 +2021/10/02 | 2086 | graphics/circuit_macros/examples/relaycoil.m4 +2021/10/02 | 1259 | graphics/circuit_macros/examples/Relay.m4 +2021/10/02 | 1145 | graphics/circuit_macros/examples/Resistors.m4 +2021/10/02 | 1443 | graphics/circuit_macros/examples/Resolver.m4 +2021/10/02 | 4569 | graphics/circuit_macros/examples/rose.m4 +2021/10/02 | 221 | graphics/circuit_macros/examples/rotate.tex +2021/10/02 | 1525 | graphics/circuit_macros/examples/rotatetext.m4 +2021/10/02 | 533 | graphics/circuit_macros/examples/Rotbox.m4 +2021/10/02 | 365 | graphics/circuit_macros/examples/rotellipse.m4 +2021/10/02 | 740 | graphics/circuit_macros/examples/SampleFlow.m4 +2021/10/02 | 1778 | graphics/circuit_macros/examples/Schottky.m4 +2021/10/02 | 2761 | graphics/circuit_macros/examples/sfg.m4 +2021/10/02 | 4827 | graphics/circuit_macros/examples/Shaky.m4 +2021/10/02 | 7721 | graphics/circuit_macros/examples/shapes.m4 +2021/10/02 | 1406 | graphics/circuit_macros/examples/ShiftR.m4 +2021/10/02 | 1331 | graphics/circuit_macros/examples/Sierpinski.m4 +2021/10/02 | 419 | graphics/circuit_macros/examples/Sixpole.m4 +2021/10/02 | 370 | graphics/circuit_macros/examples/snake.m4 +2021/10/02 | 2165 | graphics/circuit_macros/examples/Sources.m4 +2021/10/02 | 1906 | graphics/circuit_macros/examples/SPM.m4 +2021/10/02 | 380 | graphics/circuit_macros/examples/SQUID.m4 +2021/10/02 | 953 | graphics/circuit_macros/examples/squiggle.m4 +2021/10/02 | 1955 | graphics/circuit_macros/examples/svg/ABlogixSVG.m4 +2021/10/02 | 2528 | graphics/circuit_macros/examples/svg/AdderSVG.m4 +2021/10/02 | 4340 | graphics/circuit_macros/examples/svg/AlogixSVG.m4 +2021/10/02 | 538 | graphics/circuit_macros/examples/svg/AmpTableSVG.m4 +2021/10/02 | 1090 | graphics/circuit_macros/examples/svg/AntennasSVG.m4 +2021/10/02 | 1894 | graphics/circuit_macros/examples/svg/ArrowFnSVG.m4 +2021/10/02 | 2720 | graphics/circuit_macros/examples/svg/AudioSVG.m4 +2021/10/02 | 2989 | graphics/circuit_macros/examples/svg/AutoencoderSVG.m4 +2021/10/02 | 1668 | graphics/circuit_macros/examples/svg/Banking.m4 +2021/10/02 | 1812 | graphics/circuit_macros/examples/svg/BipSVG.m4 +2021/10/02 | 4289 | graphics/circuit_macros/examples/svg/BtreeSVG.m4 +2021/10/02 | 3567 | graphics/circuit_macros/examples/svg/ButtonsSVG.m4 +2021/10/02 | 937 | graphics/circuit_macros/examples/svg/ByteSVG.m4 +2021/10/02 | 6413 | graphics/circuit_macros/examples/svg/CanLogicSVG.m4 +2021/10/02 | 1160 | graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 +2021/10/02 | 2661 | graphics/circuit_macros/examples/svg/CctTableSVG.m4 +2021/10/02 | 1214 | graphics/circuit_macros/examples/svg/ChipsSVG.m4 +2021/10/02 | 715 | graphics/circuit_macros/examples/svg/ConnectorsSVG.m4 +2021/10/02 | 2111 | graphics/circuit_macros/examples/svg/ConnSVG.m4 +2021/10/02 | 1737 | graphics/circuit_macros/examples/svg/ContactsSVG.m4 +2021/10/02 | 3646 | graphics/circuit_macros/examples/svg/ContactSVG.m4 +2021/10/02 | 8006 | graphics/circuit_macros/examples/svg/controlSVG.m4 +2021/10/02 | 793 | graphics/circuit_macros/examples/svg/CountingSVG.m4 +2021/10/02 | 2525 | graphics/circuit_macros/examples/svg/CrowSVG.m4 +2021/10/02 | 1874 | graphics/circuit_macros/examples/svg/CrullerSVG.m4 +2021/10/02 | 7485 | graphics/circuit_macros/examples/svg/cscSVG.m4 +2021/10/02 | 7418 | graphics/circuit_macros/examples/svg/CsourceSVG.m4 +2021/10/02 | 745 | graphics/circuit_macros/examples/svg/DecoderSVG.m4 +2021/10/02 | 1373 | graphics/circuit_macros/examples/svg/DemultiplexerSVG.m4 +2021/10/02 | 609 | graphics/circuit_macros/examples/svg/diamondSVG.m4 +2021/10/02 | 6854 | graphics/circuit_macros/examples/svg/DiniSVG.m4 +2021/10/02 | 1429 | graphics/circuit_macros/examples/svg/DiodesSVG.m4 +2021/10/02 | 1966 | graphics/circuit_macros/examples/svg/DriveSVG.m4 +2021/10/02 | 25821 | graphics/circuit_macros/examples/svg/EEPSVG.m4 +2021/10/02 | 1070 | graphics/circuit_macros/examples/svg/EmarrowsSVG.m4 +2021/10/02 | 6501 | graphics/circuit_macros/examples/svg/EscherSVG.m4 +2021/10/02 | 2443 | graphics/circuit_macros/examples/svg/ex00SVG.m4 +2021/10/02 | 2629 | graphics/circuit_macros/examples/svg/ex01SVG.m4 +2021/10/02 | 1093 | graphics/circuit_macros/examples/svg/ex02SVG.m4 +2021/10/02 | 855 | graphics/circuit_macros/examples/svg/ex03SVG.m4 +2021/10/02 | 1891 | graphics/circuit_macros/examples/svg/ex04SVG.m4 +2021/10/02 | 3390 | graphics/circuit_macros/examples/svg/ex05SVG.m4 +2021/10/02 | 2018 | graphics/circuit_macros/examples/svg/ex06SVG.m4 +2021/10/02 | 2559 | graphics/circuit_macros/examples/svg/ex08SVG.m4 +2021/10/02 | 4119 | graphics/circuit_macros/examples/svg/ex09SVG.m4 +2021/10/02 | 1699 | graphics/circuit_macros/examples/svg/ex10SVG.m4 +2021/10/02 | 2685 | graphics/circuit_macros/examples/svg/ex11SVG.m4 +2021/10/02 | 3522 | graphics/circuit_macros/examples/svg/ex12SVG.m4 +2021/10/02 | 970 | graphics/circuit_macros/examples/svg/ex15SVG.m4 +2021/10/02 | 1893 | graphics/circuit_macros/examples/svg/ex16SVG.m4 +2021/10/02 | 1204 | graphics/circuit_macros/examples/svg/ex17SVG.m4 +2021/10/02 | 1065 | graphics/circuit_macros/examples/svg/ex18SVG.m4 +2021/10/02 | 1882 | graphics/circuit_macros/examples/svg/ex21SVG.m4 +2021/10/02 | 24906 | graphics/circuit_macros/examples/svg/examplesSVG.htmx +2021/10/02 | 10589 | graphics/circuit_macros/examples/svg/expSVG.m4 +2021/10/02 | 5365 | graphics/circuit_macros/examples/svg/fetSVG.m4 +2021/10/02 | 5171 | graphics/circuit_macros/examples/svg/FlowSVG.m4 +2021/10/02 | 538 | graphics/circuit_macros/examples/svg/FontsSVG.m4 +2021/10/02 | 1992 | graphics/circuit_macros/examples/svg/FourbarSVG.m4 +2021/10/02 | 959 | graphics/circuit_macros/examples/svg/FusesSVG.m4 +2021/10/02 | 6617 | graphics/circuit_macros/examples/svg/GeometrySVG.m4 +2021/10/02 | 1875 | graphics/circuit_macros/examples/svg/GrayCodeSVG.m4 +2021/10/02 | 5469 | graphics/circuit_macros/examples/svg/graysurfSVG.m4 +2021/10/02 | 810 | graphics/circuit_macros/examples/svg/GroundsSVG.m4 +2021/10/02 | 1265 | graphics/circuit_macros/examples/svg/HeadersSVG.m4 +2021/10/02 | 12711 | graphics/circuit_macros/examples/svg/HeathkitSVG.m4 +2021/10/02 | 2171 | graphics/circuit_macros/examples/svg/I2LSVG.m4 +2021/10/02 | 11593 | graphics/circuit_macros/examples/svg/icsSVG.m4 +2021/10/02 | 4003 | graphics/circuit_macros/examples/svg/InclepsSVG.m4 +2021/10/02 | 21384 | graphics/circuit_macros/examples/svg/Incl.jpg +2021/10/02 | 1343 | graphics/circuit_macros/examples/svg/InductorsSVG.m4 +2021/10/02 | 2051 | graphics/circuit_macros/examples/svg/JackSVG.m4 +2021/10/02 | 7203 | graphics/circuit_macros/examples/svg/lcctSVG.m4 +2021/10/02 | 6216 | graphics/circuit_macros/examples/svg/LgateSVG.m4 +2021/10/02 | 63 | graphics/circuit_macros/examples/svg/local_init.m4 +2021/10/02 | 1931 | graphics/circuit_macros/examples/svg/LogicSVG.m4 +2021/10/02 | 2241 | graphics/circuit_macros/examples/svg/LoglogSVG.m4 +2021/10/02 | 5106 | graphics/circuit_macros/examples/svg/Makefile +2021/10/02 | 3473 | graphics/circuit_macros/examples/svg/MCSVG.m4 +2021/10/02 | 3489 | graphics/circuit_macros/examples/svg/MixerSVG.m4 +2021/10/02 | 973 | graphics/circuit_macros/examples/svg/MoreTableSVG.m4 +2021/10/02 | 1953 | graphics/circuit_macros/examples/svg/MotorControlSVG.m4 +2021/10/02 | 1403 | graphics/circuit_macros/examples/svg/MultiplexerSVG.m4 +2021/10/02 | 532 | graphics/circuit_macros/examples/svg/NLGSVG.m4 +2021/10/02 | 1157 | graphics/circuit_macros/examples/svg/NPDTSVG.m4 +2021/10/02 | 748 | graphics/circuit_macros/examples/svg/Np.m4 +2021/10/02 | 1238 | graphics/circuit_macros/examples/svg/NportSVG.m4 +2021/10/02 | 1034 | graphics/circuit_macros/examples/svg/OpampSVG.m4 +2021/10/02 | 2551 | graphics/circuit_macros/examples/svg/OptoisoSVG.m4 +2021/10/02 | 10193 | graphics/circuit_macros/examples/svg/paletteSVG.m4 +2021/10/02 | 1776 | graphics/circuit_macros/examples/svg/PconnSVG.m4 +2021/10/02 | 6153 | graphics/circuit_macros/examples/svg/PlateSVG.m4 +2021/10/02 | 3778 | graphics/circuit_macros/examples/svg/PushPullSVG.m4 +2021/10/02 | 2027 | graphics/circuit_macros/examples/svg/pwrsupplySVG.m4 +2021/10/02 | 947 | graphics/circuit_macros/examples/svg/QuantumSVG.m4 +2021/10/02 | 886 | graphics/circuit_macros/examples/svg/quickSVG.m4 +2021/10/02 | 3756 | graphics/circuit_macros/examples/svg/randomSVG.m4 +2021/10/02 | 7546 | graphics/circuit_macros/examples/svg/RectifiersSVG.m4 +2021/10/02 | 3825 | graphics/circuit_macros/examples/svg/recycleSVG.m4 +2021/10/02 | 2069 | graphics/circuit_macros/examples/svg/relaycoilSVG.m4 +2021/10/02 | 1431 | graphics/circuit_macros/examples/svg/RelaySVG.m4 +2021/10/02 | 1186 | graphics/circuit_macros/examples/svg/ResistorsSVG.m4 +2021/10/02 | 5412 | graphics/circuit_macros/examples/svg/roseSVG.m4 +2021/10/02 | 563 | graphics/circuit_macros/examples/svg/RotboxSVG.m4 +2021/10/02 | 1837 | graphics/circuit_macros/examples/svg/SchottkySVG.m4 +2021/10/02 | 3290 | graphics/circuit_macros/examples/svg/sfgSVG.m4 +2021/10/02 | 7507 | graphics/circuit_macros/examples/svg/shapesSVG.m4 +2021/10/02 | 1313 | graphics/circuit_macros/examples/svg/ShiftRSVG.m4 +2021/10/02 | 1331 | graphics/circuit_macros/examples/svg/SierpinskiSVG.m4 +2021/10/02 | 419 | graphics/circuit_macros/examples/svg/SixpoleSVG.m4 +2021/10/02 | 18018 | graphics/circuit_macros/examples/svg/SLD.m4 +2021/10/02 | 4277 | graphics/circuit_macros/examples/svg/sldtestsSVG.m4 +2021/10/02 | 1907 | graphics/circuit_macros/examples/svg/SourcesSVG.m4 +2021/10/02 | 417 | graphics/circuit_macros/examples/svg/SQUIDSVG.m4 +2021/10/02 | 1050 | graphics/circuit_macros/examples/svg/SVGconfig.m4 +2021/10/02 | 4309 | graphics/circuit_macros/examples/svg/SwitchesSVG.m4 +2021/10/02 | 1055 | graphics/circuit_macros/examples/svg/TgateSVG.m4 +2021/10/02 | 1444 | graphics/circuit_macros/examples/svg/ThreeSVG.m4 +2021/10/02 | 3310 | graphics/circuit_macros/examples/svg/thyristorSVG.m4 +2021/10/02 | 1612 | graphics/circuit_macros/examples/svg/TimerSVG.m4 +2021/10/02 | 14057 | graphics/circuit_macros/examples/svg/tstSVG.htmx +2021/10/02 | 1630 | graphics/circuit_macros/examples/svg/TTLnandSVG.m4 +2021/10/02 | 3091 | graphics/circuit_macros/examples/svg/TtreeSVG.m4 +2021/10/02 | 12478 | graphics/circuit_macros/examples/svg/TubediagsSVG.m4 +2021/10/02 | 682 | graphics/circuit_macros/examples/svg/ujtSVG.m4 +2021/10/02 | 24141 | graphics/circuit_macros/examples/svg/UNOSVG.m4 +2021/10/02 | 988 | graphics/circuit_macros/examples/svg/VariableSVG.m4 +2021/10/02 | 2994 | graphics/circuit_macros/examples/svg/WindingsSVG.m4 +2021/10/02 | 353 | graphics/circuit_macros/examples/svg/windows.m4 +2021/10/02 | 3631 | graphics/circuit_macros/examples/svg/wormSVG.m4 +2021/10/02 | 1559 | graphics/circuit_macros/examples/svg/XformSVG.m4 +2021/10/02 | 1985 | graphics/circuit_macros/examples/svg/XORSVG.m4 +2021/10/02 | 1546 | graphics/circuit_macros/examples/svg/Xtest.m4 +2021/10/02 | 3973 | graphics/circuit_macros/examples/Switches.m4 +2021/10/02 | 591 | graphics/circuit_macros/examples/test.m4 +2021/10/02 | 416 | graphics/circuit_macros/examples/testpdf.tex +2021/10/02 | 1022 | graphics/circuit_macros/examples/Tgate.m4 +2021/10/02 | 1287 | graphics/circuit_macros/examples/Three.m4 +2021/10/02 | 3321 | graphics/circuit_macros/examples/thyristor.m4 +2021/10/02 | 219 | graphics/circuit_macros/examples/tst1.tex +2021/10/02 | 409 | graphics/circuit_macros/examples/tst.tex +2021/10/02 | 464 | graphics/circuit_macros/examples/tsttikz.tex +2021/10/02 | 1558 | graphics/circuit_macros/examples/TTLnand.m4 +2021/10/02 | 2097 | graphics/circuit_macros/examples/Ttree.m4 +2021/10/02 | 9840 | graphics/circuit_macros/examples/tubedefs.m4 +2021/10/02 | 13264 | graphics/circuit_macros/examples/Tubediags.m4 +2021/10/02 | 660 | graphics/circuit_macros/examples/ujt.m4 +2021/10/02 | 932 | graphics/circuit_macros/examples/Variable.m4 +2021/10/02 | 1906 | graphics/circuit_macros/examples/venus.m4 +2021/10/02 | 442 | graphics/circuit_macros/examples/Wheat.m4 +2021/10/02 | 3346 | graphics/circuit_macros/examples/Windings.m4 +2021/10/02 | 353 | graphics/circuit_macros/examples/windows.m4 +2021/10/02 | 2799 | graphics/circuit_macros/examples/worm.m4 +2021/10/02 | 337 | graphics/circuit_macros/examples/xfig/Makefile +2021/10/02 | 21398 | graphics/circuit_macros/examples/xfig/xfiglib.fig +2021/10/02 | 5969 | graphics/circuit_macros/examples/xfig/xfiglib.m4 +2021/10/02 | 1526 | graphics/circuit_macros/examples/Xform.m4 +2021/10/02 | 1823 | graphics/circuit_macros/examples/XOR.m4 +2021/10/02 | 656 | graphics/circuit_macros/examples/Zcos.m4 +2021/10/02 | 1019 | graphics/circuit_macros/gpic.m4 +2021/10/02 | 4079 | graphics/circuit_macros/INSTALL +2021/10/02 | 12765 | graphics/circuit_macros/lib3D.m4 +2021/10/02 | 174507 | graphics/circuit_macros/libcct.m4 +2021/10/02 | 87619 | graphics/circuit_macros/libgen.m4 +2021/10/02 | 47795 | graphics/circuit_macros/liblog.m4 +2021/10/02 | 19176 | graphics/circuit_macros/Licence.txt +2021/10/02 | 1639 | graphics/circuit_macros/Makefile +2021/10/02 | 1114 | graphics/circuit_macros/mfpic.m4 +2021/10/02 | 1640 | graphics/circuit_macros/mpost.m4 +2021/10/02 | 2085 | graphics/circuit_macros/pgf.m4 +2021/10/02 | 2834 | graphics/circuit_macros/postscript.m4 +2021/10/02 | 706 | graphics/circuit_macros/psfrag.m4 +2021/10/02 | 2099 | graphics/circuit_macros/pstricks.m4 +2021/10/02 | 16309 | graphics/circuit_macros/README +2021/10/02 | 11598 | graphics/circuit_macros/svg.m4 +2021/10/02 | 1029 | graphics/circuit_macros/xfig.m4 +2021/10/02 | 3369975 | graphics/circuit_macros.zip 2018/09/22 | 49163 | graphics/coloremoji/coloremoji.sty 2018/09/22 | 15169 | graphics/coloremoji/emoji_images/hires/1F004.pdf 2018/09/22 | 24318 | graphics/coloremoji/emoji_images/hires/1F0CF.pdf @@ -156430,15 +156436,14 @@ 2013/04/19 | 3071 | graphics/pstricks/contrib/numericplots/tex/latex/NumericPlots_styles.tex 2013/04/19 | 5087 | graphics/pstricks/contrib/numericplots/tex/latex/NumericPlots_TickLabels.tex 2013/09/20 | 634020 | graphics/pstricks/contrib/numericplots.zip -2012/04/14 | 729 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex -2012/04/14 | 1347 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex -2012/04/14 | 2317 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex -2007/07/29 | 1582 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile +2021/10/02 | 729 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex +2021/10/02 | 1347 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex +2021/10/02 | 2317 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex +2021/10/02 | 1604 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile 2007/07/23 | 1579 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.bib -2012/04/14 | 287012 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf -2012/04/14 | 1342560 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.ps +2021/10/02 | 304837 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf 2012/03/16 | 44680 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.tex -2012/04/14 | 1674 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex +2021/10/02 | 1674 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex 2007/07/21 | 352 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/abortions.csv 2007/07/23 | 674 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/badsort.csv 2007/07/22 | 358 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/childlessness.csv @@ -156448,40 +156453,40 @@ 2007/07/14 | 1063 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/english.csv 2007/07/23 | 1260 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/english_short.cfg 2007/07/17 | 788 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/pedigree.cfg -2007/07/22 | 1261 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/russian.cfg -2007/06/30 | 641 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/russian.csv -2007/07/22 | 581 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/sort1.csv +2007/07/19 | 1261 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/russian.cfg +2007/06/28 | 641 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/russian.csv +2007/07/23 | 581 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/sort1.csv 2007/07/23 | 674 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/sort2.csv 2007/07/23 | 672 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/sort3.csv 2007/07/22 | 869 | graphics/pstricks/contrib/pedigree/pedigree-perl/examples/twins.csv -2007/06/30 | 17990 | graphics/pstricks/contrib/pedigree/pedigree-perl/LICENSE +2007/06/28 | 17990 | graphics/pstricks/contrib/pedigree/pedigree-perl/LICENSE 2007/07/29 | 1114 | graphics/pstricks/contrib/pedigree/pedigree-perl/Makefile -2012/03/16 | 480 | graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS -2012/04/14 | 5653 | graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 -2012/04/14 | 5083 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 -2012/04/14 | 5522 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 -2007/07/22 | 3429 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm -2012/04/14 | 7112 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 -2007/07/08 | 10446 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm -2012/04/14 | 5596 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 -2007/07/23 | 3177 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm -2012/04/14 | 6205 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 -2007/10/21 | 9972 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm +2021/10/02 | 573 | graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS +2021/10/02 | 5808 | graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 +2021/10/02 | 5048 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 +2021/10/02 | 5572 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 +2021/10/02 | 3430 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm +2021/10/02 | 7363 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 +2021/10/02 | 10447 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm +2021/10/02 | 5669 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 +2021/10/02 | 3178 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm +2021/10/02 | 6348 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 +2021/10/02 | 9972 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm 2007/07/10 | 675 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Makefile -2012/04/14 | 6446 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 -2007/07/16 | 8265 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm -2012/04/14 | 11761 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 -2009/01/06 | 29851 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm -2012/04/14 | 4996 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 -2007/07/17 | 5196 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm -2012/04/14 | 6472 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 -2007/07/23 | 8061 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm -2012/04/14 | 12091 | graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl -2007/07/10 | 2189 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm -2012/04/14 | 5405 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 -2007/07/16 | 3767 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm -2012/04/14 | 1205 | graphics/pstricks/contrib/pedigree/pedigree-perl/README -2012/04/14 | 789696 | graphics/pstricks/contrib/pedigree/pedigree-perl.zip +2021/10/02 | 6628 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 +2021/10/02 | 8266 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm +2021/10/02 | 12514 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 +2021/10/02 | 29852 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm +2021/10/02 | 4988 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 +2021/10/02 | 5197 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm +2021/10/02 | 6730 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 +2021/10/02 | 8061 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm +2021/10/02 | 12124 | graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl +2021/10/02 | 2194 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm +2021/10/02 | 5468 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 +2021/10/02 | 3768 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm +2021/10/02 | 1207 | graphics/pstricks/contrib/pedigree/pedigree-perl/README +2021/10/02 | 319516 | graphics/pstricks/contrib/pedigree/pedigree-perl.zip 2017/11/20 | 1251 | graphics/pstricks/contrib/pedigree/pst-pdgr/Makefile 2017/11/20 | 299 | graphics/pstricks/contrib/pedigree/pst-pdgr/NEWS 2007/07/12 | 1575 | graphics/pstricks/contrib/pedigree/pst-pdgr/pst-pdgr.bib @@ -182217,6 +182222,14 @@ 2014/05/15 | 266221 | info/tex-virtual-academy-pl/tex/tex_key.html 2014/05/05 | 17632 | info/tex-virtual-academy-pl/tex/tryby.html 2014/05/21 | 1415765 | info/tex-virtual-academy-pl.zip +2021/04/18 | 258 | info/tex-vpat/LICENSE +2021/09/25 | 788 | info/tex-vpat/Makefile +2021/04/18 | 596 | info/tex-vpat/README.md +2021/09/25 | 8643 | info/tex-vpat/texlive-vpat.css +2021/09/25 | 158761 | info/tex-vpat/texlive-vpat.html +2021/09/25 | 168794 | info/tex-vpat/texlive-vpat.pdf +2021/09/25 | 32031 | info/tex-vpat/texlive-vpat.tex +2021/10/02 | 192730 | info/tex-vpat.zip 2021/09/23 | 167478 | info/tlmgrbasics/doc/tlmgr.pdf 2021/09/23 | 23423 | info/tlmgrbasics/doc/tlmgr.tex 2021/09/23 | 447 | info/tlmgrbasics/README @@ -234191,6 +234204,13 @@ 2020/09/08 | 1389 | macros/luatex/latex/stricttex/stricttex.sty 2020/09/08 | 4505 | macros/luatex/latex/stricttex/stricttex.tex 2020/09/08 | 59039 | macros/luatex/latex/stricttex.zip +2021/10/01 | 762 | macros/luatex/latex/truthtable/README.md +2021/10/01 | 278 | macros/luatex/latex/truthtable/res/exampletableoutput.tex +2021/10/01 | 307 | macros/luatex/latex/truthtable/res/exampletable.tex +2021/10/01 | 106754 | macros/luatex/latex/truthtable/truthtable.pdf +2021/10/01 | 4037 | macros/luatex/latex/truthtable/truthtable.sty +2021/10/01 | 9429 | macros/luatex/latex/truthtable/truthtable.tex +2021/10/02 | 107647 | macros/luatex/latex/truthtable.zip 2018/02/07 | 216 | macros/luatex/latex/typewriter/README.md 2018/02/14 | 101048 | macros/luatex/latex/typewriter/typewriter-guide.pdf 2018/02/11 | 2605 | macros/luatex/latex/typewriter/typewriter-guide.tex @@ -267818,26 +267838,26 @@ 2013/06/22 | 1104 | support/create-struktex/README 2013/06/22 | 11040 | support/create-struktex/structgen.src.zip 2013/06/24 | 421630 | support/create-struktex.zip -2018/05/28 | 6219 | support/crossrefware/bbl2bib.1 -2018/04/29 | 7549 | support/crossrefware/bbl2bib.pl -2017/11/27 | 7005 | support/crossrefware/bibdoiadd.1 +2021/10/02 | 6217 | support/crossrefware/bbl2bib.1 +2021/10/02 | 7544 | support/crossrefware/bbl2bib.pl +2021/10/02 | 7003 | support/crossrefware/bibdoiadd.1 2017/11/18 | 229 | support/crossrefware/bibdoiadd.cfg -2017/11/27 | 7522 | support/crossrefware/bibdoiadd.pl -2017/11/18 | 5560 | support/crossrefware/bibmradd.1 -2017/11/18 | 4817 | support/crossrefware/bibmradd.pl -2017/11/27 | 4998 | support/crossrefware/biburl2doi.1 -2017/11/27 | 2820 | support/crossrefware/biburl2doi.pl -2018/05/28 | 5558 | support/crossrefware/bibzbladd.1 -2018/04/15 | 4627 | support/crossrefware/bibzbladd.pl +2021/10/02 | 7517 | support/crossrefware/bibdoiadd.pl +2021/10/02 | 5558 | support/crossrefware/bibmradd.1 +2021/10/02 | 4812 | support/crossrefware/bibmradd.pl +2021/10/02 | 4996 | support/crossrefware/biburl2doi.1 +2021/10/02 | 2815 | support/crossrefware/biburl2doi.pl +2021/10/02 | 5556 | support/crossrefware/bibzbladd.1 +2021/10/02 | 4622 | support/crossrefware/bibzbladd.pl 2017/11/18 | 21519 | support/crossrefware/citations.bib -2018/05/28 | 136411 | support/crossrefware/crossrefware.pdf -2017/11/18 | 1514 | support/crossrefware/head.ltx -2017/11/18 | 5829 | support/crossrefware/ltx2crossrefxml.1 -2017/11/18 | 318 | support/crossrefware/ltx2crossrefxml.cfg -2017/11/18 | 10992 | support/crossrefware/ltx2crossrefxml.pl -2017/11/26 | 784 | support/crossrefware/Makefile -2018/04/15 | 1895 | support/crossrefware/README -2018/05/28 | 176420 | support/crossrefware.zip +2021/10/02 | 233582 | support/crossrefware/crossrefware.pdf +2021/10/02 | 2090 | support/crossrefware/head.ltx +2021/10/02 | 16452 | support/crossrefware/ltx2crossrefxml.1 +2021/10/02 | 435 | support/crossrefware/ltx2crossrefxml.cfg +2021/10/02 | 30190 | support/crossrefware/ltx2crossrefxml.pl +2021/10/02 | 923 | support/crossrefware/Makefile +2021/10/02 | 2334 | support/crossrefware/README +2021/10/02 | 280503 | support/crossrefware.zip 2010/01/31 | 184880 | support/csv2latex/csv2latex-doc.pdf 2010/01/31 | 5342 | support/csv2latex/csv2latex-doc.tex 2010/01/31 | 3554 | support/csv2latex/csv2latex.scpt @@ -279622,9 +279642,9 @@ 2019/02/28 | 155764 | systems/texlive/tlnet/archive/decimal.doc.r23374.tar.xz 2019/02/28 | 1420 | systems/texlive/tlnet/archive/decimal.r23374.tar.xz 2019/02/28 | 6576 | systems/texlive/tlnet/archive/decimal.source.r23374.tar.xz -2020/12/09 | 108752 | systems/texlive/tlnet/archive/decision-table.doc.r57094.tar.xz -2020/12/09 | 1672 | systems/texlive/tlnet/archive/decision-table.r57094.tar.xz -2020/12/09 | 4736 | systems/texlive/tlnet/archive/decision-table.source.r57094.tar.xz +2021/10/02 | 107624 | systems/texlive/tlnet/archive/decision-table.doc.r60673.tar.xz +2021/10/02 | 2080 | systems/texlive/tlnet/archive/decision-table.r60673.tar.xz +2021/10/02 | 5920 | systems/texlive/tlnet/archive/decision-table.source.r60673.tar.xz 2020/05/22 | 397084 | systems/texlive/tlnet/archive/decorule.doc.r55230.tar.xz 2020/05/22 | 1476 | systems/texlive/tlnet/archive/decorule.r55230.tar.xz 2020/05/22 | 17264 | systems/texlive/tlnet/archive/decorule.source.r55230.tar.xz @@ -282236,8 +282256,8 @@ 2019/02/28 | 348 | systems/texlive/tlnet/archive/installfont.x86_64-linuxmusl.r46840.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/installfont.x86_64-linux.r19743.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/installfont.x86_64-solaris.r19743.tar.xz -2021/08/02 | 769484 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.doc.r60134.tar.xz -2021/08/02 | 568 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.r60134.tar.xz +2021/10/02 | 772896 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.doc.r60672.tar.xz +2021/10/02 | 568 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.r60672.tar.xz 2019/12/18 | 423196 | systems/texlive/tlnet/archive/intcalc.doc.r53168.tar.xz 2019/12/18 | 5436 | systems/texlive/tlnet/archive/intcalc.r53168.tar.xz 2019/12/18 | 12576 | systems/texlive/tlnet/archive/intcalc.source.r53168.tar.xz @@ -283621,14 +283641,14 @@ 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.amd64-freebsd.r43292.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.amd64-netbsd.r43292.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.armhf-linux.r43292.tar.xz -2021/08/29 | 3003776 | systems/texlive/tlnet/archive/lwarp.doc.r60345.tar.xz +2021/10/02 | 3007440 | systems/texlive/tlnet/archive/lwarp.doc.r60674.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/lwarp.i386-cygwin.r43292.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.i386-freebsd.r43292.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.i386-linux.r43292.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.i386-netbsd.r43292.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/lwarp.i386-solaris.r43292.tar.xz -2021/08/29 | 206168 | systems/texlive/tlnet/archive/lwarp.r60345.tar.xz -2021/08/29 | 445160 | systems/texlive/tlnet/archive/lwarp.source.r60345.tar.xz +2021/10/02 | 207484 | systems/texlive/tlnet/archive/lwarp.r60674.tar.xz +2021/10/02 | 447516 | systems/texlive/tlnet/archive/lwarp.source.r60674.tar.xz 2021/02/25 | 344 | systems/texlive/tlnet/archive/lwarp.universal-darwin.r57908.tar.xz 2019/02/28 | 684 | systems/texlive/tlnet/archive/lwarp.win32.r43292.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/lwarp.x86_64-cygwin.r43292.tar.xz @@ -283786,9 +283806,9 @@ 2019/02/28 | 317412 | systems/texlive/tlnet/archive/marginnote.doc.r48383.tar.xz 2019/02/28 | 3356 | systems/texlive/tlnet/archive/marginnote.r48383.tar.xz 2019/02/28 | 10216 | systems/texlive/tlnet/archive/marginnote.source.r48383.tar.xz -2021/09/02 | 775388 | systems/texlive/tlnet/archive/markdown.doc.r60394.tar.xz -2021/09/02 | 33808 | systems/texlive/tlnet/archive/markdown.r60394.tar.xz -2021/09/02 | 76152 | systems/texlive/tlnet/archive/markdown.source.r60394.tar.xz +2021/10/02 | 879728 | systems/texlive/tlnet/archive/markdown.doc.r60667.tar.xz +2021/10/02 | 40256 | systems/texlive/tlnet/archive/markdown.r60667.tar.xz +2021/10/02 | 83524 | systems/texlive/tlnet/archive/markdown.source.r60667.tar.xz 2019/02/28 | 426608 | systems/texlive/tlnet/archive/marvosym.doc.r29349.tar.xz 2019/02/28 | 133476 | systems/texlive/tlnet/archive/marvosym.r29349.tar.xz 2019/02/28 | 1256 | systems/texlive/tlnet/archive/marvosym.source.r29349.tar.xz @@ -284729,9 +284749,9 @@ 2019/03/21 | 1088508 | systems/texlive/tlnet/archive/njurepo.doc.r50492.tar.xz 2019/03/21 | 10944 | systems/texlive/tlnet/archive/njurepo.r50492.tar.xz 2019/03/21 | 21544 | systems/texlive/tlnet/archive/njurepo.source.r50492.tar.xz -2021/09/18 | 702212 | systems/texlive/tlnet/archive/njuthesis.doc.r60529.tar.xz -2021/09/18 | 9236 | systems/texlive/tlnet/archive/njuthesis.r60529.tar.xz -2021/09/18 | 19732 | systems/texlive/tlnet/archive/njuthesis.source.r60529.tar.xz +2021/10/02 | 765028 | systems/texlive/tlnet/archive/njuthesis.doc.r60668.tar.xz +2021/10/02 | 81624 | systems/texlive/tlnet/archive/njuthesis.r60668.tar.xz +2021/10/02 | 97712 | systems/texlive/tlnet/archive/njuthesis.source.r60668.tar.xz 2019/02/28 | 93256 | systems/texlive/tlnet/archive/nkarta.doc.r16437.tar.xz 2019/02/28 | 27392 | systems/texlive/tlnet/archive/nkarta.r16437.tar.xz 2019/02/28 | 27360 | systems/texlive/tlnet/archive/nkarta.source.r16437.tar.xz @@ -286025,9 +286045,8 @@ 2019/02/28 | 3236 | systems/texlive/tlnet/archive/pst-exa.r45289.tar.xz 2019/02/28 | 140408 | systems/texlive/tlnet/archive/pst-feyn.doc.r48781.tar.xz 2019/02/28 | 6228 | systems/texlive/tlnet/archive/pst-feyn.r48781.tar.xz -2019/02/28 | 1121256 | systems/texlive/tlnet/archive/pst-fill.doc.r15878.tar.xz -2019/02/28 | 3892 | systems/texlive/tlnet/archive/pst-fill.r15878.tar.xz -2019/02/28 | 20788 | systems/texlive/tlnet/archive/pst-fill.source.r15878.tar.xz +2021/10/02 | 838084 | systems/texlive/tlnet/archive/pst-fill.doc.r60671.tar.xz +2021/10/02 | 3864 | systems/texlive/tlnet/archive/pst-fill.r60671.tar.xz 2019/02/28 | 79172 | systems/texlive/tlnet/archive/pst-fit.doc.r45109.tar.xz 2019/02/28 | 8004 | systems/texlive/tlnet/archive/pst-fit.r45109.tar.xz 2019/02/28 | 171192 | systems/texlive/tlnet/archive/pst-fr3d.doc.r15878.tar.xz @@ -286148,8 +286167,8 @@ 2021/09/27 | 21292 | systems/texlive/tlnet/archive/pstricks-add.r60622.tar.xz 2019/02/28 | 1133128 | systems/texlive/tlnet/archive/pstricks_calcnotes.doc.r34363.tar.xz 2019/02/28 | 512 | systems/texlive/tlnet/archive/pstricks_calcnotes.r34363.tar.xz -2021/09/26 | 7526604 | systems/texlive/tlnet/archive/pstricks.doc.r60607.tar.xz -2021/09/26 | 86744 | systems/texlive/tlnet/archive/pstricks.r60607.tar.xz +2021/10/02 | 7526600 | systems/texlive/tlnet/archive/pstricks.doc.r60670.tar.xz +2021/10/02 | 86880 | systems/texlive/tlnet/archive/pstricks.r60670.tar.xz 2019/02/28 | 123272 | systems/texlive/tlnet/archive/pstring.doc.r42857.tar.xz 2019/02/28 | 7384 | systems/texlive/tlnet/archive/pstring.r42857.tar.xz 2019/02/28 | 85380 | systems/texlive/tlnet/archive/pst-rputover.doc.r44724.tar.xz @@ -287555,8 +287574,8 @@ 2019/02/28 | 142128 | systems/texlive/tlnet/archive/tabularew.doc.r15878.tar.xz 2019/02/28 | 2128 | systems/texlive/tlnet/archive/tabularew.r15878.tar.xz 2019/02/28 | 7140 | systems/texlive/tlnet/archive/tabularew.source.r15878.tar.xz -2021/09/02 | 611736 | systems/texlive/tlnet/archive/tabularray.doc.r60389.tar.xz -2021/09/02 | 32116 | systems/texlive/tlnet/archive/tabularray.r60389.tar.xz +2021/10/02 | 643244 | systems/texlive/tlnet/archive/tabularray.doc.r60675.tar.xz +2021/10/02 | 33080 | systems/texlive/tlnet/archive/tabularray.r60675.tar.xz 2019/02/28 | 255704 | systems/texlive/tlnet/archive/tabulary.doc.r34368.tar.xz 2019/02/28 | 4032 | systems/texlive/tlnet/archive/tabulary.r34368.tar.xz 2019/02/28 | 8372 | systems/texlive/tlnet/archive/tabulary.source.r34368.tar.xz @@ -287910,7 +287929,7 @@ 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz -2021/10/01 | 400432 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60657.tar.xz +2021/10/02 | 400432 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60665.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz 2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz 2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz @@ -287934,7 +287953,7 @@ 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz -2021/10/01 | 108284 | systems/texlive/tlnet/archive/texlive-scripts.r60657.tar.xz +2021/10/02 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60665.tar.xz 2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz 2021/04/12 | 36308 | systems/texlive/tlnet/archive/texlive-scripts.win32.r58829.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz @@ -288354,9 +288373,9 @@ 2019/02/28 | 416 | systems/texlive/tlnet/archive/tipa-de.r22005.tar.xz 2019/02/28 | 2343456 | systems/texlive/tlnet/archive/tipa.doc.r29349.tar.xz 2019/02/28 | 2876104 | systems/texlive/tlnet/archive/tipa.r29349.tar.xz -2021/08/12 | 456832 | systems/texlive/tlnet/archive/tipauni.doc.r60220.tar.xz -2021/08/12 | 5700 | systems/texlive/tlnet/archive/tipauni.r60220.tar.xz -2021/08/12 | 12520 | systems/texlive/tlnet/archive/tipauni.source.r60220.tar.xz +2021/10/02 | 397864 | systems/texlive/tlnet/archive/tipauni.doc.r60669.tar.xz +2021/10/02 | 5700 | systems/texlive/tlnet/archive/tipauni.r60669.tar.xz +2021/10/02 | 12520 | systems/texlive/tlnet/archive/tipauni.source.r60669.tar.xz 2019/02/28 | 381176 | systems/texlive/tlnet/archive/tipfr.doc.r38646.tar.xz 2019/02/28 | 5880 | systems/texlive/tlnet/archive/tipfr.r38646.tar.xz 2021/09/20 | 152220 | systems/texlive/tlnet/archive/tiscreen.doc.r60551.tar.xz @@ -289649,8 +289668,8 @@ 2019/02/28 | 12276 | systems/texlive/tlnet/archive/zhspacing.r41145.tar.xz 2019/02/28 | 652 | systems/texlive/tlnet/archive/ziffer.doc.r32279.tar.xz 2019/02/28 | 1924 | systems/texlive/tlnet/archive/ziffer.r32279.tar.xz -2021/09/24 | 292028 | systems/texlive/tlnet/archive/zitie.doc.r60595.tar.xz -2021/09/24 | 7316 | systems/texlive/tlnet/archive/zitie.r60595.tar.xz +2021/10/02 | 345476 | systems/texlive/tlnet/archive/zitie.doc.r60676.tar.xz +2021/10/02 | 9584 | systems/texlive/tlnet/archive/zitie.r60676.tar.xz 2019/06/13 | 45412 | systems/texlive/tlnet/archive/zlmtt.doc.r51368.tar.xz 2019/06/13 | 3072 | systems/texlive/tlnet/archive/zlmtt.r51368.tar.xz 2019/03/28 | 135268 | systems/texlive/tlnet/archive/zootaxa-bst.doc.r50619.tar.xz @@ -289674,16 +289693,16 @@ 2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz 2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz 2021/05/02 | 105152 | systems/texlive/tlnet/install-tl -2021/10/01 | 6811706 | systems/texlive/tlnet/install-tl-unx.tar.gz -2021/10/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2021/10/01 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2021/10/02 | 6811597 | systems/texlive/tlnet/install-tl-unx.tar.gz +2021/10/02 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2021/10/02 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat -2021/10/01 | 20875526 | systems/texlive/tlnet/install-tl-windows.exe -2021/10/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2021/10/01 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2021/10/01 | 25629613 | systems/texlive/tlnet/install-tl.zip -2021/10/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2021/10/01 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2021/10/02 | 20871560 | systems/texlive/tlnet/install-tl-windows.exe +2021/10/02 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2021/10/02 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2021/10/02 | 25629617 | systems/texlive/tlnet/install-tl.zip +2021/10/02 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2021/10/02 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2021/04/01 | 1229 | systems/texlive/tlnet/README.md 2021/04/01 | 0 | systems/texlive/tlnet/TEXLIVE_2021 2021/07/03 | 7181 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -289693,7 +289712,7 @@ 2021/07/03 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2021/07/02 | 49348 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2021/09/30 | 6840 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2021/10/01 | 6930 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt 2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt @@ -289735,12 +289754,12 @@ 2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2021/05/16 | 5402 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2021/05/16 | 27555 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2021/10/01 | 16890709 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2021/10/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/10/02 | 16890893 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2021/10/02 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2021/05/16 | 86511 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2021/10/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2021/10/01 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2021/10/01 | 2313932 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2021/10/02 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/10/02 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2021/10/02 | 2312796 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2021/05/16 | 58801 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2021/05/16 | 42084 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2021/05/16 | 16103 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -293086,6 +293105,7 @@ 2021/06/07 | 488 | systems/win32/miktex/setup/rpm/opensuse/15/repodata/repomd.xml.asc 2021/02/21 | 255676168 | systems/win32/miktex/setup/windows-x64/basic-miktex-21.2-x64.exe 2021/06/06 | 134240008 | systems/win32/miktex/setup/windows-x64/basic-miktex-21.6-x64.exe +2021/10/01 | 134816520 | systems/win32/miktex/setup/windows-x64/basic-miktex-21.8-x64.exe 2021/01/17 | 2689791 | systems/win32/miktex/setup/windows-x64/miktexsetup-4.1-x64.zip 2021/07/17 | 2597201 | systems/win32/miktex/setup/windows-x64/miktexsetup-4.2-x64.zip 2020/10/10 | 24933128 | systems/win32/miktex/setup/windows-x64/setup-4.1.1-x64.exe @@ -294661,7 +294681,7 @@ 2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma 2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma 2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma -2021/10/01 | 615154 | systems/win32/miktex/tm/packages/files.csv.lzma +2021/10/02 | 615154 | systems/win32/miktex/tm/packages/files.csv.lzma 2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma 2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma 2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma @@ -296051,9 +296071,9 @@ 2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma 2021/08/07 | 39000 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma 2021/08/07 | 43393 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma -2021/10/01 | 241634 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2021/10/01 | 1358809 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2021/10/01 | 1261769 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2021/10/02 | 241651 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2021/10/02 | 1359758 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2021/10/02 | 1262093 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma 2021/08/07 | 13446 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma 2021/08/07 | 14327 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma 2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma @@ -296263,189 +296283,189 @@ 2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma 2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma 2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma -2021/10/01 | 615217 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2021/10/01 | 51111 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2021/10/01 | 56474 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2021/10/01 | 975018 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2021/10/01 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2021/10/01 | 29037 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2021/10/01 | 31352 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2021/10/01 | 29841 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2021/10/01 | 34666 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2021/10/01 | 50153 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2021/10/01 | 57548 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2021/10/01 | 83539 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2021/10/01 | 95403 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2021/10/01 | 67819 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2021/10/01 | 75791 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2021/10/01 | 27198 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2021/10/01 | 30824 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2021/10/01 | 330788 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2021/10/01 | 392793 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2021/10/01 | 32672 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2021/10/01 | 36629 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2021/10/01 | 51311 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2021/10/01 | 56685 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2021/10/01 | 241814 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2021/10/01 | 263959 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2021/10/01 | 180012 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2021/10/01 | 195636 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2021/10/01 | 54632 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2021/10/01 | 61813 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2021/10/01 | 21224 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2021/10/01 | 23364 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2021/10/01 | 461813 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2021/10/01 | 45906 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2021/10/01 | 51202 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2021/10/01 | 284580 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2021/10/01 | 325044 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2021/10/01 | 41193 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2021/10/01 | 45311 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2021/10/01 | 119821 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2021/10/01 | 133863 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2021/10/01 | 1291299 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2021/10/01 | 1421867 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2021/10/01 | 100626 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2021/10/01 | 112983 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2021/10/01 | 43028 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2021/10/01 | 48253 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2021/10/01 | 25020 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2021/10/01 | 28180 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2021/10/01 | 56317 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2021/10/01 | 62786 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2021/10/01 | 136817 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2021/10/01 | 154427 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2021/10/01 | 73197 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2021/10/01 | 77951 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2021/10/01 | 71670 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2021/10/01 | 80450 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2021/10/01 | 258880 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2021/10/01 | 295203 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2021/10/01 | 22048 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2021/10/01 | 24996 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2021/10/01 | 97339 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma -2021/10/01 | 112087 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2021/10/01 | 64427 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2021/10/01 | 73148 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2021/10/01 | 96633 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2021/10/01 | 115351 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2021/10/01 | 38140 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2021/10/01 | 43003 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2021/10/01 | 483654 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2021/10/01 | 566529 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2021/10/01 | 147373 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2021/10/01 | 159580 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2021/10/01 | 94798 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2021/10/01 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2021/10/01 | 16356 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma -2021/10/01 | 17981 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2021/10/01 | 28390 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2021/10/01 | 30059 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2021/10/01 | 629399 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma -2021/10/01 | 681252 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2021/10/01 | 531853 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2021/10/01 | 596931 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2021/10/01 | 476923 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2021/10/01 | 510588 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2021/10/01 | 94310 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2021/10/01 | 103399 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2021/10/01 | 1713893 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2021/10/01 | 2009904 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2021/10/01 | 67619 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2021/10/01 | 74210 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2021/10/01 | 27358 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2021/10/01 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2021/10/01 | 7722 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2021/10/01 | 8769 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2021/10/01 | 196872 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2021/10/01 | 215249 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2021/10/01 | 250262 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2021/10/01 | 284022 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2021/10/01 | 98380 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2021/10/01 | 103203 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2021/10/01 | 60636 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2021/10/01 | 68024 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2021/10/01 | 124281 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2021/10/01 | 136821 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2021/10/01 | 178353 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma -2021/10/01 | 196740 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2021/10/01 | 199731 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2021/10/01 | 180120 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2021/10/01 | 67482 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2021/10/01 | 76826 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2021/10/01 | 31231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2021/10/01 | 35085 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2021/10/01 | 37805 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2021/10/01 | 42712 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2021/10/01 | 42890 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2021/10/01 | 46907 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2021/10/01 | 45968 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2021/10/01 | 52523 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2021/10/01 | 194381 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma -2021/10/01 | 206604 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2021/10/01 | 35691 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma -2021/10/01 | 40229 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2021/10/01 | 744116 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2021/10/01 | 815242 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2021/10/01 | 198168 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2021/10/01 | 202796 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2021/10/01 | 208047 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2021/10/01 | 243425 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2021/10/01 | 78773 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2021/10/01 | 87776 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2021/10/01 | 1169718 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2021/10/01 | 1301193 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2021/10/01 | 20136 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2021/10/01 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2021/10/01 | 31538 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2021/10/01 | 37240 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2021/10/01 | 64185 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2021/10/01 | 72206 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2021/10/01 | 50395 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2021/10/01 | 57727 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2021/10/01 | 1340927 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2021/10/01 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2021/10/01 | 42384 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2021/10/01 | 51750 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2021/10/01 | 56514 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma -2021/10/01 | 60039 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2021/10/01 | 25290 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2021/10/01 | 27390 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2021/10/01 | 16414 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2021/10/01 | 18176 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2021/10/01 | 63777 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2021/10/01 | 69914 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2021/10/01 | 154805 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2021/10/01 | 169243 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2021/10/01 | 57012 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2021/10/01 | 65786 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2021/10/01 | 98259 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2021/10/01 | 105223 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2021/10/01 | 2672610 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2021/10/01 | 2796724 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2021/10/01 | 56355 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2021/10/01 | 62229 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2021/10/01 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma -2021/10/01 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2021/10/01 | 27729 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma -2021/10/01 | 33634 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2021/10/01 | 65618 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2021/10/01 | 70647 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2021/10/01 | 312110 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2021/10/01 | 345740 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2021/10/01 | 55498 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma -2021/10/01 | 57139 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2021/10/01 | 589840 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2021/10/01 | 624652 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2021/10/01 | 39127 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2021/10/01 | 43427 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2021/10/01 | 241662 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2021/10/01 | 1358922 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2021/10/01 | 1262656 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2021/10/01 | 13464 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2021/10/01 | 14350 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2021/10/02 | 615217 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2021/10/02 | 51113 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2021/10/02 | 56476 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2021/10/02 | 975023 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2021/10/02 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2021/10/02 | 29037 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2021/10/02 | 31351 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2021/10/02 | 29841 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/10/02 | 34666 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2021/10/02 | 50151 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2021/10/02 | 57547 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2021/10/02 | 83541 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2021/10/02 | 95403 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2021/10/02 | 67819 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2021/10/02 | 75791 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2021/10/02 | 27198 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2021/10/02 | 30823 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2021/10/02 | 330787 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2021/10/02 | 392793 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2021/10/02 | 32673 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2021/10/02 | 36627 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/10/02 | 51308 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2021/10/02 | 56685 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2021/10/02 | 241811 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2021/10/02 | 263957 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2021/10/02 | 180010 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/10/02 | 195636 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2021/10/02 | 54631 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2021/10/02 | 61811 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2021/10/02 | 21225 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2021/10/02 | 23365 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2021/10/02 | 461811 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2021/10/02 | 45905 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2021/10/02 | 51200 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2021/10/02 | 284580 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2021/10/02 | 325042 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/10/02 | 41194 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2021/10/02 | 45311 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2021/10/02 | 119817 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2021/10/02 | 133864 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/10/02 | 1291301 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2021/10/02 | 1421868 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2021/10/02 | 100624 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2021/10/02 | 112983 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2021/10/02 | 43027 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2021/10/02 | 48252 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2021/10/02 | 25020 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2021/10/02 | 28179 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2021/10/02 | 56317 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2021/10/02 | 62786 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2021/10/02 | 136815 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2021/10/02 | 154426 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2021/10/02 | 73196 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2021/10/02 | 77951 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2021/10/02 | 71669 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2021/10/02 | 80448 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2021/10/02 | 258881 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2021/10/02 | 295203 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/10/02 | 22048 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2021/10/02 | 24994 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2021/10/02 | 97337 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/10/02 | 112086 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/10/02 | 64426 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2021/10/02 | 73146 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2021/10/02 | 96631 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2021/10/02 | 115349 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2021/10/02 | 38140 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2021/10/02 | 43002 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2021/10/02 | 483652 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2021/10/02 | 566529 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2021/10/02 | 147374 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/10/02 | 159578 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2021/10/02 | 94799 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2021/10/02 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2021/10/02 | 16356 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2021/10/02 | 17981 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2021/10/02 | 28391 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2021/10/02 | 30059 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2021/10/02 | 629399 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma +2021/10/02 | 681252 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2021/10/02 | 531849 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2021/10/02 | 596930 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/10/02 | 476921 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2021/10/02 | 510587 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2021/10/02 | 94311 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2021/10/02 | 103399 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2021/10/02 | 1713893 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2021/10/02 | 2009903 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/10/02 | 67619 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2021/10/02 | 74210 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2021/10/02 | 27358 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2021/10/02 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2021/10/02 | 7722 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2021/10/02 | 8768 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/10/02 | 196871 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2021/10/02 | 215247 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2021/10/02 | 250265 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2021/10/02 | 284024 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2021/10/02 | 98379 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2021/10/02 | 103203 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/10/02 | 60638 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2021/10/02 | 68024 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2021/10/02 | 124281 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2021/10/02 | 136821 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2021/10/02 | 178354 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2021/10/02 | 196740 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2021/10/02 | 199733 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2021/10/02 | 180119 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2021/10/02 | 67483 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/10/02 | 76825 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2021/10/02 | 31231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2021/10/02 | 35086 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2021/10/02 | 37806 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2021/10/02 | 42711 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2021/10/02 | 42891 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2021/10/02 | 46906 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2021/10/02 | 45969 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2021/10/02 | 52522 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/10/02 | 194380 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/10/02 | 206607 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2021/10/02 | 35691 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma +2021/10/02 | 40228 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2021/10/02 | 744117 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2021/10/02 | 815240 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2021/10/02 | 198170 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2021/10/02 | 202796 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2021/10/02 | 208049 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2021/10/02 | 243425 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/10/02 | 78773 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2021/10/02 | 87778 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2021/10/02 | 1169720 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2021/10/02 | 1301193 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2021/10/02 | 20137 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2021/10/02 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2021/10/02 | 31539 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2021/10/02 | 37240 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/10/02 | 64186 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2021/10/02 | 72206 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2021/10/02 | 50395 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2021/10/02 | 57728 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2021/10/02 | 1340929 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2021/10/02 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2021/10/02 | 42387 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/10/02 | 51749 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2021/10/02 | 56514 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma +2021/10/02 | 60040 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2021/10/02 | 25290 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2021/10/02 | 27391 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2021/10/02 | 16414 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2021/10/02 | 18176 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2021/10/02 | 63776 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2021/10/02 | 69914 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/10/02 | 154806 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2021/10/02 | 169242 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/10/02 | 57011 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2021/10/02 | 65786 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2021/10/02 | 98262 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2021/10/02 | 105222 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2021/10/02 | 2672610 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2021/10/02 | 2796725 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/10/02 | 56356 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2021/10/02 | 62228 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2021/10/02 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/10/02 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2021/10/02 | 27727 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/10/02 | 33633 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2021/10/02 | 65620 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2021/10/02 | 70649 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2021/10/02 | 312108 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2021/10/02 | 345739 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2021/10/02 | 55498 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma +2021/10/02 | 57139 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2021/10/02 | 589843 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2021/10/02 | 624652 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2021/10/02 | 39127 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2021/10/02 | 43427 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2021/10/02 | 241637 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2021/10/02 | 1358410 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2021/10/02 | 1261987 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2021/10/02 | 13464 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2021/10/02 | 14349 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma -2021/10/01 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini +2021/10/02 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini 2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma 2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma 2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma @@ -296842,7 +296862,7 @@ 2020/10/20 | 342254 | systems/win32/miktex/tm/packages/preview.tar.lzma 2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma 2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma -2021/10/01 | 961 | systems/win32/miktex/tm/packages/pr.ini +2021/10/02 | 961 | systems/win32/miktex/tm/packages/pr.ini 2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma 2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma 2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma @@ -298211,7 +298231,8 @@ 2007/02/12 | 217429 | systems/win32/texshell32/WinTeXShell32src.zip 2007/02/12 | 6896 | systems/win32/texshell32/WinTeXShell32.txt 2007/02/12 | 395234 | systems/win32/texshell32/WinTeXShell32.zip -2021/08/29 | 1984 | systems/win32/TLW64/00README.TLW64 +2021/10/01 | 2480 | systems/win32/TLW64/00README.TLW64 +2021/10/01 | 61484773 | systems/win32/TLW64/gs9550w64full-gpl.exe 2021/09/19 | 99340207 | systems/win32/TLW64/tl-win64.zip 1996/11/26 | 1822 | systems/win32/tsconfig/readme 1996/11/26 | 30343 | systems/win32/tsconfig/tsconfig.zip @@ -298448,7 +298469,7 @@ 2004/06/04 | 404 | tds/tds.sed 2004/06/23 | 65418 | tds/tds.tex 2019/05/29 | 304264 | tds.zip -2021/10/02 | 186 | timestamp +2021/10/03 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2021/08/04 | 917 | usergrps/dante/dtk/doc/beispiel.bib @@ -299781,40 +299802,40 @@ 1999/06/04 | 27445 | usergrps/uktug/baskervi/baskrep.cls 1999/05/12 | 7702 | usergrps/uktug/baskervi/epstopdf 1997/10/01 | 444 | usergrps/uktug/baskervi/README -2021/10/01 | 9387 | usergrps/usergrps/bg.html -2021/10/01 | 9056 | usergrps/usergrps/br.html -2021/10/01 | 9349 | usergrps/usergrps/cn.html -2021/10/01 | 9503 | usergrps/usergrps/cz.html -2021/10/01 | 9637 | usergrps/usergrps/de.html -2021/10/01 | 9141 | usergrps/usergrps/dk.html -2021/10/01 | 8920 | usergrps/usergrps/ee.html -2021/10/01 | 9145 | usergrps/usergrps/esc.html -2021/10/01 | 9290 | usergrps/usergrps/es.html -2021/10/01 | 9430 | usergrps/usergrps/fr.html -2021/10/01 | 9273 | usergrps/usergrps/gb.html -2021/10/01 | 9166 | usergrps/usergrps/gr.html -2021/10/01 | 9570 | usergrps/usergrps/hu.html -2021/10/01 | 9066 | usergrps/usergrps/ie.html -2021/10/01 | 6322 | usergrps/usergrps/index.html -2021/10/01 | 9041 | usergrps/usergrps/is.html -2021/10/01 | 9293 | usergrps/usergrps/it.html -2021/10/01 | 9010 | usergrps/usergrps/kh.html -2021/10/01 | 9410 | usergrps/usergrps/kr.html -2021/10/01 | 9891 | usergrps/usergrps/labels.pdf -2021/10/01 | 2261 | usergrps/usergrps/labels.tex -2021/10/01 | 9049 | usergrps/usergrps/lt.html -2021/10/01 | 34280 | usergrps/usergrps/lugs.html -2021/10/01 | 49917 | usergrps/usergrps/lugs.pdf -2021/10/01 | 22106 | usergrps/usergrps/lugs.tex -2021/10/01 | 9000 | usergrps/usergrps/mx.html -2021/10/01 | 9386 | usergrps/usergrps/nl.html -2021/10/01 | 9111 | usergrps/usergrps/no.html -2021/10/01 | 9575 | usergrps/usergrps/pl.html -2021/10/01 | 9139 | usergrps/usergrps/pt.html -2021/10/01 | 9181 | usergrps/usergrps/us.html -2021/10/01 | 9050 | usergrps/usergrps/uy.html -2021/10/01 | 9121 | usergrps/usergrps/vn.html -2021/10/01 | 9060 | usergrps/usergrps/za.html +2021/10/02 | 9387 | usergrps/usergrps/bg.html +2021/10/02 | 9056 | usergrps/usergrps/br.html +2021/10/02 | 9349 | usergrps/usergrps/cn.html +2021/10/02 | 9503 | usergrps/usergrps/cz.html +2021/10/02 | 9637 | usergrps/usergrps/de.html +2021/10/02 | 9141 | usergrps/usergrps/dk.html +2021/10/02 | 8920 | usergrps/usergrps/ee.html +2021/10/02 | 9145 | usergrps/usergrps/esc.html +2021/10/02 | 9290 | usergrps/usergrps/es.html +2021/10/02 | 9430 | usergrps/usergrps/fr.html +2021/10/02 | 9273 | usergrps/usergrps/gb.html +2021/10/02 | 9166 | usergrps/usergrps/gr.html +2021/10/02 | 9570 | usergrps/usergrps/hu.html +2021/10/02 | 9066 | usergrps/usergrps/ie.html +2021/10/02 | 6322 | usergrps/usergrps/index.html +2021/10/02 | 9041 | usergrps/usergrps/is.html +2021/10/02 | 9293 | usergrps/usergrps/it.html +2021/10/02 | 9010 | usergrps/usergrps/kh.html +2021/10/02 | 9410 | usergrps/usergrps/kr.html +2021/10/02 | 9903 | usergrps/usergrps/labels.pdf +2021/10/02 | 2269 | usergrps/usergrps/labels.tex +2021/10/02 | 9057 | usergrps/usergrps/lt.html +2021/10/02 | 34288 | usergrps/usergrps/lugs.html +2021/10/02 | 49920 | usergrps/usergrps/lugs.pdf +2021/10/02 | 22114 | usergrps/usergrps/lugs.tex +2021/10/02 | 9000 | usergrps/usergrps/mx.html +2021/10/02 | 9386 | usergrps/usergrps/nl.html +2021/10/02 | 9111 | usergrps/usergrps/no.html +2021/10/02 | 9575 | usergrps/usergrps/pl.html +2021/10/02 | 9139 | usergrps/usergrps/pt.html +2021/10/02 | 9181 | usergrps/usergrps/us.html +2021/10/02 | 9050 | usergrps/usergrps/uy.html +2021/10/02 | 9121 | usergrps/usergrps/vn.html +2021/10/02 | 9060 | usergrps/usergrps/za.html 1992/12/06 | 2551 | web/aplweb/announcement 1993/11/03 | 802292 | web/aplweb/aplweba.zip 1993/11/03 | 771814 | web/aplweb/aplwebb.zip diff --git a/FILES.byname.gz b/FILES.byname.gz index 862155f5dc..7fe4c211d3 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index d8321e20e9..7f2684455a 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,321 +1,875 @@ -2021/10/01 | 9891 | usergrps/usergrps/labels.pdf -2021/10/01 | 98380 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2021/10/01 | 98259 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2021/10/01 | 975018 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2021/10/01 | 97339 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/10/02 | 999 | graphics/circuit_macros/examples/Fuses.m4 +2021/10/02 | 999 | graphics/circuit_macros/doc/FusesMan.m4 +2021/10/02 | 9972 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm +2021/10/02 | 991 | graphics/circuit_macros/examples/Byte.m4 +2021/10/02 | 9903 | usergrps/usergrps/labels.pdf +2021/10/02 | 988 | graphics/circuit_macros/examples/svg/VariableSVG.m4 +2021/10/02 | 9840 | graphics/circuit_macros/examples/tubedefs.m4 +2021/10/02 | 98379 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2021/10/02 | 98262 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2021/10/02 | 980 | graphics/circuit_macros/examples/Emarrows.m4 +2021/10/02 | 980 | graphics/circuit_macros/doc/EmarrowsMan.m4 +2021/10/02 | 978438 | graphics/circuit_macros/doc/Circuit_macros.pdf +2021/10/02 | 97712 | systems/texlive/tlnet/archive/njuthesis.source.r60668.tar.xz +2021/10/02 | 975023 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2021/10/02 | 973 | graphics/circuit_macros/examples/svg/MoreTableSVG.m4 +2021/10/02 | 97337 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/10/02 | 970 | graphics/circuit_macros/examples/svg/ex15SVG.m4 +2021/10/02 | 970 | graphics/circuit_macros/doc/Flowdiag.m4 +2021/10/02 | 96631 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2021/10/02 | 963 | graphics/circuit_macros/doc/MoreTableMan.m4 +2021/10/02 | 9637 | usergrps/usergrps/de.html +2021/10/02 | 961 | systems/win32/miktex/tm/packages/pr.ini +2021/10/02 | 960 | graphics/circuit_macros/examples/MoreTable.m4 +2021/10/02 | 959 | graphics/circuit_macros/examples/svg/FusesSVG.m4 +2021/10/02 | 9584 | systems/texlive/tlnet/archive/zitie.r60676.tar.xz +2021/10/02 | 9575 | usergrps/usergrps/pl.html +2021/10/02 | 9570 | usergrps/usergrps/hu.html +2021/10/02 | 95403 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2021/10/02 | 953 | graphics/circuit_macros/examples/squiggle.m4 +2021/10/02 | 95156 | graphics/circuit_macros/examples/mf/cct.mf +2021/10/02 | 9503 | usergrps/usergrps/cz.html +2021/10/02 | 947 | graphics/circuit_macros/examples/svg/QuantumSVG.m4 +2021/10/02 | 94799 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2021/10/02 | 944 | graphics/circuit_macros/doc/VariableMan.m4 +2021/10/02 | 94311 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2021/10/02 | 9430 | usergrps/usergrps/fr.html +2021/10/02 | 9425 | graphics/circuit_macros/doc/ShiftR.tex +2021/10/02 | 9410 | usergrps/usergrps/kr.html +2021/10/02 | 9387 | usergrps/usergrps/bg.html +2021/10/02 | 9386 | usergrps/usergrps/nl.html +2021/10/02 | 937 | graphics/circuit_macros/examples/svg/ByteSVG.m4 +2021/10/02 | 9349 | usergrps/usergrps/cn.html +2021/10/02 | 932 | graphics/circuit_macros/examples/Variable.m4 +2021/10/02 | 9293 | usergrps/usergrps/it.html +2021/10/02 | 9290 | usergrps/usergrps/es.html +2021/10/02 | 9288 | graphics/circuit_macros/examples/Makefile +2021/10/02 | 9273 | usergrps/usergrps/gb.html +2021/10/02 | 923 | support/crossrefware/Makefile +2021/10/02 | 918 | graphics/circuit_macros/examples/Quantum.m4 +2021/10/02 | 9181 | usergrps/usergrps/us.html +2021/10/02 | 917 | graphics/circuit_macros/examples/birds.m4 +2021/10/02 | 9166 | usergrps/usergrps/gr.html +2021/10/02 | 9145 | usergrps/usergrps/esc.html +2021/10/02 | 9141 | usergrps/usergrps/dk.html +2021/10/02 | 9139 | usergrps/usergrps/pt.html +2021/10/02 | 9121 | usergrps/usergrps/vn.html +2021/10/02 | 9111 | usergrps/usergrps/no.html +2021/10/02 | 9066 | usergrps/usergrps/ie.html +2021/10/02 | 9060 | usergrps/usergrps/za.html +2021/10/02 | 9057 | usergrps/usergrps/lt.html +2021/10/02 | 9056 | usergrps/usergrps/br.html +2021/10/02 | 9050 | usergrps/usergrps/uy.html +2021/10/02 | 9041 | usergrps/usergrps/is.html +2021/10/02 | 9010 | usergrps/usergrps/kh.html +2021/10/02 | 9000 | usergrps/usergrps/mx.html +2021/10/02 | 892920 | graphics/circuit_macros/examples/examples.pdf +2021/10/02 | 8920 | usergrps/usergrps/ee.html +2021/10/02 | 886 | graphics/circuit_macros/examples/svg/quickSVG.m4 +2021/10/02 | 88631 | graphics/circuit_macros/doc/defines.tex +2021/10/02 | 879728 | systems/texlive/tlnet/archive/markdown.doc.r60667.tar.xz +2021/10/02 | 87778 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2021/10/02 | 8768 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/10/02 | 87619 | graphics/circuit_macros/libgen.m4 +2021/10/02 | 86880 | systems/texlive/tlnet/archive/pstricks.r60670.tar.xz +2021/10/02 | 865 | graphics/circuit_macros/examples/ex18.m4 +2021/10/02 | 855 | graphics/circuit_macros/examples/svg/ex03SVG.m4 +2021/10/02 | 838084 | systems/texlive/tlnet/archive/pst-fill.doc.r60671.tar.xz +2021/10/02 | 8372 | graphics/circuit_macros/examples/exp.m4 +2021/10/02 | 835 | graphics/circuit_macros/doc/Opto.m4 +2021/10/02 | 83541 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2021/10/02 | 83524 | systems/texlive/tlnet/archive/markdown.source.r60667.tar.xz +2021/10/02 | 831 | graphics/circuit_macros/doc/GroundsMan.m4 +2021/10/02 | 828 | graphics/circuit_macros/examples/Grounds.m4 +2021/10/02 | 8266 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm +2021/10/02 | 81624 | systems/texlive/tlnet/archive/njuthesis.r60668.tar.xz +2021/10/02 | 815240 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2021/10/02 | 810 | graphics/circuit_macros/examples/svg/GroundsSVG.m4 +2021/10/02 | 8061 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm +2021/10/02 | 80448 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2021/10/02 | 801 | graphics/circuit_macros/doc/Potentiometers.m4 +2021/10/02 | 8006 | graphics/circuit_macros/examples/svg/controlSVG.m4 +2021/10/02 | 793 | graphics/circuit_macros/examples/svg/CountingSVG.m4 +2021/10/02 | 78773 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2021/10/02 | 783 | graphics/circuit_macros/doc/Oblique.m4 +2021/10/02 | 77951 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2021/10/02 | 777 | graphics/circuit_macros/examples/Arrester.m4 +2021/10/02 | 774 | graphics/circuit_macros/examples/quick.m4 +2021/10/02 | 774 | graphics/circuit_macros/doc/quick.m4 +2021/10/02 | 772896 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.doc.r60672.tar.xz +2021/10/02 | 7722 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2021/10/02 | 7721 | graphics/circuit_macros/examples/shapes.m4 +2021/10/02 | 771 | graphics/circuit_macros/examples/Attention.m4 +2021/10/02 | 76825 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2021/10/02 | 7670 | graphics/circuit_macros/examples/Chuck.m4 +2021/10/02 | 765028 | systems/texlive/tlnet/archive/njuthesis.doc.r60668.tar.xz +2021/10/02 | 764 | graphics/circuit_macros/examples/mf/cct.tfm +2021/10/02 | 75791 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2021/10/02 | 7546 | graphics/circuit_macros/examples/svg/RectifiersSVG.m4 +2021/10/02 | 7544 | support/crossrefware/bbl2bib.pl +2021/10/02 | 7533 | graphics/circuit_macros/doc/Logic.tex +2021/10/02 | 7526600 | systems/texlive/tlnet/archive/pstricks.doc.r60670.tar.xz +2021/10/02 | 7517 | support/crossrefware/bibdoiadd.pl +2021/10/02 | 750 | graphics/circuit_macros/examples/Connectors.m4 +2021/10/02 | 7507 | graphics/circuit_macros/examples/svg/shapesSVG.m4 +2021/10/02 | 7503 | graphics/circuit_macros/doc/Headers.tex +2021/10/02 | 748 | graphics/circuit_macros/examples/svg/Np.m4 +2021/10/02 | 7485 | graphics/circuit_macros/examples/svg/cscSVG.m4 +2021/10/02 | 745 | graphics/circuit_macros/examples/svg/DecoderSVG.m4 +2021/10/02 | 744117 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2021/10/02 | 7434 | graphics/circuit_macros/examples/csc.m4 +2021/10/02 | 74210 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2021/10/02 | 741 | graphics/circuit_macros/examples/Incleps.m4 +2021/10/02 | 7418 | graphics/circuit_macros/examples/svg/CsourceSVG.m4 +2021/10/02 | 740 | graphics/circuit_macros/examples/SampleFlow.m4 +2021/10/02 | 7363 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 +2021/10/02 | 73196 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2021/10/02 | 7316 | graphics/circuit_macros/doc/Relay.tex +2021/10/02 | 73146 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2021/10/02 | 729 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex +2021/10/02 | 72206 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2021/10/02 | 7203 | graphics/circuit_macros/examples/svg/lcctSVG.m4 +2021/10/02 | 71669 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2021/10/02 | 715 | graphics/circuit_macros/examples/svg/ConnectorsSVG.m4 +2021/10/02 | 715 | graphics/circuit_macros/examples/psfrag/examplespsfrag.tex +2021/10/02 | 7127 | graphics/circuit_macros/examples/lcct.m4 +2021/10/02 | 709 | graphics/circuit_macros/examples/Inclpdf.m4 +2021/10/02 | 706 | graphics/circuit_macros/psfrag.m4 +2021/10/02 | 7069 | graphics/circuit_macros/examples/control.m4 +2021/10/02 | 70649 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2021/10/02 | 703 | graphics/circuit_macros/examples/mpost/README-mpost +2021/10/02 | 7006 | graphics/circuit_macros/examples/Rectifiers.m4 +2021/10/02 | 7003 | support/crossrefware/bibdoiadd.1 +2021/10/02 | 69914 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/10/02 | 685 | graphics/circuit_macros/examples/mpost/mptest +2021/10/02 | 6854 | graphics/circuit_macros/examples/svg/DiniSVG.m4 +2021/10/02 | 6854 | graphics/circuit_macros/examples/Dini.m4 +2021/10/02 | 682 | graphics/circuit_macros/examples/svg/ujtSVG.m4 +2021/10/02 | 681252 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2021/10/02 | 6811597 | systems/texlive/tlnet/install-tl-unx.tar.gz +2021/10/02 | 68024 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2021/10/02 | 67819 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2021/10/02 | 67619 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2021/10/02 | 67483 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/10/02 | 673 | graphics/circuit_macros/examples/ex03.m4 +2021/10/02 | 6730 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 +2021/10/02 | 6628 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 +2021/10/02 | 6617 | graphics/circuit_macros/examples/svg/GeometrySVG.m4 +2021/10/02 | 660 | graphics/circuit_macros/examples/ujt.m4 +2021/10/02 | 660 | graphics/circuit_macros/doc/ujtMan.m4 +2021/10/02 | 65786 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2021/10/02 | 656 | graphics/circuit_macros/examples/Zcos.m4 +2021/10/02 | 65620 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2021/10/02 | 655 | graphics/circuit_macros/examples/Decoder.m4 +2021/10/02 | 6550 | graphics/circuit_macros/doc/Conn.tex +2021/10/02 | 654 | graphics/circuit_macros/examples/diamond.m4 +2021/10/02 | 6501 | graphics/circuit_macros/examples/svg/EscherSVG.m4 +2021/10/02 | 6498 | graphics/circuit_macros/examples/Escher.m4 +2021/10/02 | 645 | graphics/circuit_macros/examples/Floor.m4 +2021/10/02 | 64426 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2021/10/02 | 643244 | systems/texlive/tlnet/archive/tabularray.doc.r60675.tar.xz +2021/10/02 | 64186 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2021/10/02 | 6413 | graphics/circuit_macros/examples/svg/CanLogicSVG.m4 +2021/10/02 | 63 | graphics/circuit_macros/examples/svg/local_init.m4 +2021/10/02 | 63776 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2021/10/02 | 6371 | graphics/circuit_macros/examples/CanLogic.m4 +2021/10/02 | 6348 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 +2021/10/02 | 6322 | usergrps/usergrps/index.html +2021/10/02 | 629399 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma +2021/10/02 | 62786 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2021/10/02 | 6270 | graphics/circuit_macros/examples/ASME_Y14-5.m4 +2021/10/02 | 624652 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2021/10/02 | 62228 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2021/10/02 | 6217 | support/crossrefware/bbl2bib.1 +2021/10/02 | 6216 | graphics/circuit_macros/examples/svg/LgateSVG.m4 +2021/10/02 | 61811 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2021/10/02 | 6160 | graphics/circuit_macros/examples/Plate.m4 +2021/10/02 | 6153 | graphics/circuit_macros/examples/svg/PlateSVG.m4 +2021/10/02 | 615217 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2021/10/02 | 615154 | systems/win32/miktex/tm/packages/files.csv.lzma +2021/10/02 | 614 | graphics/circuit_macros/doc/BigResistor.m4 +2021/10/02 | 609 | graphics/circuit_macros/examples/svg/diamondSVG.m4 +2021/10/02 | 6067 | graphics/circuit_macros/doc/Contacts.tex +2021/10/02 | 60638 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2021/10/02 | 60040 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2021/10/02 | 6003 | graphics/circuit_macros/examples/CSlight.m4 +2021/10/02 | 5969 | graphics/circuit_macros/examples/xfig/xfiglib.m4 +2021/10/02 | 596930 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/10/02 | 5920 | systems/texlive/tlnet/archive/decision-table.source.r60673.tar.xz +2021/10/02 | 591 | graphics/circuit_macros/examples/test.m4 +2021/10/02 | 589843 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2021/10/02 | 5890 | graphics/circuit_macros/examples/Csource.m4 +2021/10/02 | 5808 | graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 +2021/10/02 | 57728 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2021/10/02 | 57547 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2021/10/02 | 573 | graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS +2021/10/02 | 57139 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2021/10/02 | 57011 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2021/10/02 | 5700 | systems/texlive/tlnet/archive/tipauni.r60669.tar.xz +2021/10/02 | 56 | graphics/circuit_macros/doc/opampex.m4 +2021/10/02 | 568 | systems/texlive/tlnet/archive/install-latex-guide-zh-cn.r60672.tar.xz +2021/10/02 | 5669 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 +2021/10/02 | 56685 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2021/10/02 | 566529 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2021/10/02 | 56514 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma +2021/10/02 | 56476 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2021/10/02 | 563 | graphics/circuit_macros/examples/svg/RotboxSVG.m4 +2021/10/02 | 56356 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2021/10/02 | 56317 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2021/10/02 | 5572 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 +2021/10/02 | 5558 | support/crossrefware/bibmradd.1 +2021/10/02 | 5556 | support/crossrefware/bibzbladd.1 +2021/10/02 | 55498 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma +2021/10/02 | 5545 | graphics/circuit_macros/doc/Bip.tex +2021/10/02 | 551 | graphics/circuit_macros/examples/Counting.m4 +2021/10/02 | 5502 | graphics/circuit_macros/doc/Emarrows.tex +2021/10/02 | 5486 | graphics/circuit_macros/examples/graysurf.m4 +2021/10/02 | 5469 | graphics/circuit_macros/examples/svg/graysurfSVG.m4 +2021/10/02 | 5468 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 +2021/10/02 | 54631 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2021/10/02 | 5412 | graphics/circuit_macros/examples/svg/roseSVG.m4 +2021/10/02 | 538 | graphics/circuit_macros/examples/svg/FontsSVG.m4 +2021/10/02 | 538 | graphics/circuit_macros/examples/svg/AmpTableSVG.m4 +2021/10/02 | 5365 | graphics/circuit_macros/examples/svg/fetSVG.m4 +2021/10/02 | 535 | graphics/circuit_macros/doc/Tline.m4 +2021/10/02 | 533 | graphics/circuit_macros/examples/Rotbox.m4 +2021/10/02 | 532 | graphics/circuit_macros/examples/svg/NLGSVG.m4 +2021/10/02 | 531849 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2021/10/02 | 5315 | graphics/circuit_macros/doc/fetMan.m4 +2021/10/02 | 5311 | graphics/circuit_macros/examples/fet.m4 +2021/10/02 | 52522 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/10/02 | 5197 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm +2021/10/02 | 51749 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2021/10/02 | 5171 | graphics/circuit_macros/examples/svg/FlowSVG.m4 +2021/10/02 | 5137 | graphics/circuit_macros/doc/NPDT.tex +2021/10/02 | 51308 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2021/10/02 | 51200 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2021/10/02 | 51113 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2021/10/02 | 5106 | graphics/circuit_macros/examples/svg/Makefile +2021/10/02 | 510587 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2021/10/02 | 50 | graphics/circuit_macros/doc/bitr.m4 +2021/10/02 | 5048 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 +2021/10/02 | 50395 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2021/10/02 | 50151 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2021/10/02 | 5013 | graphics/circuit_macros/examples/AntiqueClock.m4 +2021/10/02 | 499 | graphics/circuit_macros/examples/NLG.m4 +2021/10/02 | 499 | graphics/circuit_macros/doc/NLGMan.m4 +2021/10/02 | 4996 | support/crossrefware/biburl2doi.1 +2021/10/02 | 49920 | usergrps/usergrps/lugs.pdf +2021/10/02 | 4988 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 +2021/10/02 | 4964 | graphics/circuit_macros/doc/Multiplexer.tex +2021/10/02 | 494 | graphics/circuit_macros/examples/AmpTable.m4 +2021/10/02 | 494 | graphics/circuit_macros/doc/AmpTableMan.m4 +2021/10/02 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/10/02 | 489 | graphics/circuit_macros/examples/Koch.m4 +2021/10/02 | 4844 | graphics/circuit_macros/doc/Makefile +2021/10/02 | 483 | graphics/circuit_macros/doc/eboxdims.m4 +2021/10/02 | 483652 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2021/10/02 | 482 | graphics/circuit_macros/examples/clock.m4 +2021/10/02 | 4827 | graphics/circuit_macros/examples/Shaky.m4 +2021/10/02 | 48252 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2021/10/02 | 4817 | graphics/circuit_macros/doc/Demultiplexer.tex +2021/10/02 | 4812 | support/crossrefware/bibmradd.pl +2021/10/02 | 4789 | graphics/circuit_macros/doc/Fuses.tex +2021/10/02 | 47795 | graphics/circuit_macros/liblog.m4 +2021/10/02 | 476921 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2021/10/02 | 4751 | graphics/circuit_macros/examples/Flow.m4 +2021/10/02 | 46906 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2021/10/02 | 4683 | graphics/circuit_macros/examples/psfrag/Makefile +2021/10/02 | 4666 | graphics/circuit_macros/doc/Nport.tex +2021/10/02 | 464 | graphics/circuit_macros/examples/tsttikz.tex +2021/10/02 | 4638 | graphics/circuit_macros/examples/Ball.m4 +2021/10/02 | 462 | graphics/circuit_macros/Copying +2021/10/02 | 4622 | support/crossrefware/bibzbladd.pl +2021/10/02 | 461811 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2021/10/02 | 4615 | graphics/circuit_macros/examples/mf/font.m4 +2021/10/02 | 460 | graphics/circuit_macros/examples/debug1.tex +2021/10/02 | 45969 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2021/10/02 | 45905 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2021/10/02 | 4569 | graphics/circuit_macros/examples/rose.m4 +2021/10/02 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2021/10/02 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2021/10/02 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2021/10/02 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2021/10/02 | 45323 | graphics/circuit_macros/examples/Incl.eps.gz +2021/10/02 | 45311 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2021/10/02 | 449 | graphics/circuit_macros/doc/woodchips.m4 +2021/10/02 | 447516 | systems/texlive/tlnet/archive/lwarp.source.r60674.tar.xz +2021/10/02 | 4459 | graphics/circuit_macros/examples/Lyap.m4 +2021/10/02 | 442 | graphics/circuit_macros/examples/Wheat.m4 +2021/10/02 | 435 | support/crossrefware/ltx2crossrefxml.cfg +2021/10/02 | 43427 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2021/10/02 | 4340 | graphics/circuit_macros/examples/svg/AlogixSVG.m4 +2021/10/02 | 4313 | graphics/circuit_macros/examples/ex09.m4 +2021/10/02 | 4312 | graphics/circuit_macros/doc/Circuit_macros.bib +2021/10/02 | 4309 | graphics/circuit_macros/examples/svg/SwitchesSVG.m4 +2021/10/02 | 43027 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2021/10/02 | 43002 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2021/10/02 | 4289 | graphics/circuit_macros/examples/svg/BtreeSVG.m4 +2021/10/02 | 42891 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2021/10/02 | 4277 | graphics/circuit_macros/examples/svg/sldtestsSVG.m4 +2021/10/02 | 42711 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2021/10/02 | 4247 | graphics/circuit_macros/examples/mpost/Makefile +2021/10/02 | 42387 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/10/02 | 421 | graphics/circuit_macros/examples/GrayCode.m4 +2021/10/02 | 421 | graphics/circuit_macros/doc/Sinus.m4 +2021/10/02 | 4205 | graphics/circuit_macros/examples/Alogix.m4 +2021/10/02 | 419 | graphics/circuit_macros/examples/svg/SixpoleSVG.m4 +2021/10/02 | 419 | graphics/circuit_macros/examples/Sixpole.m4 +2021/10/02 | 418 | graphics/circuit_macros/examples/mpost/tstmpost.tex +2021/10/02 | 417 | graphics/circuit_macros/examples/svg/SQUIDSVG.m4 +2021/10/02 | 4178 | graphics/circuit_macros/doc/Tgate.tex +2021/10/02 | 416 | graphics/circuit_macros/examples/testpdf.tex +2021/10/02 | 4119 | graphics/circuit_macros/examples/svg/ex09SVG.m4 +2021/10/02 | 41194 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2021/10/02 | 409 | graphics/circuit_macros/examples/tst.tex +2021/10/02 | 409 | graphics/circuit_macros/examples/mpost/examplesmpost.tex +2021/10/02 | 4079 | graphics/circuit_macros/INSTALL +2021/10/02 | 404 | graphics/circuit_macros/doc/Series.m4 +2021/10/02 | 40256 | systems/texlive/tlnet/archive/markdown.r60667.tar.xz +2021/10/02 | 4023 | graphics/circuit_macros/examples/Euro.m4 +2021/10/02 | 40228 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2021/10/02 | 4015 | graphics/circuit_macros/doc/SwitchesMan.m4 +2021/10/02 | 400432 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60665.tar.xz +2021/10/02 | 4003 | graphics/circuit_macros/examples/svg/InclepsSVG.m4 +2021/10/02 | 397864 | systems/texlive/tlnet/archive/tipauni.doc.r60669.tar.xz +2021/10/02 | 3973 | graphics/circuit_macros/examples/Switches.m4 +2021/10/02 | 3954 | graphics/circuit_macros/examples/PushPull.m4 +2021/10/02 | 392793 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2021/10/02 | 39127 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2021/10/02 | 387 | graphics/circuit_macros/doc/lrarrows.m4 +2021/10/02 | 3864 | systems/texlive/tlnet/archive/pst-fill.r60671.tar.xz +2021/10/02 | 3825 | graphics/circuit_macros/examples/svg/recycleSVG.m4 +2021/10/02 | 3825 | graphics/circuit_macros/examples/recycle.m4 +2021/10/02 | 38140 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2021/10/02 | 380 | graphics/circuit_macros/examples/SQUID.m4 +2021/10/02 | 3785 | graphics/circuit_macros/examples/Mixer.m4 +2021/10/02 | 37806 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2021/10/02 | 3778 | graphics/circuit_macros/examples/svg/PushPullSVG.m4 +2021/10/02 | 3768 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm +2021/10/02 | 3756 | graphics/circuit_macros/examples/svg/randomSVG.m4 +2021/10/02 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2021/10/02 | 3727 | graphics/circuit_macros/examples/random.m4 +2021/10/02 | 37240 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/10/02 | 371 | graphics/circuit_macros/examples/psfrag/tstpsfrag.tex +2021/10/02 | 370 | graphics/circuit_macros/examples/snake.m4 +2021/10/02 | 369 | graphics/circuit_macros/doc/sampleIC.m4 +2021/10/02 | 36627 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/10/02 | 365 | graphics/circuit_macros/examples/rotellipse.m4 +2021/10/02 | 3646 | graphics/circuit_macros/examples/svg/ContactSVG.m4 +2021/10/02 | 3631 | graphics/circuit_macros/examples/svg/wormSVG.m4 +2021/10/02 | 35691 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma +2021/10/02 | 3567 | graphics/circuit_macros/examples/svg/ButtonsSVG.m4 +2021/10/02 | 353 | graphics/circuit_macros/examples/windows.m4 +2021/10/02 | 353 | graphics/circuit_macros/examples/svg/windows.m4 +2021/10/02 | 3522 | graphics/circuit_macros/examples/svg/ex12SVG.m4 +2021/10/02 | 3509 | graphics/circuit_macros/examples/Buttons.m4 +2021/10/02 | 35086 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2021/10/02 | 3489 | graphics/circuit_macros/examples/svg/MixerSVG.m4 +2021/10/02 | 3473 | graphics/circuit_macros/examples/svg/MCSVG.m4 +2021/10/02 | 34666 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2021/10/02 | 345739 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2021/10/02 | 345476 | systems/texlive/tlnet/archive/zitie.doc.r60676.tar.xz +2021/10/02 | 3430 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm +2021/10/02 | 34288 | usergrps/usergrps/lugs.html +2021/10/02 | 3390 | graphics/circuit_macros/examples/svg/ex05SVG.m4 +2021/10/02 | 337 | graphics/circuit_macros/examples/xfig/Makefile +2021/10/02 | 3369975 | graphics/circuit_macros.zip +2021/10/02 | 33633 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2021/10/02 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/10/02 | 3346 | graphics/circuit_macros/examples/Windings.m4 +2021/10/02 | 3346 | graphics/circuit_macros/doc/WindingsMan.m4 +2021/10/02 | 3339 | graphics/circuit_macros/examples/ex12.m4 +2021/10/02 | 3326 | graphics/circuit_macros/examples/Contact.m4 +2021/10/02 | 3326 | graphics/circuit_macros/doc/ContactMan.m4 +2021/10/02 | 3321 | graphics/circuit_macros/examples/thyristor.m4 +2021/10/02 | 3321 | graphics/circuit_macros/doc/thyristorMan.m4 +2021/10/02 | 3310 | graphics/circuit_macros/examples/svg/thyristorSVG.m4 +2021/10/02 | 33080 | systems/texlive/tlnet/archive/tabularray.r60675.tar.xz +2021/10/02 | 330787 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2021/10/02 | 32 | graphics/circuit_macros/examples/Incl.eps.bb +2021/10/02 | 329 | graphics/circuit_macros/doc/FF.m4 +2021/10/02 | 3290 | graphics/circuit_macros/examples/svg/sfgSVG.m4 +2021/10/02 | 32673 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2021/10/02 | 325042 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/10/02 | 3221 | graphics/circuit_macros/examples/Geometry.m4 +2021/10/02 | 319516 | graphics/pstricks/contrib/pedigree/pedigree-perl.zip +2021/10/02 | 3183 | graphics/circuit_macros/doc/NLG.tex +2021/10/02 | 317 | graphics/circuit_macros/examples/psfrag/README-psfrag.txt +2021/10/02 | 3178 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm +2021/10/02 | 3175 | graphics/circuit_macros/examples/Blogix.m4 +2021/10/02 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2021/10/02 | 31539 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2021/10/02 | 31351 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2021/10/02 | 31231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2021/10/02 | 312108 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2021/10/02 | 3091 | graphics/circuit_macros/examples/svg/TtreeSVG.m4 +2021/10/02 | 30823 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2021/10/02 | 304837 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf +2021/10/02 | 30190 | support/crossrefware/ltx2crossrefxml.pl +2021/10/02 | 3007440 | systems/texlive/tlnet/archive/lwarp.doc.r60674.tar.xz +2021/10/02 | 30059 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2021/10/02 | 3000 | graphics/circuit_macros/doc/Circuit_macros.tex +2021/10/02 | 2994 | graphics/circuit_macros/examples/svg/WindingsSVG.m4 +2021/10/02 | 2989 | graphics/circuit_macros/examples/svg/AutoencoderSVG.m4 +2021/10/02 | 2986 | graphics/circuit_macros/examples/MC.m4 +2021/10/02 | 29852 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm +2021/10/02 | 29841 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/10/02 | 29772 | graphics/circuit_macros/examples/Incl.pdf +2021/10/02 | 295203 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/10/02 | 2912 | graphics/circuit_macros/doc/Workflow.m4 +2021/10/02 | 29037 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2021/10/02 | 2846 | graphics/circuit_macros/examples/Metamodel.m4 +2021/10/02 | 284580 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2021/10/02 | 284024 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2021/10/02 | 28391 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2021/10/02 | 2834 | graphics/circuit_macros/postscript.m4 +2021/10/02 | 2817 | graphics/circuit_macros/examples/README-examples +2021/10/02 | 28179 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2021/10/02 | 2815 | support/crossrefware/biburl2doi.pl +2021/10/02 | 280503 | support/crossrefware.zip +2021/10/02 | 2799 | graphics/circuit_macros/examples/worm.m4 +2021/10/02 | 2796725 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/10/02 | 2792 | graphics/circuit_macros/examples/OpAmpFilter.m4 +2021/10/02 | 27727 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/10/02 | 2761 | graphics/circuit_macros/examples/sfg.m4 +2021/10/02 | 27391 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2021/10/02 | 27358 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2021/10/02 | 2720 | graphics/circuit_macros/examples/svg/AudioSVG.m4 +2021/10/02 | 27198 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2021/10/02 | 26 | graphics/circuit_macros/doc/DCsymbol.m4 +2021/10/02 | 26 | graphics/circuit_macros/doc/ACsymbol.m4 +2021/10/02 | 269 | graphics/circuit_macros/doc/Loop.m4 +2021/10/02 | 2696 | graphics/circuit_macros/examples/keyval.m4 +2021/10/02 | 2685 | graphics/circuit_macros/examples/svg/ex11SVG.m4 +2021/10/02 | 2674 | graphics/circuit_macros/examples/Planes.m4 +2021/10/02 | 2672610 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2021/10/02 | 2661 | graphics/circuit_macros/examples/svg/CctTableSVG.m4 +2021/10/02 | 2661 | graphics/circuit_macros/doc/Grounds.tex +2021/10/02 | 263957 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2021/10/02 | 2634 | graphics/circuit_macros/examples/Audio.m4 +2021/10/02 | 2634 | graphics/circuit_macros/doc/AudioMan.m4 +2021/10/02 | 2629 | graphics/circuit_macros/examples/svg/ex01SVG.m4 +2021/10/02 | 258881 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2021/10/02 | 25849 | graphics/circuit_macros/doc/Xform.tex +2021/10/02 | 25821 | graphics/circuit_macros/examples/svg/EEPSVG.m4 +2021/10/02 | 2571 | graphics/circuit_macros/examples/IntersectingPlanes.m4 +2021/10/02 | 2571860 | graphics/circuit_macros/doc/Circuit_macros.html +2021/10/02 | 2562 | graphics/circuit_macros/examples/Crow.m4 +2021/10/02 | 25629617 | systems/texlive/tlnet/install-tl.zip +2021/10/02 | 2559 | graphics/circuit_macros/examples/svg/ex08SVG.m4 +2021/10/02 | 2556 | graphics/circuit_macros/examples/ex08.m4 +2021/10/02 | 2551 | graphics/circuit_macros/examples/svg/OptoisoSVG.m4 +2021/10/02 | 2542 | graphics/circuit_macros/examples/brace.m4 +2021/10/02 | 25290 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2021/10/02 | 2528 | graphics/circuit_macros/examples/svg/AdderSVG.m4 +2021/10/02 | 2525 | graphics/circuit_macros/examples/svg/CrowSVG.m4 +2021/10/02 | 2517 | graphics/circuit_macros/examples/Autoencoder.m4 +2021/10/02 | 250265 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2021/10/02 | 25020 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2021/10/02 | 24994 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2021/10/02 | 24906 | graphics/circuit_macros/examples/svg/examplesSVG.htmx +2021/10/02 | 2443 | graphics/circuit_macros/examples/svg/ex00SVG.m4 +2021/10/02 | 2442 | graphics/circuit_macros/examples/Optoiso.m4 +2021/10/02 | 2441 | graphics/circuit_macros/doc/ujt.tex +2021/10/02 | 243425 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/10/02 | 241811 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2021/10/02 | 241651 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2021/10/02 | 241637 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2021/10/02 | 24141 | graphics/circuit_macros/examples/svg/UNOSVG.m4 +2021/10/02 | 2412 | graphics/circuit_macros/examples/ex00.m4 +2021/10/02 | 2402 | graphics/circuit_macros/examples/Adder.m4 +2021/10/02 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2021/10/02 | 2389 | graphics/circuit_macros/doc/Dac.m4 +2021/10/02 | 2362 | graphics/circuit_macros/examples/Jack.m4 +2021/10/02 | 2362 | graphics/circuit_macros/doc/JackMan.m4 +2021/10/02 | 2361 | graphics/circuit_macros/examples/ex11.m4 +2021/10/02 | 233 | graphics/circuit_macros/examples/Ccurve.m4 +2021/10/02 | 23365 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2021/10/02 | 233582 | support/crossrefware/crossrefware.pdf +2021/10/02 | 2334 | support/crossrefware/README +2021/10/02 | 2317 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex +2021/10/02 | 2312796 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2021/10/02 | 2304 | graphics/circuit_macros/examples/Loglog.m4 +2021/10/02 | 2283 | graphics/circuit_macros/examples/ex01.m4 +2021/10/02 | 2269 | usergrps/usergrps/labels.tex +2021/10/02 | 2241 | graphics/circuit_macros/examples/svg/LoglogSVG.m4 +2021/10/02 | 2225 | graphics/circuit_macros/doc/SourcesMan.m4 +2021/10/02 | 221 | graphics/circuit_macros/examples/rotate.tex +2021/10/02 | 22114 | usergrps/usergrps/lugs.tex +2021/10/02 | 22048 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2021/10/02 | 219 | graphics/circuit_macros/examples/tst1.tex +2021/10/02 | 2194 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm +2021/10/02 | 217 | graphics/circuit_macros/doc/stringdims.m4 +2021/10/02 | 2179 | graphics/circuit_macros/doc/ConnMan.m4 +2021/10/02 | 2178 | graphics/circuit_macros/examples/Conn.m4 +2021/10/02 | 2171 | graphics/circuit_macros/examples/svg/I2LSVG.m4 +2021/10/02 | 2170 | graphics/circuit_macros/examples/ex06.m4 +2021/10/02 | 2165 | graphics/circuit_macros/examples/Sources.m4 +2021/10/02 | 215247 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2021/10/02 | 21398 | graphics/circuit_macros/examples/xfig/xfiglib.fig +2021/10/02 | 21384 | graphics/circuit_macros/examples/svg/Incl.jpg +2021/10/02 | 21225 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2021/10/02 | 2119 | graphics/circuit_macros/examples/Logic.m4 +2021/10/02 | 2119 | graphics/circuit_macros/doc/LogicMan.m4 +2021/10/02 | 2111 | graphics/circuit_macros/examples/svg/ConnSVG.m4 +2021/10/02 | 2099 | graphics/circuit_macros/pstricks.m4 +2021/10/02 | 2097 | graphics/circuit_macros/examples/Ttree.m4 +2021/10/02 | 2090 | support/crossrefware/head.ltx +2021/10/02 | 20871560 | systems/texlive/tlnet/install-tl-windows.exe +2021/10/02 | 2086 | graphics/circuit_macros/examples/relaycoil.m4 +2021/10/02 | 2086 | graphics/circuit_macros/doc/relaycoilMan.m4 +2021/10/02 | 2085 | graphics/circuit_macros/pgf.m4 +2021/10/02 | 2080 | systems/texlive/tlnet/archive/decision-table.r60673.tar.xz +2021/10/02 | 208049 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2021/10/02 | 207484 | systems/texlive/tlnet/archive/lwarp.r60674.tar.xz +2021/10/02 | 2069 | graphics/circuit_macros/examples/svg/relaycoilSVG.m4 +2021/10/02 | 2068 | graphics/circuit_macros/examples/I2L.m4 +2021/10/02 | 206607 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2021/10/02 | 2051 | graphics/circuit_macros/examples/svg/JackSVG.m4 +2021/10/02 | 20418 | graphics/circuit_macros/doc/thyristor.tex +2021/10/02 | 2027 | graphics/circuit_macros/examples/svg/pwrsupplySVG.m4 +2021/10/02 | 202796 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2021/10/02 | 2018 | graphics/circuit_macros/examples/svg/ex06SVG.m4 +2021/10/02 | 2014 | graphics/circuit_macros/examples/pwrsupply.m4 +2021/10/02 | 2013 | graphics/circuit_macros/doc/HybridPi.m4 +2021/10/02 | 20137 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2021/10/02 | 2009903 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/10/02 | 2000 | graphics/circuit_macros/examples/ex21.m4 +2021/10/02 | 199733 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2021/10/02 | 1995 | graphics/circuit_macros/doc/Corners.m4 +2021/10/02 | 1992 | graphics/circuit_macros/examples/svg/FourbarSVG.m4 +2021/10/02 | 1985 | graphics/circuit_macros/examples/svg/XORSVG.m4 +2021/10/02 | 198170 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2021/10/02 | 1975 | graphics/circuit_macros/doc/FlipFlop.m4 +2021/10/02 | 196871 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2021/10/02 | 196740 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2021/10/02 | 1966 | graphics/circuit_macros/examples/svg/DriveSVG.m4 +2021/10/02 | 1966 | graphics/circuit_macros/examples/Drive.m4 +2021/10/02 | 1962 | graphics/circuit_macros/examples/Autologix.m4 +2021/10/02 | 1959 | graphics/circuit_macros/examples/debug2.m4 +2021/10/02 | 195636 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2021/10/02 | 1955 | graphics/circuit_macros/examples/svg/ABlogixSVG.m4 +2021/10/02 | 1953 | graphics/circuit_macros/examples/svg/MotorControlSVG.m4 +2021/10/02 | 1953 | graphics/circuit_macros/doc/Buffer.m4 +2021/10/02 | 194380 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/10/02 | 1940 | graphics/circuit_macros/doc/AmpTable.tex +2021/10/02 | 1931 | graphics/circuit_macros/examples/svg/LogicSVG.m4 +2021/10/02 | 192730 | info/tex-vpat.zip +2021/10/02 | 19250 | graphics/circuit_macros/dpictools.pic +2021/10/02 | 1922 | graphics/circuit_macros/examples/MotorControl.m4 +2021/10/02 | 19176 | graphics/circuit_macros/Licence.txt +2021/10/02 | 19142 | graphics/circuit_macros/doc/Switches.tex +2021/10/02 | 1907 | graphics/circuit_macros/examples/svg/SourcesSVG.m4 +2021/10/02 | 1906 | graphics/circuit_macros/examples/venus.m4 +2021/10/02 | 1906 | graphics/circuit_macros/examples/SPM.m4 +2021/10/02 | 1894 | graphics/circuit_macros/examples/svg/ArrowFnSVG.m4 +2021/10/02 | 1893 | graphics/circuit_macros/examples/svg/ex16SVG.m4 +2021/10/02 | 1891 | graphics/circuit_macros/examples/svg/ex04SVG.m4 +2021/10/02 | 1882 | graphics/circuit_macros/examples/svg/ex21SVG.m4 +2021/10/02 | 1879 | graphics/circuit_macros/examples/Cruller.m4 +2021/10/02 | 1875 | graphics/circuit_macros/examples/svg/GrayCodeSVG.m4 +2021/10/02 | 1874 | graphics/circuit_macros/examples/svg/CrullerSVG.m4 +2021/10/02 | 1865 | graphics/circuit_macros/examples/ex16.m4 +2021/10/02 | 1860 | graphics/circuit_macros/doc/bi_trans.m4 +2021/10/02 | 1857 | graphics/circuit_macros/doc/Composite.m4 +2021/10/02 | 1852 | graphics/circuit_macros/examples/Orbits.m4 +2021/10/02 | 1837 | graphics/circuit_macros/examples/svg/SchottkySVG.m4 +2021/10/02 | 1823 | graphics/circuit_macros/examples/XOR.m4 +2021/10/02 | 18176 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2021/10/02 | 1812 | graphics/circuit_macros/examples/svg/BipSVG.m4 +2021/10/02 | 1802 | graphics/circuit_macros/examples/Pconn.m4 +2021/10/02 | 1802 | graphics/circuit_macros/doc/PconnMan.m4 +2021/10/02 | 18018 | graphics/circuit_macros/examples/svg/SLD.m4 +2021/10/02 | 180119 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2021/10/02 | 180010 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/10/02 | 17981 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2021/10/02 | 178354 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2021/10/02 | 1778 | graphics/circuit_macros/examples/Schottky.m4 +2021/10/02 | 1776 | graphics/circuit_macros/examples/svg/PconnSVG.m4 +2021/10/02 | 1767 | graphics/circuit_macros/examples/ArrowFn.m4 +2021/10/02 | 17656 | graphics/circuit_macros/examples/files.tex +2021/10/02 | 1746 | graphics/circuit_macros/examples/examples.tex +2021/10/02 | 174507 | graphics/circuit_macros/libcct.m4 +2021/10/02 | 1737 | graphics/circuit_macros/examples/svg/ContactsSVG.m4 +2021/10/02 | 1730 | graphics/circuit_macros/examples/ABlogix.m4 +2021/10/02 | 1713893 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2021/10/02 | 1699 | graphics/circuit_macros/examples/svg/ex10SVG.m4 +2021/10/02 | 169242 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/10/02 | 16890893 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2021/10/02 | 1674 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex +2021/10/02 | 1668 | graphics/circuit_macros/examples/svg/Banking.m4 +2021/10/02 | 1668 | graphics/circuit_macros/examples/IC10107.m4 +2021/10/02 | 165 | graphics/circuit_macros/doc/tranbody.m4 +2021/10/02 | 1654 | graphics/circuit_macros/examples/ex04.m4 +2021/10/02 | 16452 | support/crossrefware/ltx2crossrefxml.1 +2021/10/02 | 16420 | graphics/circuit_macros/doc/fet.tex +2021/10/02 | 16414 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2021/10/02 | 1640 | graphics/circuit_macros/mpost.m4 +2021/10/02 | 1639 | graphics/circuit_macros/Makefile +2021/10/02 | 16356 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2021/10/02 | 1630 | graphics/circuit_macros/examples/svg/TTLnandSVG.m4 +2021/10/02 | 16309 | graphics/circuit_macros/README +2021/10/02 | 1624 | graphics/circuit_macros/doc/ParSeries.m4 +2021/10/02 | 1619 | graphics/circuit_macros/examples/Bip.m4 +2021/10/02 | 1619 | graphics/circuit_macros/doc/BipMan.m4 +2021/10/02 | 1618 | graphics/circuit_macros/doc/ArrestersMan.m4 +2021/10/02 | 1612 | graphics/circuit_macros/examples/svg/TimerSVG.m4 +2021/10/02 | 1608 | graphics/circuit_macros/examples/ex05.m4 +2021/10/02 | 1604 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile +2021/10/02 | 159578 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2021/10/02 | 1585 | graphics/circuit_macros/examples/Contacts.m4 +2021/10/02 | 1585 | graphics/circuit_macros/doc/ContactsMan.m4 +2021/10/02 | 1575 | graphics/circuit_macros/doc/mplex.m4 +2021/10/02 | 1559 | graphics/circuit_macros/examples/svg/XformSVG.m4 +2021/10/02 | 1558 | graphics/circuit_macros/examples/TTLnand.m4 +2021/10/02 | 154806 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2021/10/02 | 1546 | graphics/circuit_macros/examples/svg/Xtest.m4 +2021/10/02 | 154426 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2021/10/02 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2021/10/02 | 15388 | graphics/circuit_macros/doc/Sources.tex +2021/10/02 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2021/10/02 | 1529 | graphics/circuit_macros/examples/mf/Makefile +2021/10/02 | 1526 | graphics/circuit_macros/examples/Xform.m4 +2021/10/02 | 1526 | graphics/circuit_macros/doc/XformMan.m4 +2021/10/02 | 1525 | graphics/circuit_macros/examples/rotatetext.m4 +2021/10/02 | 1521 | graphics/circuit_macros/examples/Coxeter.m4 +2021/10/02 | 15033 | graphics/circuit_macros/doc/Pconn.tex +2021/10/02 | 1492 | graphics/circuit_macros/examples/ex10.m4 +2021/10/02 | 1485 | graphics/circuit_macros/examples/Demultiplexer.m4 +2021/10/02 | 1485 | graphics/circuit_macros/doc/DemultiplexerMan.m4 +2021/10/02 | 147374 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/10/02 | 1467 | graphics/circuit_macros/examples/Diodes.m4 +2021/10/02 | 1467 | graphics/circuit_macros/doc/DiodesMan.m4 +2021/10/02 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2021/10/02 | 1463 | graphics/circuit_macros/doc/Taps.m4 +2021/10/02 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2021/10/02 | 1458 | graphics/circuit_macros/examples/header.tex +2021/10/02 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/10/02 | 144 | graphics/circuit_macros/doc/Thermal.m4 +2021/10/02 | 1444 | graphics/circuit_macros/examples/svg/ThreeSVG.m4 +2021/10/02 | 1443 | graphics/circuit_macros/examples/Resolver.m4 +2021/10/02 | 14349 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2021/10/02 | 1433 | graphics/circuit_macros/examples/Opamp.m4 +2021/10/02 | 1433 | graphics/circuit_macros/doc/OpampMan.m4 +2021/10/02 | 1431 | graphics/circuit_macros/examples/svg/RelaySVG.m4 +2021/10/02 | 1429 | graphics/circuit_macros/examples/svg/DiodesSVG.m4 +2021/10/02 | 14287 | graphics/circuit_macros/darrow.m4 +2021/10/02 | 142535 | graphics/circuit_macros/doc/body.tex +2021/10/02 | 1421868 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2021/10/02 | 1419 | graphics/circuit_macros/examples/person.m4 +2021/10/02 | 1406 | graphics/circuit_macros/examples/ShiftR.m4 +2021/10/02 | 1406 | graphics/circuit_macros/doc/ShiftRMan.m4 +2021/10/02 | 14057 | graphics/circuit_macros/examples/svg/tstSVG.htmx +2021/10/02 | 1403 | graphics/circuit_macros/examples/svg/MultiplexerSVG.m4 +2021/10/02 | 1400 | graphics/circuit_macros/examples/Multiplexer.m4 +2021/10/02 | 1400 | graphics/circuit_macros/doc/MultiplexerMan.m4 +2021/10/02 | 1392 | graphics/circuit_macros/examples/Inductors.m4 +2021/10/02 | 13833 | graphics/circuit_macros/doc/Contact.tex +2021/10/02 | 137 | graphics/circuit_macros/doc/opampexbody.m4 +2021/10/02 | 1373 | graphics/circuit_macros/examples/svg/DemultiplexerSVG.m4 +2021/10/02 | 136821 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2021/10/02 | 136815 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2021/10/02 | 1359758 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2021/10/02 | 1358 | graphics/circuit_macros/examples/Crossbar.m4 +2021/10/02 | 1358410 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2021/10/02 | 1347 | graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex +2021/10/02 | 13464 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2021/10/02 | 1343 | graphics/circuit_macros/examples/svg/InductorsSVG.m4 +2021/10/02 | 1342 | graphics/circuit_macros/doc/InductorsMan.m4 +2021/10/02 | 1340929 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2021/10/02 | 133864 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/10/02 | 13330 | graphics/circuit_macros/examples/Heathkit.m4 +2021/10/02 | 1331 | graphics/circuit_macros/examples/svg/SierpinskiSVG.m4 +2021/10/02 | 1331 | graphics/circuit_macros/examples/Sierpinski.m4 +2021/10/02 | 1329 | graphics/circuit_macros/doc/currents.m4 +2021/10/02 | 13264 | graphics/circuit_macros/examples/Tubediags.m4 +2021/10/02 | 131 | graphics/circuit_macros/doc/Axes.m4 +2021/10/02 | 1313 | graphics/circuit_macros/examples/svg/ShiftRSVG.m4 +2021/10/02 | 13109 | graphics/circuit_macros/CHANGES +2021/10/02 | 130 | graphics/circuit_macros/doc/bitrbody.m4 +2021/10/02 | 1301193 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2021/10/02 | 12 | graphics/circuit_macros/doc/Version.tex +2021/10/02 | 1292 | graphics/circuit_macros/doc/ConfigC.m4 +2021/10/02 | 1291301 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2021/10/02 | 1287 | graphics/circuit_macros/examples/Three.m4 +2021/10/02 | 12765 | graphics/circuit_macros/lib3D.m4 +2021/10/02 | 12711 | graphics/circuit_macros/examples/svg/HeathkitSVG.m4 +2021/10/02 | 1265 | graphics/circuit_macros/examples/svg/HeadersSVG.m4 +2021/10/02 | 1262093 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2021/10/02 | 1261987 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2021/10/02 | 1259 | graphics/circuit_macros/examples/Relay.m4 +2021/10/02 | 1259 | graphics/circuit_macros/doc/RelayMan.m4 +2021/10/02 | 1258 | graphics/circuit_macros/doc/ConfigB.m4 +2021/10/02 | 12520 | systems/texlive/tlnet/archive/tipauni.source.r60669.tar.xz +2021/10/02 | 12514 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 +2021/10/02 | 12478 | graphics/circuit_macros/examples/svg/TubediagsSVG.m4 +2021/10/02 | 124281 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2021/10/02 | 1238 | graphics/circuit_macros/examples/svg/NportSVG.m4 +2021/10/02 | 1230 | graphics/circuit_macros/examples/Antennas.m4 +2021/10/02 | 1230 | graphics/circuit_macros/doc/AntennasMan.m4 +2021/10/02 | 1229 | graphics/circuit_macros/doc/fbfilter.m4 +2021/10/02 | 1214 | graphics/circuit_macros/examples/svg/ChipsSVG.m4 +2021/10/02 | 12124 | graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl +2021/10/02 | 1207 | graphics/pstricks/contrib/pedigree/pedigree-perl/README +2021/10/02 | 12050 | graphics/circuit_macros/doc/Diodes.tex +2021/10/02 | 1204 | graphics/circuit_macros/examples/svg/ex17SVG.m4 +2021/10/02 | 1201 | graphics/circuit_macros/examples/Capacitors.m4 +2021/10/02 | 12006 | graphics/circuit_macros/doc/Jack.tex +2021/10/02 | 11 | graphics/circuit_macros/doc/test.tex +2021/10/02 | 119817 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2021/10/02 | 1186 | graphics/circuit_macros/examples/svg/ResistorsSVG.m4 +2021/10/02 | 1185 | graphics/circuit_macros/boxdims.sty +2021/10/02 | 1175 | graphics/circuit_macros/examples/Chips.m4 +2021/10/02 | 1174 | graphics/circuit_macros/examples/PPA.m4 +2021/10/02 | 1169720 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2021/10/02 | 1160 | graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 +2021/10/02 | 11598 | graphics/circuit_macros/svg.m4 +2021/10/02 | 11593 | graphics/circuit_macros/examples/svg/icsSVG.m4 +2021/10/02 | 1157 | graphics/circuit_macros/examples/svg/NPDTSVG.m4 +2021/10/02 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini +2021/10/02 | 115349 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2021/10/02 | 1151 | graphics/circuit_macros/doc/Darlington.m4 +2021/10/02 | 1149 | graphics/circuit_macros/doc/ResistorsMan.m4 +2021/10/02 | 1145 | graphics/circuit_macros/examples/Resistors.m4 +2021/10/02 | 11426 | graphics/circuit_macros/examples/ics.m4 +2021/10/02 | 1132 | graphics/circuit_macros/examples/Headers.m4 +2021/10/02 | 1132 | graphics/circuit_macros/doc/HeadersMan.m4 +2021/10/02 | 112983 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2021/10/02 | 1128 | graphics/circuit_macros/examples/NPDT.m4 +2021/10/02 | 1128 | graphics/circuit_macros/doc/NPDTMan.m4 +2021/10/02 | 11270 | graphics/circuit_macros/examples/FlowchartDefs.m4 +2021/10/02 | 1126 | graphics/circuit_macros/examples/ex17.m4 +2021/10/02 | 1121 | graphics/circuit_macros/doc/ConfigA.m4 +2021/10/02 | 112086 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/10/02 | 1114 | graphics/circuit_macros/mfpic.m4 +2021/10/02 | 1100 | graphics/circuit_macros/examples/ex02.m4 +2021/10/02 | 1093 | graphics/circuit_macros/examples/svg/ex02SVG.m4 +2021/10/02 | 1090 | graphics/circuit_macros/examples/svg/AntennasSVG.m4 +2021/10/02 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2021/10/02 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60665.tar.xz +2021/10/02 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2021/10/02 | 1076 | graphics/circuit_macros/examples/mf/mftest +2021/10/02 | 107647 | macros/luatex/latex/truthtable.zip +2021/10/02 | 107624 | systems/texlive/tlnet/archive/decision-table.doc.r60673.tar.xz +2021/10/02 | 1075 | graphics/circuit_macros/examples/bistable.m4 +2021/10/02 | 1074 | graphics/circuit_macros/doc/bistableMan.m4 +2021/10/02 | 1070 | graphics/circuit_macros/examples/svg/EmarrowsSVG.m4 +2021/10/02 | 1065 | graphics/circuit_macros/examples/svg/ex18SVG.m4 +2021/10/02 | 1063 | graphics/circuit_macros/doc/CapacitorsMan.m4 +2021/10/02 | 10589 | graphics/circuit_macros/examples/svg/expSVG.m4 +2021/10/02 | 1055 | graphics/circuit_macros/examples/svg/TgateSVG.m4 +2021/10/02 | 105222 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2021/10/02 | 1050 | graphics/circuit_macros/examples/svg/SVGconfig.m4 +2021/10/02 | 10447 | graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm +2021/10/02 | 1040 | graphics/circuit_macros/examples/Nport.m4 +2021/10/02 | 1040 | graphics/circuit_macros/doc/NportMan.m4 +2021/10/02 | 10401 | graphics/circuit_macros/doc/Variable.tex +2021/10/02 | 1039 | graphics/circuit_macros/examples/chaos.m4 +2021/10/02 | 1034 | graphics/circuit_macros/examples/svg/OpampSVG.m4 +2021/10/02 | 103399 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2021/10/02 | 103203 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/10/02 | 1029 | graphics/circuit_macros/xfig.m4 +2021/10/02 | 1024 | graphics/circuit_macros/examples/Btree.m4 +2021/10/02 | 1022 | graphics/circuit_macros/examples/Tgate.m4 +2021/10/02 | 1022 | graphics/circuit_macros/doc/TgateMan.m4 +2021/10/02 | 1019 | graphics/circuit_macros/gpic.m4 +2021/10/02 | 10193 | graphics/circuit_macros/examples/svg/paletteSVG.m4 +2021/10/02 | 1017 | graphics/circuit_macros/doc/arrowex.m4 +2021/10/02 | 10164 | graphics/circuit_macros/doc/Audio.tex +2021/10/02 | 100624 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2021/10/02 | 1003 | graphics/circuit_macros/examples/ex15.m4 2021/10/01 | 9683 | macros/generic/markdown/markdown.md -2021/10/01 | 96633 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2021/10/01 | 9637 | usergrps/usergrps/de.html -2021/10/01 | 961 | systems/win32/miktex/tm/packages/pr.ini 2021/10/01 | 957618 | graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.pdf -2021/10/01 | 9575 | usergrps/usergrps/pl.html -2021/10/01 | 9570 | usergrps/usergrps/hu.html -2021/10/01 | 95403 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2021/10/01 | 9503 | usergrps/usergrps/cz.html -2021/10/01 | 94798 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2021/10/01 | 94310 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2021/10/01 | 9430 | usergrps/usergrps/fr.html +2021/10/01 | 9429 | macros/luatex/latex/truthtable/truthtable.tex 2021/10/01 | 94260 | systems/texlive/tlnet/archive/tex4ebook.doc.r60663.tar.xz -2021/10/01 | 9410 | usergrps/usergrps/kr.html -2021/10/01 | 9387 | usergrps/usergrps/bg.html -2021/10/01 | 9386 | usergrps/usergrps/nl.html -2021/10/01 | 9349 | usergrps/usergrps/cn.html -2021/10/01 | 9293 | usergrps/usergrps/it.html -2021/10/01 | 9290 | usergrps/usergrps/es.html -2021/10/01 | 9273 | usergrps/usergrps/gb.html 2021/10/01 | 92287 | macros/unicodetex/latex/njuthesis/njuthesis.dtx -2021/10/01 | 9181 | usergrps/usergrps/us.html -2021/10/01 | 9166 | usergrps/usergrps/gr.html -2021/10/01 | 9145 | usergrps/usergrps/esc.html -2021/10/01 | 9141 | usergrps/usergrps/dk.html -2021/10/01 | 9139 | usergrps/usergrps/pt.html -2021/10/01 | 9121 | usergrps/usergrps/vn.html -2021/10/01 | 9111 | usergrps/usergrps/no.html -2021/10/01 | 9066 | usergrps/usergrps/ie.html -2021/10/01 | 9060 | usergrps/usergrps/za.html -2021/10/01 | 9056 | usergrps/usergrps/br.html -2021/10/01 | 9050 | usergrps/usergrps/uy.html -2021/10/01 | 9049 | usergrps/usergrps/lt.html -2021/10/01 | 9041 | usergrps/usergrps/is.html -2021/10/01 | 9010 | usergrps/usergrps/kh.html -2021/10/01 | 9000 | usergrps/usergrps/mx.html 2021/10/01 | 89 | macros/latex/contrib/lwarp/lwarp_baseline_marker.png -2021/10/01 | 8920 | usergrps/usergrps/ee.html 2021/10/01 | 884915 | macros/unicodetex/latex/njuthesis.zip -2021/10/01 | 87776 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2021/10/01 | 8769 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma 2021/10/01 | 873 | macros/latex/contrib/decision-table/README 2021/10/01 | 866760 | graphics/pstricks/contrib/pst-fill.zip -2021/10/01 | 83539 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2021/10/01 | 815242 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2021/10/01 | 80450 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma 2021/10/01 | 8027840 | graphics/pstricks/base.zip -2021/10/01 | 78773 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma 2021/10/01 | 787082 | info/install-latex-guide-zh-cn.zip 2021/10/01 | 78220 | macros/latex/contrib/tabularray/tabularray.tex -2021/10/01 | 77951 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2021/10/01 | 7722 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2021/10/01 | 76826 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma 2021/10/01 | 764340 | macros/unicodetex/latex/njuthesis/njuthesis.pdf +2021/10/01 | 762 | macros/luatex/latex/truthtable/README.md 2021/10/01 | 760493 | macros/latex/contrib/tabularray/tabularray.pdf 2021/10/01 | 75 | macros/generic/markdown/examples/scientists.csv -2021/10/01 | 75791 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma 2021/10/01 | 747376 | info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf 2021/10/01 | 745 | macros/unicodetex/latex/njuthesis/README.md -2021/10/01 | 744116 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2021/10/01 | 74210 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2021/10/01 | 73197 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2021/10/01 | 73148 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma 2021/10/01 | 729945 | macros/generic/markdown/markdown.pdf -2021/10/01 | 72206 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma 2021/10/01 | 719 | macros/latex/contrib/lwarp/lwarp_baseline_marker.eps -2021/10/01 | 71670 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma 2021/10/01 | 714327 | macros/latex/contrib/tabularray.zip 2021/10/01 | 70922 | macros/unicodetex/latex/tipauni/tipauni-commands.pdf -2021/10/01 | 70647 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2021/10/01 | 69914 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/10/01 | 6930 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2021/10/01 | 682 | graphics/pstricks/contrib/pst-fill/README -2021/10/01 | 681252 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2021/10/01 | 6811706 | systems/texlive/tlnet/install-tl-unx.tar.gz -2021/10/01 | 68024 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2021/10/01 | 67819 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2021/10/01 | 67619 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2021/10/01 | 67482 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2021/10/01 | 65786 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2021/10/01 | 65618 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2021/10/01 | 64427 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2021/10/01 | 64185 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma 2021/10/01 | 6388 | systems/texlive/tlnet/archive/hanzibox.r60661.tar.xz -2021/10/01 | 63777 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2021/10/01 | 6322 | usergrps/usergrps/index.html -2021/10/01 | 629399 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma -2021/10/01 | 62786 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma 2021/10/01 | 626760 | macros/generic/markdown/markdown.html -2021/10/01 | 624652 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2021/10/01 | 62229 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma 2021/10/01 | 62192 | systems/texlive/tlnet/archive/siunitx.r60660.tar.xz -2021/10/01 | 61813 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2021/10/01 | 615217 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2021/10/01 | 615154 | systems/win32/miktex/tm/packages/files.csv.lzma -2021/10/01 | 60636 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2021/10/01 | 60039 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2021/10/01 | 596931 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/10/01 | 61484773 | systems/win32/TLW64/gs9550w64full-gpl.exe 2021/10/01 | 591780 | systems/texlive/tlnet/archive/tikz-trackschematic.doc.r60658.tar.xz -2021/10/01 | 589840 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2021/10/01 | 57727 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2021/10/01 | 57548 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2021/10/01 | 57139 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma 2021/10/01 | 571392 | macros/generic/markdown/markdown.dtx -2021/10/01 | 57012 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2021/10/01 | 56685 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2021/10/01 | 566529 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2021/10/01 | 56514 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma -2021/10/01 | 56474 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2021/10/01 | 56355 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2021/10/01 | 56317 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma 2021/10/01 | 55730 | macros/xetex/latex/zitie/tex/zitie.sty -2021/10/01 | 55498 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma -2021/10/01 | 54632 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2021/10/01 | 531853 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2021/10/01 | 52523 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2021/10/01 | 51750 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2021/10/01 | 51311 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2021/10/01 | 51202 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2021/10/01 | 51111 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2021/10/01 | 510588 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2021/10/01 | 50395 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2021/10/01 | 50153 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2021/10/01 | 49917 | usergrps/usergrps/lugs.pdf 2021/10/01 | 49836 | macros/unicodetex/latex/tipauni/tipauni.dtx 2021/10/01 | 49644 | systems/texlive/tlnet/archive/make4ht.r60662.tar.xz -2021/10/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2021/10/01 | 486572 | systems/texlive/tlnet/archive/hanzibox.doc.r60661.tar.xz 2021/10/01 | 48371 | graphics/pstricks/contrib/pst-fill/doc/pst-fill-doc.tex -2021/10/01 | 483654 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2021/10/01 | 48253 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2021/10/01 | 476923 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2021/10/01 | 46907 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2021/10/01 | 461813 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2021/10/01 | 45968 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2021/10/01 | 45906 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma 2021/10/01 | 4580 | graphics/pstricks/base/Changes -2021/10/01 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2021/10/01 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2021/10/01 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2021/10/01 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc -2021/10/01 | 45311 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma 2021/10/01 | 4530 | macros/generic/markdown/markdown.css 2021/10/01 | 452 | macros/unicodetex/latex/tipauni/README.txt 2021/10/01 | 4485 | macros/generic/markdown/docstrip.cfg -2021/10/01 | 43427 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2021/10/01 | 43028 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2021/10/01 | 43003 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2021/10/01 | 42890 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2021/10/01 | 42712 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2021/10/01 | 42384 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma 2021/10/01 | 422886 | macros/unicodetex/latex/tipauni.zip 2021/10/01 | 4197924 | install/macros/latex/contrib/lwarp.tds.zip -2021/10/01 | 41193 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma 2021/10/01 | 40873 | macros/xetex/latex/zitie/doc/zitie-cn.tex -2021/10/01 | 40229 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2021/10/01 | 400432 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60657.tar.xz -2021/10/01 | 392793 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2021/10/01 | 39127 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2021/10/01 | 38140 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2021/10/01 | 37805 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2021/10/01 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2021/10/01 | 37240 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/10/01 | 4037 | macros/luatex/latex/truthtable/truthtable.sty 2021/10/01 | 37180 | graphics/pstricks/base/dvips/pstricks.pro 2021/10/01 | 3663 | macros/unicodetex/latex/tipauni/tipauni-commands.tex -2021/10/01 | 36629 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma 2021/10/01 | 3611774 | macros/latex/contrib/lwarp.zip 2021/10/01 | 357357 | macros/xetex/latex/zitie.zip -2021/10/01 | 35691 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma -2021/10/01 | 35085 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2021/10/01 | 34666 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2021/10/01 | 345740 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2021/10/01 | 34280 | usergrps/usergrps/lugs.html 2021/10/01 | 339839 | macros/xetex/latex/zitie/doc/zitie-cn.pdf -2021/10/01 | 33634 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2021/10/01 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma 2021/10/01 | 33349 | macros/latex/contrib/lwarp/lwarp.ins -2021/10/01 | 330788 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2021/10/01 | 32672 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2021/10/01 | 325044 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma 2021/10/01 | 320216 | macros/unicodetex/latex/njuthesis/njuvisual.dtx -2021/10/01 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2021/10/01 | 31538 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma 2021/10/01 | 3144374 | macros/latex/contrib/lwarp/lwarp.pdf -2021/10/01 | 31352 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma 2021/10/01 | 3123 | macros/generic/markdown/examples/example.md -2021/10/01 | 31231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2021/10/01 | 312110 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2021/10/01 | 30824 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2021/10/01 | 30059 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2021/10/01 | 29841 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/10/01 | 307 | macros/luatex/latex/truthtable/res/exampletable.tex 2021/10/01 | 29559 | macros/latex/contrib/lwarp/lwarpmk.lua -2021/10/01 | 295203 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma 2021/10/01 | 2947 | macros/latex/contrib/lwarp/lwarp_tutorial.txt -2021/10/01 | 29037 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2021/10/01 | 284580 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2021/10/01 | 284022 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2021/10/01 | 28390 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma 2021/10/01 | 2837 | macros/unicodetex/latex/njuthesis/njuthesis.ins -2021/10/01 | 28180 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2021/10/01 | 2796724 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2021/10/01 | 27729 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/10/01 | 278 | macros/luatex/latex/truthtable/res/exampletableoutput.tex 2021/10/01 | 2758078 | macros/latex/contrib/lwarp/lwarp.dtx -2021/10/01 | 27390 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2021/10/01 | 27358 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2021/10/01 | 27198 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2021/10/01 | 2672610 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2021/10/01 | 263959 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma 2021/10/01 | 25952 | systems/texlive/tlnet/archive/luapstricks.r60659.tar.xz -2021/10/01 | 258880 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2021/10/01 | 25629613 | systems/texlive/tlnet/install-tl.zip -2021/10/01 | 25290 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2021/10/01 | 250262 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2021/10/01 | 25020 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2021/10/01 | 24996 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2021/10/01 | 243425 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/10/01 | 2480 | systems/win32/TLW64/00README.TLW64 2021/10/01 | 24262 | macros/latex/contrib/decision-table/decision-table.dtx -2021/10/01 | 241814 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2021/10/01 | 241662 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2021/10/01 | 241634 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2021/10/01 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma 2021/10/01 | 238460 | macros/unicodetex/latex/tipauni/tipauni.pdf -2021/10/01 | 23364 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma 2021/10/01 | 2335 | macros/xetex/latex/zitie/README.md -2021/10/01 | 2313932 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2021/10/01 | 231322 | macros/latex/contrib/tabularray/tabularray.sty -2021/10/01 | 2261 | usergrps/usergrps/labels.tex -2021/10/01 | 22106 | usergrps/usergrps/lugs.tex -2021/10/01 | 22048 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2021/10/01 | 215249 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2021/10/01 | 21224 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2021/10/01 | 20875526 | systems/texlive/tlnet/install-tl-windows.exe -2021/10/01 | 208047 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2021/10/01 | 206604 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma 2021/10/01 | 2035132 | systems/texlive/tlnet/archive/siunitx.doc.r60660.tar.xz -2021/10/01 | 202796 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2021/10/01 | 20136 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2021/10/01 | 2009904 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2021/10/01 | 199731 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2021/10/01 | 198168 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2021/10/01 | 196872 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2021/10/01 | 196740 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2021/10/01 | 195636 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2021/10/01 | 194381 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma 2021/10/01 | 19105 | macros/unicodetex/latex/njuthesis/LICENSE 2021/10/01 | 18367 | graphics/pstricks/base/dvips/pst-dots.pro -2021/10/01 | 18176 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2021/10/01 | 180120 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2021/10/01 | 180012 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2021/10/01 | 17981 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2021/10/01 | 178353 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma 2021/10/01 | 17516 | systems/texlive/tlnet/archive/tex4ebook.r60663.tar.xz 2021/10/01 | 174564 | systems/texlive/tlnet/archive/make4ht.doc.r60662.tar.xz -2021/10/01 | 1713893 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2021/10/01 | 169243 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2021/10/01 | 16890709 | systems/texlive/tlnet/tlpkg/texlive.tlpdb 2021/10/01 | 1669 | macros/unicodetex/latex/tipauni/tipauni.ins -2021/10/01 | 16414 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2021/10/01 | 16356 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma 2021/10/01 | 1624 | macros/latex/contrib/lwarp/README.txt 2021/10/01 | 16120 | systems/texlive/tlnet/archive/hanzibox.source.r60661.tar.xz -2021/10/01 | 159580 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma 2021/10/01 | 15653 | macros/generic/markdown/README.md -2021/10/01 | 154805 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2021/10/01 | 154427 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2021/10/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2021/10/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 2021/10/01 | 15236 | systems/texlive/tlnet/archive/tikz-trackschematic.r60658.tar.xz 2021/10/01 | 1496 | systems/texlive/tlnet/archive/luapstricks.doc.r60659.tar.xz 2021/10/01 | 1481 | macros/latex/contrib/decision-table/decision-table.ins -2021/10/01 | 147373 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2021/10/01 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2021/10/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2021/10/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2021/10/01 | 14350 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma -2021/10/01 | 1421867 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma 2021/10/01 | 140951 | macros/generic/markdown/markdown.png 2021/10/01 | 138 | graphics/pstricks/contrib/pst-fill/Changes -2021/10/01 | 136821 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2021/10/01 | 136817 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2021/10/01 | 1358922 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2021/10/01 | 1358809 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma 2021/10/01 | 13563 | graphics/pstricks/contrib/pst-fill/tex/pst-fill.tex -2021/10/01 | 13464 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2021/10/01 | 1340927 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2021/10/01 | 133863 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/10/01 | 134816520 | systems/win32/miktex/setup/windows-x64/basic-miktex-21.8-x64.exe 2021/10/01 | 1333 | macros/generic/markdown/markdown.ins -2021/10/01 | 1301193 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2021/10/01 | 1291299 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2021/10/01 | 1262656 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2021/10/01 | 1261769 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2021/10/01 | 124281 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma 2021/10/01 | 1205 | macros/generic/markdown/examples/latex.tex -2021/10/01 | 119821 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2021/10/01 | 1169718 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2021/10/01 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini -2021/10/01 | 115351 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma 2021/10/01 | 113341 | macros/latex/contrib/decision-table.zip -2021/10/01 | 112983 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2021/10/01 | 112087 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma 2021/10/01 | 111518 | macros/latex/contrib/decision-table/decision-table.pdf 2021/10/01 | 1095 | macros/generic/markdown/examples/context.tex -2021/10/01 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2021/10/01 | 108284 | systems/texlive/tlnet/archive/texlive-scripts.r60657.tar.xz 2021/10/01 | 107982 | macros/unicodetex/latex/tipauni/tipauni-example.pdf 2021/10/01 | 1078883 | install/macros/generic/markdown.tds.zip -2021/10/01 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma 2021/10/01 | 107344 | systems/texlive/tlnet/archive/siunitx.source.r60660.tar.xz -2021/10/01 | 105223 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2021/10/01 | 103399 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2021/10/01 | 103203 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/10/01 | 106754 | macros/luatex/latex/truthtable/truthtable.pdf 2021/10/01 | 1015291 | macros/generic/markdown.zip 2021/10/01 | 10115 | macros/unicodetex/latex/tipauni/tipauni-example.tex -2021/10/01 | 100626 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma 2021/09/30 | 991 | support/tex4ebook/tex4ebook-exec_azw.lua 2021/09/30 | 9796 | support/make4ht/lapp-mk4.lua 2021/09/30 | 974 | support/make4ht/extensions/make4ht-ext-latexmk_build.lua @@ -344,7 +898,6 @@ 2021/09/30 | 718 | graphics/pgf/contrib/tikz-trackschematic/tikz-trackschematic-snippets/hectometer.tikz 2021/09/30 | 713 | support/make4ht/filters/make4ht-entities-to-unicode.lua 2021/09/30 | 698124 | graphics/pgf/contrib/tikz-trackschematic.zip -2021/09/30 | 6840 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2021/09/30 | 655 | graphics/pgf/contrib/tikz-trackschematic/tikz-trackschematic-snippets/level_crossing_double.tikz 2021/09/30 | 655 | graphics/pgf/contrib/tikz-trackschematic/tikz-trackschematic-snippets/level_crossing_double_full_closure.tikz 2021/09/30 | 638 | graphics/pgf/contrib/tikz-trackschematic/tikz-trackschematic-snippets/train_berth.tikz @@ -805,12 +1358,10 @@ 2021/09/27 | 1026 | graphics/pstricks/base/generic/pstricks-xetex.def 2021/09/26 | 9996 | systems/texlive/tlnet/archive/latexbug.source.r60609.tar.xz 2021/09/26 | 970944 | systems/texlive/tlnet/archive/chemplants.doc.r60606.tar.xz -2021/09/26 | 86744 | systems/texlive/tlnet/archive/pstricks.r60607.tar.xz 2021/09/26 | 833 | macros/latex/contrib/scrambledenvs/README.md 2021/09/26 | 8067 | fonts/erewhon-math/fourier-otf.sty 2021/09/26 | 78103 | macros/latex/contrib/thalie/thalie.dtx 2021/09/26 | 7704 | systems/texlive/tlnet/archive/chemplants.r60606.tar.xz -2021/09/26 | 7526604 | systems/texlive/tlnet/archive/pstricks.doc.r60607.tar.xz 2021/09/26 | 54720 | systems/texlive/tlnet/archive/acmart.source.r60608.tar.xz 2021/09/26 | 54451 | help/ctan/CTAN-upload-addendum.html 2021/09/26 | 5396 | systems/texlive/tlnet/archive/latexbug.r60609.tar.xz @@ -842,32 +1393,3 @@ 2021/09/26 | 1043 | macros/latex/contrib/thalie/dicts/thalie-german.trsl 2021/09/26 | 1027 | macros/latex/contrib/thalie/dicts/thalie-french.trsl 2021/09/26 | 1001 | macros/latex/contrib/thalie/dicts/thalie-english.trsl -2021/09/25 | 9947211 | macros/latex/contrib/acmart.zip -2021/09/25 | 992225 | graphics/pgf/contrib/chemplants.zip -2021/09/25 | 9066 | graphics/pgf/contrib/chemplants/chemplants-changes.tex -2021/09/25 | 88111 | graphics/pstricks/contrib/pstricks-add/tex/pstricks-add.tex -2021/09/25 | 8428 | systems/texlive/tlnet/archive/yamlvars.r60602.tar.xz -2021/09/25 | 83 | macros/latex/required/latexbug/README.md -2021/09/25 | 828382 | graphics/pgf/contrib/chemplants/chemplants-doc.pdf -2021/09/25 | 801384 | systems/texlive/tlnet/archive/ccool.doc.r60600.tar.xz -2021/09/25 | 756 | systems/texlive/tlnet/archive/collection-luatex.r60602.tar.xz -2021/09/25 | 57931 | graphics/pgf/contrib/chemplants/chemplants.sty -2021/09/25 | 3992 | systems/texlive/tlnet/archive/ccool.r60600.tar.xz -2021/09/25 | 38152 | systems/texlive/tlnet/archive/yamlvars.doc.r60602.tar.xz -2021/09/25 | 36311 | macros/latex/required/latexbug/latexbug.dtx -2021/09/25 | 276112 | graphics/pgf/contrib/chemplants/chemplants-doc.tex -2021/09/25 | 235988 | systems/texlive/tlnet/archive/debate.doc.r60601.tar.xz -2021/09/25 | 223228 | install/macros/latex/required/latexbug.tds.zip -2021/09/25 | 216931 | macros/latex/required/latexbug.zip -2021/09/25 | 211648 | macros/latex/required/latexbug/latexbug.pdf -2021/09/25 | 1963 | macros/latex/required/latexbug/latexbug.ins -2021/09/25 | 193930 | graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex -2021/09/25 | 18936 | graphics/pstricks/base/doc/pst-doc.cls -2021/09/25 | 1576 | systems/texlive/tlnet/archive/debate.r60601.tar.xz -2021/09/25 | 13112 | systems/texlive/tlnet/archive/ccool.source.r60600.tar.xz -2021/09/25 | 12786929 | graphics/pstricks/contrib/pstricks-add.zip -2021/09/25 | 12431528 | graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.pdf -2021/09/25 | 123017 | graphics/pgf/contrib/chemplants/chemplants-changes.pdf -2021/09/25 | 1109 | graphics/pgf/contrib/chemplants/README.md -2021/09/25 | 1070 | graphics/pstricks/contrib/pstricks-add/Changes -2021/09/25 | 1021 | macros/latex/required/latexbug/changes.txt diff --git a/graphics/circuit_macros/CHANGES b/graphics/circuit_macros/CHANGES index e76300499c..20c9c25be3 100644 --- a/graphics/circuit_macros/CHANGES +++ b/graphics/circuit_macros/CHANGES @@ -1,5 +1,9 @@ CHANGES +Version 9.7: Improved shadebox macro and a bugfix. Experimental single-line + diagram elements. Revised fitcurve. New options for resistor, capacitor, + ebox, xtal. Tweaked addtaps. Convert web version of Circuit_macros.pdf + to html. New macro sarrow. Version 9.6: Tweaked svg examples; macros lg_bartxt, opamp, beginshade, endshade, relaycoil, inductor, source, rotbox; files lib3D, libgen. New macros DIP, g_fet, Fe_fet, shielded, setkeys_, Deltasymbol, Ysymbol, diff --git a/graphics/circuit_macros/Copying b/graphics/circuit_macros/Copying index 04e7385ab8..cb33807a56 100644 --- a/graphics/circuit_macros/Copying +++ b/graphics/circuit_macros/Copying @@ -1,4 +1,4 @@ -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/README b/graphics/circuit_macros/README index b70b3232dc..67fb1093f5 100644 --- a/graphics/circuit_macros/README +++ b/graphics/circuit_macros/README @@ -1,5 +1,5 @@ -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/darrow.m4 b/graphics/circuit_macros/darrow.m4 index 859cd7f4ff..1f41c70982 100644 --- a/graphics/circuit_macros/darrow.m4 +++ b/graphics/circuit_macros/darrow.m4 @@ -1,7 +1,7 @@ divert(-1) darrow.m4 Macros for double lines and arrows -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/doc/CapacitorsMan.m4 b/graphics/circuit_macros/doc/CapacitorsMan.m4 index 7234cea453..d57dd869a9 100644 --- a/graphics/circuit_macros/doc/CapacitorsMan.m4 +++ b/graphics/circuit_macros/doc/CapacitorsMan.m4 @@ -1,9 +1,6 @@ .PS # `CapacitorsMan.m4' cct_init -divert(-1) - -divert(0)dnl movewid = 2 pt__ hm = 2.05 @@ -26,7 +23,7 @@ vm = 0.28 move right_ hm {capacitor(,N); move ;"`{\tt capacitor(,N)}'" ljust} move right_ hm - {xtal ; move ;"`{\tt xtal}'" ljust} + {capacitor(,CP); move ;"`{\tt capacitor(,CP)}'" ljust} } move down 0.25; right_ { {capacitor(,dC); move ;"`{\tt capacitor(,dC)}'" ljust} @@ -35,7 +32,6 @@ vm = 0.28 move right_ hm {variable(`capacitor',NN,-30,dimen_/3) move ;`"{\tt variable(}`{\tt capacitor',}"' ljust \ - `"{\enskip\tt NN,-30,dimen\_/3)}"' ljust - } + `"{\enskip\tt NN,-30,dimen\_/3)}"' ljust } } .PE diff --git a/graphics/circuit_macros/doc/Circuit_macros.html b/graphics/circuit_macros/doc/Circuit_macros.html new file mode 100644 index 0000000000..a2062072f8 --- /dev/null +++ b/graphics/circuit_macros/doc/Circuit_macros.html @@ -0,0 +1,8601 @@ + + + + + + + + + + + + + + + + + +
+
M4 Macros for Electric Circuit Diagrams in L
A
T
E
X Documents
Dwight Aplevich
Contents, Version 9.6.4
1 Introduction . . . . . . . . . . . . . . . . . . . . . 1
2 Using the macros . . . . . . . . . . . . . . . . 2
2.1 Quick start . . . . . . . . . . . . . 2
2.1.1 Using m4 . . . . . . . . . . 3
2.1.2
Processing with dpic and
PSTricks or Tikz PGF . . . 3
2.1.3 Processing with gpic . . . . 3
2.1.4 Simpliï¬cations . . . . . . . 4
2.2 Including the libraries . . . . . . . 5
3 Pic essentials . . . . . . . . . . . . . . . . . . . . . 6
3.1 Manuals . . . . . . . . . . . . . . . 6
3.2
The linear objects:
line, arrow,
spline, arc . . . . . . . . . . . . 6
3.3 Positions . . . . . . . . . . . . . . . 7
3.4
The planar objects:
box, circle,
ellipse, and text . . . . . . . . . 7
3.5 Compound objects . . . . . . . . . 8
3.6 Other language facilities . . . . . . 8
4 Two-terminal circuit elements . . . . 9
4.1 Circuit and element basics . . . . . 9
4.2 The two-terminal elements . . . . . 10
4.3 Branch-current arrows . . . . . . . 14
4.4 Labels . . . . . . . . . . . . . . . . 15
5 Placing two-terminal elements . . . . 16
5.1 Series and parallel circuits . . . . . 17
6 Composite circuit elements . . . . . . . 18
6.1 Semiconductors . . . . . . . . . . . 25
7 Corners . . . . . . . . . . . . . . . . . . . . . . . . . . 28
8 Looping . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9 Logic gates . . . . . . . . . . . . . . . . . . . . . . . 29
10 Integrated circuits . . . . . . . . . . . . . . . 33
11 Element and diagram scaling . . . . . 33
11.1 Circuit scaling . . . . . . . . . . . 34
11.2 Pic scaling . . . . . . . . . . . . . . 34
12 Writing macros . . . . . . . . . . . . . . . . . . 35
12.1 Macro arguments . . . . . . . . . . 38
13 Interaction with L
A
T
E
X . . . . . . . . . . . 39
14 PSTricks and other tricks . . . . . . . . 41
14.1 Tikz with pic . . . . . . . . . . . . 42
15 Web documents, pdf, and alterna-
tive output formats . . . . . . . . . . . . . . 42
16 Developer’s notes . . . . . . . . . . . . . . . . 43
17 Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
18 List of macros . . . . . . . . . . . . . . . . . . . . 47
References . . . . . . . . . . . . . . . . . . . . . . 70
1 Introduction
It appears that people who are unable to execute pretty pictures with pen and paper
ï¬nd it gratifying to try with a computer [10].
This manual
1
describes a method for drawing electric circuits and other diagrams in L
A
T
E
X
and web documents. The diagrams are deï¬ned in the simple pic drawing language [
8
] augmented
with m4 macros [
9
], and are processed by m4 and a pic processor to convert them to Tikz PGF,
PSTricks, other L
A
T
E
X-compatible code, or SVG. In its basic form, the method has the advantages
and disadvantages of T
E
X itself, since it is macro-based and non-WYSIWYG, with ordinary text
input. The book from which the above quotation is taken correctly points out that the payoff can
be in quality of diagrams at the price of the time spent in learning how to draw them.
A collection of basic components, most based on IEC and IEEE standards [
6
,
7
], and conventions
for their internal structure are described. Macros such as these are only a starting point, since it is
often convenient to customize elements or to package combinations of them for particular drawings.
1
This document is best displayed with a reader that shows bookmarks.
1
+
2 Using the macros
This section describes the basic process of adding circuit diagrams to L
A
T
E
X documents to produce
postscript or pdf ï¬les. On some operating systems, project management software with graphical
interfaces can automate the process, but the steps can also be performed by a script, makeï¬le, or by
hand for simple documents as described in Section 2.1.
The diagram source ï¬le is preprocessed as illustrated in Figure 1. A conï¬guration ï¬le is read by
m4, followed by the diagram source. The result is passed through a pic interpreter to produce
.tex
output that can be inserted into a .tex document using the \input command.
.m4
diagram
.m4
macros
m4
pic
interpreter
.tex
ï¬les
L
A
T
E
X
or
PDFlatex
.dvi
or
.pdf
Figure 1: Inclusion of ï¬gures and macros in the L
A
T
E
X document.
The interpreter output contains Tikz PGF [
16
] commands, PSTricks [
17
] commands, basic L
A
T
E
X
graphics, tpic specials, or other formats, depending on the chosen options. These variations are
described in Section 15.
There are two principal choices of pic interpreter. One is dpic, described later in this document.
A partial alternative is GNU gpic -t (sometimes simply named pic) [
11
] together with a printer driver
that understands tpic specials, typically dvips [
14
]. The dpic processor extends the pic language in
small but important ways; consequently, some of the macros and examples in this distribution work
fully only with dpic. Pic processors contain basic macro facilities, so some of the concepts applied
here do not require m4.
2.1 Quick start
The contents of ï¬le
quick.m4
and resulting diagram are shown in Figure 2 to illustrate the language
and the production of basic labeled circuits.
.PS # Pic input begins with .PS
cct_init # Read in macro definitions and set defaults
elen = 0.75 # Variables are allowed; default units are inches
Origin: Here # Position names are capitalized
source(up_ elen); llabel(-,v_s,+)
resistor(right_ elen); rlabel(,R,)
dot
{ # Save the current position and direction
capacitor(down_ to (Here,Origin)) #(Here,Origin) = (Here.x,Origin.y)
rlabel(+,v,-); llabel(,C,)
dot
} # Restore position and direction
line right_ elen*2/3
inductor(down_ Here.y-Origin.y); rlabel(,L,); b_current(i)
line to Origin
.PE # Pic input ends
−
v
s
+
R
+
v
−
C L
i
Figure 2:
The ï¬le
quick.m4
and resulting diagram. There are several ways of drawing the same picture;
for example, nodes (such as
Origin
) can be deï¬ned and circuit branches drawn between them; or
absolute coordinates can be used (e.g.,
source(up_ from (0,0) to (0,0.75))
). Element sizes
and styles can be varied as described in later sections.
2
+
2.1.1 Using m4
The command
m4 ï¬lename . . .
causes m4 to search for the named ï¬les in the current directory and directories speciï¬ed by
environmental variable
M4PATH
. Set
M4PATH
to the full name (i.e., the path) of the directory
containing
libcct.m4
and the other circuit library
.m4
ï¬les; otherwise invoke m4 as
m4 -I
installdir
where installdir is the path to the directory containing the library ï¬les. Now there are at least two
basic possibilities as follows, but be sure to read Section 2.1.4 for simpliï¬ed use.
2.1.2 Processing with dpic and PSTricks or Tikz PGF
If you are using dpic with PSTricks, put
\usepackage{pstricks}
in the main L
A
T
E
X source ï¬le
header and type the following commands or put them into a script:
m4 pstricks.m4 quick.m4 > quick.pic
dpic -p quick.pic > quick.tex
To produce Tikz PGF code, the L
A
T
E
X header should contain
\usepackage{tikz}
. The commands
are modiï¬ed to read pgf.m4 and invoke the -g option of dpic as follows:
m4 pgf.m4 quick.m4 > quick.pic
dpic -g quick.pic > quick.tex
A conï¬guration ï¬le (
pstricks.m4
and
pgf.m4
in the above examples) is always the ï¬rst ï¬le to
be given to m4. Put the following or its equivalent in the document body:
\begin{figure}[ht]
\centering
\input quick
\caption{Customized caption for the figure.}
\label{Symbolic_label}
\end{figure}
Then for PSTricks, the commands “
latex
ï¬le
; dvips
ï¬le†produce ï¬le
.ps
, which can be printed or
viewed using
gsview
, for example. For Tikz PGF, Invoking PDFlatex on the source produces
.pdf
output directly. The essential line is \input quick whether or not the ï¬gure environment is used.
The effect of the m4 command above is shown in Figure 3. Conï¬guration ï¬les
pstricks.m4
or
pgf.m4
cause library
libgen.m4
to be read, thereby deï¬ning the macro
cct_init
. The diagram
source ï¬le is then read and the circuit-element macros in
libcct.m4
are deï¬ned during expansion
of cct_init.
.pic
m4
Conï¬guration ï¬le
pstricks.m4 libgen.m4
· · ·
define(‘cct_init’,...)
· · ·
Diagram source quick.m4
.PS
cct_init
· · ·
libcct.m4
· · ·
define(‘resistor’,...)
· · ·
Figure 3: The command m4 pstricks.m4 quick.m4 > quick.pic.
2.1.3 Processing with gpic
If your printer driver understands tpic specials and you are using gpic (on some systems the gpic
command is pic), the commands are
3
+
m4 gpic.m4 quick.m4 > quick.pic
gpic -t quick.pic > quick.tex
and the ï¬gure inclusion statements are as shown:
\begin{figure}[ht]
\input quick
\centerline{\box\graph}
\caption{Customized caption for the figure.}
\label{Symbolic_label}
\end{figure}
2.1.4 Simpliï¬cations
M4 must read a conï¬guration ï¬le before any other ï¬les, either before reading the diagram source ï¬le
or at the beginning of it. There are several ways to control the process, as follows:
1.
The macros can be processed by L
A
T
E
X-speciï¬c project software and by graphic applications
such as Pycirkuit [
12
]. Alternatively when many ï¬les are to be processed, a facility such as
Unix “make,†which is also available in PC and Mac versions, can be employed to automate
the required commands. On systems without such facilities, a scripting language can be used.
2. The m4 commands illustrated above can be shortened to
m4 quick.m4 > quick.pic
by inserting
include(pstricks.m4)
(assuming PSTricks processing) immediately after the
.PS
line, the effect of which is shown in Figure 4. However, if you then want to use Tikz PGF,
the line must be changed to include(pgf.m4).
.pic
m4
Diagram source
.PS
include(pstricks.m4)
cct_init
· · ·
Conï¬guration ï¬le
pstricks.m4 libgen.m4
· · ·
define(‘cct_init’,...)
· · ·
libcct.m4
· · ·
define(‘resistor’,...)
· · ·
Figure 4:
The command
m4 quick.m4 > quick.pic
, with
include(pstricks.m4)
preceding
cct_init
.
3.
In the absence of a need to examine the ï¬le
quick.pic
, the commands for producing the
.tex
ï¬le can be reduced (provided the above inclusions have been made) to
m4 quick.m4 | dpic -p > quick.tex
4.
You can put several diagrams into a single source ï¬le. Make each diagram the body of a L
A
T
E
X
macro, as shown:
\newcommand{\diaA}{%
.PS
drawing commands
.PE
\box\graph }% \box\graph not required for dpic
\newcommand{\diaB}{%
.PS
drawing commands
.PE
\box\graph }% \box\graph not required for dpic
Produce a
.tex
ï¬le as usual, insert the
.tex
into the L
A
T
E
X source, and invoke the macros
\diaA and \diaB at the appropriate places.
4
+
5.
In some circumstances, it may be desirable to invoke m4 and dpic automatically from the
document. Deï¬ne a macro \mtotex as shown in the following example:
\documentclass{article}
\usepackage{tikz}
\newcommand\mtotex[2]{\immediate\write18{m4 #2.m4 | dpic -#1 > #2.tex}}%
\begin{document}
\mtotex{g}{FileA} % Generate FileA.tex
\input{FileA.tex} \par
\mtotex{g}{FileB} % Generate FileB.tex
\input{FileB.tex}
\end{document}
The ï¬rst argument of
\mtotex
is a
p
for pstricks or
g
for pgf. Sources
FileA.m4
and
FileB.m4
must contain any required
include
statements, and the main document should be processed
using the latex or pdflatex option
--shell-escape
. If the
M4PATH
environment variable is
not set then insert
-I
installdir after
m4
in the command deï¬nition, where installdir is the
absolute path to the installation directory. This method processes the picture source each
time L
A
T
E
X is run, so for large documents containing many diagrams, the
\mtotex
lines could
be commented out after debugging the corresponding graphic. A derivative of this method
that allows the insertion of pic code into a Tikz picture is described in Section 14.1.
6.
It might be convenient for the source of small diagrams to be part of the document source text.
The
filecontents
environment of current L
A
T
E
X allows this; older versions can employ a
now-obsolete package
filecontents.sty
. The following example for processing by
pdflatex
--shell-escape
ï¬rst writes the m4 source to ï¬le
sample.m4
, invokes
\mtotex
on it, and reads
in the result:
\begin{filecontents}[overwrite,noheader,nosearch]{sample.m4}
include(pgf.m4)
.PS
cct_init
drawing commands . . .
.PE
\end{filecontents}
\mtotex{g}{sample}
\input{sample.tex}
2.2 Including the libraries
The conï¬guration ï¬les for dpic are as follows, depending on the output format (see Section 15):
pstricks.m4, pgf.m4, mfpic.m4, mpost.m4, postscript.m4, psfrag.m4, svg.m4, gpic.m4,
or
xfig.m4
. The ï¬le
psfrag.m4
simply deï¬nes the macro
psfrag_
and then reads
postscript.m4
.
For gpic, the conï¬guration ï¬le is
gpic.m4
. The usual case for producing circuit diagrams is to read
pstricks.m4
or
pgf.m4
ï¬rst when dpic is the postprocessor or to set one of these as the default
conï¬guration ï¬le.
At the top of each diagram source, put one or more initialization commands; that is,
cct_init, log_init, sfg_init, darrow_init, threeD_init
or, for diagrams not requiring specialized macros,
gen_init
. As shown in Figures 3 and 4, each
initialization command reads in the appropriate macro library if it hasn’t already been read; for
example, cct_init tests whether libcct.m4 has been read and includes it if necessary.
A few of the distributed example ï¬les contain other experimental macros that can be pasted into
diagram source ï¬les; see Flow.m4 or Buttons.m4, for example.
The libraries contain hints and explanations that might help in debugging or if you wish to
modify any of the macros. Macros are generally named using the obvious circuit element names
so that programming becomes something of an extension of the pic language. Some macro names
5
+
end in an underscore to reduce the chance of name clashes. These can be invoked in the diagram
source but there is no long-term guarantee that their names and functionality will remain unchanged.
Finally, macros intended only for internal use begin with the characters m4.
3 Pic essentials
Pic source is a sequence of lines in a text ï¬le. The ï¬rst line of a diagram begins with
.PS
with
optional following arguments, and the last line is normally
.PE
. Lines outside of these pass through
the pic processor unchanged.
The visible objects can be divided conveniently into two classes, the linear objects
line, arrow,
spline, arc, and the planar objects box, circle, ellipse.
The object
move
is linear but draws nothing. A compound object, or
block,
is planar and
consists of a pair of square brackets enclosing other objects, as described in Section 3.5.
Objects can be placed using absolute coordinates or, as is often better, relative to other objects.
Pic allows the deï¬nition of real-valued variables, which are alphameric names beginning with
lower-case letters, and computations using them. Objects or locations on the diagram can be given
symbolic names beginning with an upper-case letter.
3.1 Manuals
The classic pic manual [
8
] is still a good introduction to pic, but a more complete manual [
13
] can be
found in the GNU groff package, and both are available on the web [
8
,
13
]. Reading either will give
you competence with pic in an hour or two. Explicit mention of
*roff
string and font constructs in
these manuals should be replaced by their equivalents in the L
A
T
E
X context. A man-page language
summary is appended to the dpic manual [1].
A web search will yield good discussions of “little languagesâ€; for pic in particular, see Chapter 9
of [2]. Chapter 1 of reference [4] also contains a brief discussion of this and other languages.
3.2 The linear objects: line, arrow, spline, arc
A line can be drawn as follows:
line from position to position
where position is deï¬ned below or
line direction distance
where direction is one of
up, down, left, right.
When used with the m4 macros described here,
it is preferable to add an underscore:
up_, down_, left_, right_.
The distance is a number or
expression and the units are inches, but the assignment
scale = 25.4
has the effect of changing the units to millimetres, as described in Section 11.
Lines can also be drawn to any distance in any direction. The example,
line up_ 3/sqrt(2) right_ 3/sqrt(2) dashed
draws a line 3 units long from the current location, at a 45
â—¦
angle above horizontal. Lines (and
other objects) can be speciï¬ed as dotted, dashed, or invisible, as above.
The construction
line from A to B chop x
truncates the line at each end by
x
(which may be negative) or, if
x
is omitted, by the current circle
radius, a convenience when A and B are circular graph nodes, for example. Otherwise
line from A to B chop x chop y
truncates the line by x at the start and y at the end.
Any of the above means of specifying line (or arrow) direction and length will be called a linespec.
Lines can be concatenated. For example, to draw a triangle:
line up_ sqrt(3) right_ 1 then down_ sqrt(3) right_ 1 then left_ 2
6
+
3.3 Positions
A position can be deï¬ned by a coordinate pair, e.g.
3,2.5
, more generally using parentheses by
(
expression, expression
)
, as a sum or difference as position +
(
expression, expression
)
, or by the
construction
(
position, position
)
, the latter taking the
x
-coordinate from the ï¬rst position and
the
y
-coordinate from the second. A position can be given a symbolic name beginning with an
upper-case letter, e.g.
Top: (0.5,4.5)
. Such a deï¬nition does not affect the calculated ï¬gure
boundaries. The current position
Here
is always deï¬ned and is equal to (0
,
0) at the beginning of a
diagram or block. The coordinates of a position are accessible, e.g.
Top.x
and
Top.y
can be used in
expressions. The center, start, and end of linear objects (and the deï¬ned points of other objects as
described below) are predeï¬ned positions, as shown in the following example, which also illustrates
how to refer to a previously drawn element if it has not been given a name:
line from last line.start to 2nd last arrow.end then to 3rd line.center
Objects can be named (using a name commencing with an upper-case letter), for example:
Bus23: line up right
after which, positions associated with the object can be referenced using the name; for example:
arc cw from Bus23.start to Bus23.end with .center at Bus23.center
An arc is drawn by specifying its rotation, starting point, end point, and center, but sensible
defaults are assumed if any of these are omitted. Note that
arc cw from Bus23.start to Bus23.end
does not deï¬ne the arc uniquely; there are two arcs that satisfy this speciï¬cation. This distribution
includes the m4 macros
arcr( position, radius, start radians, end radians, modiï¬ers, ht)
arcd( position, radius, start degrees, end degrees, modiï¬ers, ht)
arca( chord linespec, ccw|cw, radius, modiï¬ers)
to draw uniquely deï¬ned arcs. If the ï¬fth argument of
arcr
or
arcd
contains
->
or
<-
then a
midpoint arrowhead of height speciï¬ed by arg6 is added. For example,
arcd((1,-1),,0,-90,<- outlined "red") dotted
draws a red dotted arc with midpoint arrowhead, centre at (1
, −
1)
,
and default radius. The example
arca(from (1,1) to (2,2),,1,->)
draws an acute angled arc with arrowhead on the chord deï¬ned by the ï¬rst argument.
The linear objects can be given arrowheads at the start, end, or both ends, for example:
line dashed <- right 0.5
arc <-> height 0.06 width 0.03 ccw from Here to Here+(0.5,0) \
with .center at Here+(0.25,0)
spline -> right 0.5 then down 0.2 left 0.3 then right 0.4
The arrowheads on the arc above have had their shape adjusted using the
height
and
width
parameters.
3.4 The planar objects: box, circle, ellipse, and text
Planar objects are drawn by specifying the width, height, and position, thus:
A: box ht 0.6 wid 0.8 at (1,1)
after which, in this example, the position
A.center
is deï¬ned, and can be referenced simply as
A
.
The compass points
A.n, A.s, A.e, A.w, A.ne, A.se, A.sw, A.nw
are automatically deï¬ned, as
are the dimensions
A.height
and
A.width.
Planar objects can also be placed by specifying the
location of a deï¬ned point; for example, two touching circles can be drawn as shown:
circle radius 0.2
circle diameter (last circle.width * 1.2) with .sw at last circle.ne
The planar objects can be ï¬lled with gray or colour. For example, either
box dashed fill_(number) or box dashed outlined "color" shaded "color"
produces a dashed box. The ï¬rst case has a gray ï¬ll determined by number, with 0 corresponding
to black and 1 to white; the second case allows color outline and ï¬ll, the color strings depending
on the postprocessor. Postprocessor-compatible RGB color strings are produced by the macro
rgbstring(red fraction, green fraction, blue fraction); to produce an orange ï¬ll for example:
... shaded rgbstring( 1, 0.645, 0)
7
+
Basic colours for lines and ï¬lls are provided by gpic and dpic, but more elaborate line and ï¬ll
styles or other effects can be incorporated, depending on the postprocessor, using
command "string"
where string is one or more postprocessor command lines.
Arbitrary text strings, typically meant to be typeset by L
A
T
E
X, are delimited by double-quote
characters and occur in two ways. The ï¬rst way is illustrated by
"\large Resonances of $C_{20}H_{42}$" wid x ht y at position
which writes the typeset result, like a box, at position and tells pic its size. The default size assumed
by pic is given by parameters
textwid
and
textht
if it is not speciï¬ed as above. The exact typeset
size of formatted text can be obtained as described in Section 13. The second occurrence associates
one or more strings with an object, e.g., the following writes two words, one above the other, at the
centre of an ellipse:
ellipse "\bf Stop" "\bf here"
The C-like pic function sprintf("format string",numerical arguments) is equivalent to a string.
3.5 Compound objects
A compound object is a group of statements enclosed in square brackets. Such an object is placed
by default as if it were a box, but it can also be placed by specifying the ï¬nal position of a deï¬ned
point. A deï¬ned point is the center or compass corner of the bounding box of the compound object
or one of its internal objects. Consider the last line of the code fragment shown:
Ands: [ right_
And1: AND_gate
And2: AND_gate at And1 - (0,And1.ht*3/2)
. . .
] with .And2.In1 at position
The two gate macros evaluate to compound objects containing
Out
,
In1
, and other locations. The
ï¬nal positions of all objects inside the square brackets are determined in the last line by specifying
the position of In1 of gate And2.
3.6 Other language facilities
All objects have default sizes, directions, and other characteristics, so part of the speciï¬cation of an
object can sometimes be proï¬tably omitted.
Another possibility for deï¬ning positions is
expression between position and position
which means
1st position + expression × (2nd position − 1st position)
and which can be abbreviated as
expression < position , position >
Care has to be used in processing the latter construction with m4, since the comma may have to be
put within quotes, ‘,’ to distinguish it from the m4 argument separator.
Positions can be calculated using expressions containing variables. The scope of a position is the
current block. Thus, for example,
theta = atan2(B.y-A.y,B.x-A.x)
line to Here+(3*cos(theta),3*sin(theta)).
Expressions are the usual algebraic combinations of primary quantities: constants, environmental
parameters such as
scale,
variables, horizontal or vertical coordinates of terms such as position
.x
or position
.y
, dimensions of pic objects, e.g.
last circle.rad
. The elementary algebraic operators
are +, -, *, /, %, =, +=, -=, *=, /=, and %=, similar to the C language.
The logical operators
==, !=, <=, >=, >,
and
<
apply to expressions and strings. A modest
selection of numerical functions is also provided: the single-argument functions
sin, cos, log,
exp, sqrt, int
, where
log
and
exp
are base-10, the two-argument functions
atan2, max, min,
and the random-number generator rand(). Other functions are also provided using macros.
8
+
A pic manual should be consulted for details, more examples, and other facilities, such as the
branching facility
if expression then { anything } else { anything },
the looping facility
for variable = expression to expression by expression do { anything },
operating-system commands, pic macros, and external ï¬le inclusion.
4 Two-terminal circuit elements
There is a fundamental difference between the two-terminal elements, each of which is drawn along
an invisible straight-line segment, and other elements, which are compound objects mentioned in
Section 3.5. The two-terminal element macros follow a set of conventions described in this section,
and other elements will be described in Section 6.
4.1 Circuit and element basics
A list of the library macros and their arguments is in Section 18. The arguments have default values,
so that only those that differ from defaults need be speciï¬ed.
Figure 5, which shows a resistor, also serves as an example of pic commands. The ï¬rst part of
the source ï¬le for this ï¬gure is on the left:
.PS
cct_init
linewid = 2.0
linethick_(2.0)
R1: resistor
last []
R1.start R1.endR1.centre
elen_
dimen_
Figure 5: Resistor named R1, showing the size parameters, enclosing block, and predeï¬ned positions.
The lines of Figure 5 and the remaining source lines of the ï¬le are explained below:
•
The ï¬rst line invokes the macro
cct_init
that loads the library
libcct.m4
and initializes
local variables needed by some circuit-element macros.
•
The sizes of circuit elements are proportional to the pic environmental variable
linewid
, so
redeï¬ning this variable changes element sizes. The element body is drawn in proportion to
dimen_
, a macro that evaluates to
linewid
unless redeï¬ned, and the default element length
is
elen_
, which evaluates to
dimen_*3/2
unless redeï¬ned. Setting
linewid
to 2.0 as in the
example means that the default element length becomes 3.0 in. For resistors, the default length
of the body is
dimen_/2,
and the width is
dimen_/6.
All of these values can be customized.
Element scaling and the use of SI units is discussed further in Section 11.
•
The macro
linethick_
sets the default thickness of subsequent lines (to 2.0 pt in the example).
Macro arguments are written within parentheses following the macro name, with no space
between the name and the opening parenthesis. Lines can be broken before macro arguments
because m4 and dpic ignore white space immediately preceding arguments. Otherwise, a long
line can be continued to the next by putting a backslash as the rightmost character.
•
The two-terminal element macros expand to sequences of drawing commands that begin with
‘line invis
linespec
’
, where linespec is the ï¬rst argument of the macro if it is non-blank,
otherwise the line is drawn a distance
elen_
in the current direction, which is to the right
by default. The invisible line is ï¬rst drawn, then the element is drawn on top of it. The
element—rather, the initial invisible line—can be given a name,
R1
in the example, so that
positions R1.start, R1.centre, and R1.end are automatically deï¬ned as shown.
9
+
•
The element body is overlaid by a block, which can be used to place labels around the element.
The block corresponds to an invisible rectangle with horizontal top and bottom lines, regardless
of the direction in which the element is drawn. A dotted box has been drawn in the diagram
to show the block boundaries.
•
The last sub-element, identical to the ï¬rst in two-terminal elements, is an invisible line that
can be referenced later to place labels or other elements. If you create your own macros, you
might choose simplicity over generality, and include only visible lines.
To produce Figure 5, the following embellishments were added after the previously shown source:
thinlines_
box dotted wid last [].wid ht last [].ht at last []
move to 0.85 between last [].sw and last [].se
spline <- down arrowht*2 right arrowht/2 then right 0.15; "\tt last []" ljust
arrow <- down 0.3 from R1.start chop 0.05; "\tt R1.start" below
arrow <- down 0.3 from R1.end chop 0.05; "\tt R1.end" below
arrow <- down last [].c.y-last arrow.end.y from R1.c; "\tt R1.centre" below
dimension_(from R1.start to R1.end,0.45,\tt elen\_,0.4)
dimension_(right_ dimen_ from R1.c-(dimen_/2,0),0.3,\tt dimen\_,0.5)
.PE
•
The line thickness is set to the default thin value of
0.4 pt
, and the box displaying the element
body block is drawn. Notice how the width and height can be speciï¬ed, and the box centre
positioned at the centre of the block.
•
The next paragraph draws two objects, a spline with an arrowhead, and a string left justiï¬ed
at the end of the spline. Other string-positioning modiï¬ers than
ljust
are
rjust, above,
and below.
• The last paragraph invokes a macro for dimensioning diagrams.
4.2 The two-terminal elements
The two-terminal elements are shown in Figures 6 to 15 and part of Figure 16. Several elements
are included more than once to illustrate some of their arguments, which are listed in detail in
Section 18. Figure 6 shows some resistors with typical variants.
resistor
resistor(,,Q) resistor(,,V)
resistor(,,ES) resistor(,,H) resistor(,,AC)
resistor(,,B)
resistor(,,E)
≡ ebox
ebox(,0.5,0.3)
ebox(,,,0.9)
ebox(,,,,shaded "green")
X
ebox(,wdth=0.2;box=dashed shaded "green";text="X")
Figure 6:
Resistors dawn by the macro
resistor(
linespec, n
|E,
chars
,
cycle wid
)
. The second argument
is either an integer to specify number of cycles, the letter
E
, or blank. The third argument speciï¬es
the desired variant. The default ebox element designates a resistor.
The ï¬rst macro argument speciï¬es the invisible line segment along which the element is drawn.
If the argument is blank, the element is drawn from the current position in the current drawing
direction along a default length. The other arguments produce variants of the default elements.
Thus, for example,
resistor(up_ 1.25,7)
draws a resistor 1.25 units long up from the current position, with 7 vertices per side. The macro
up_ evaluates to up but also resets the current directional parameters to point up.
10
+
Capacitors are illustrated in Figure 7. See Section 6 for the variable macro.
capacitor
capacitor(,C) capacitor(,C+)
capacitor(,P) capacitor(,E) capacitor(,K)
capacitor(,M) capacitor(,N) capacitor(,CP)
capacitor(,dC) capacitor(,dF)
variable(‘capacitor’,
NN,-30,dimen_/3)
Figure 7:
The
capacitor(
linespec, chars,
[R],
height, width
)
macro, and an example application of the
variable macro.
Basic inductors are illustrated in Figure 8.
inductor
inductor(,W) inductor(,L)
...(„3,M)
...(,W,6,P1);
variable
...(,L,9,K)
...(,,,M3)
addtaps(-,1/2,-dimen_/6)
ebox(,,,0)
tapped(‘ebox(,,,0)’,
-,1/4,-dimen_/6,
3/4,-dimen_/6)
Tap1 Tap2
shielded(
‘inductor(,,,M)’)
shielded(‘ebox(,,,0)’,R)
Figure 8:
Basic inductors created with the
inductor(
linespec,
W|L,
cycles,
M|P|K,
loop wid
)
macro,
the
ebox
macro for European-style inductors, and some modiï¬cations (see also Section 6). When an
embellished element is repeated several times, writing a wrapper macro may be desirable.
Some more basic elements are in Figure 9, and ampliï¬ers in Figure 10.
lamp thermocouple
memristor heater tline
pvcell
reed
reed(,,,fill_(0.9),CR)
gap
gap(,,A)
arrowline
xtal
xtal(,type=R)
Figure 9: More two-terminal elements.
amp
amp(,0.3)
delay
delay(,0.2)
integrator
integrator(,0.3)
Figure 10: Ampliï¬er, delay, and integrator.
Figure 11 shows sources, many of which contain internal symbols, and of which the
AC
and
S
options illustrate the need to draw a single cycle of a sinusoid or approximate sinusoid. As a
convenience, the macro
ACsymbol(at
position, length, height,
[A]U|D|L|R|
degrees
)
is included as
an interface to the sinusoid macro. For example to add the sumbol “ †to an ebox:
ebox; { ACsymbol(at last [],,,dimen_/8) }
For direct current ( ), there is also
DCsymbol(at
position, length, height,
U|D|L|R|
degrees
)
,
and for power-system diagrams, macros
Deltasymbol(at
position, keys,
U|D|L|R|
degrees
)
, and
Ysymbol(at position, keys, U|D|L|R|degrees),
11
+
source
source(,I)
source(,i)
− +
source(,V)
source(,v)
source(,S)
source(,AC)
source(,X)
source(,F)
source(,G)
source(,Q)
proximity
= consource(,P)
source(,,0.4)
source(,P)
source(,U)
source(,H)
source(,R)
source(,SC)
source(,SCr)
source(,T)
source(,L)
source(,B)
nullator
norator
source(,N)
mA
source(,"mA")
consource
consource(,I)
consource(,i)
source(,SE)
− +
consource(,V)
consource(,v)
battery
battery(,3,R)
G
ttmotor(,G)
Figure 11: Sources and source-like elements.
Diodes and fuses are shown in Figures 12 and 13.
diode
diode(,S)
diode(,V)
diode(,v)
diode(,w)
diode(,B)
diode(,G)
diode(,K)
diode(,ZK)
diode(,CR)
diode(,L)
diode(,F)
diode(,Sh)
diode(,D)
diode(,Z,RE)
diode(,T)
diode(,P)
diode(,LE)
diode(,LER)
Figure 12:
The macro
diode(
linespec
,B|CR|D|L|LE[R]|P[R]|S|T|V|v|w|Z|
chars
,[R][E])
. Appending
K to the second argument draws an open arrowhead.
fuse
fuse(,D) fuse(,B) fuse(,C) fuse(,S) fuse(,SB)
cbreaker
cbreaker(,R) . . .(,,D) . . .(,,T) . . .(,,TS)
fuse(,HB)
(,HC,0.5,0.3)
Figure 13:
Variations of the macros
fuse(
linespec
, A|dA|B|C|D|E|S|HB|HC|SB,
wid
,
ht
)
and
cbreaker(linespec,L|R,D|T|TS).
Most of the two-terminal elements are oriented; that is, they have a deï¬ned direction or polarity.
Several element macros include an argument that reverses polarity, but there is also a more general
mechanism, as follows.
The ï¬rst argument of the macro
reversed(‘macro name’,macro arguments)
12
+
is the name of a two-terminal element in quotes, followed by the element arguments. The element is
drawn with reversed direction; thus,
diode(right_ 0.4); reversed(‘diode’,right_ 0.4)
draws two diodes to the right, but the second one points left.
Similarly, the macro
resized(factor,‘macro name’,macro arguments)
can be used to resize the body of an element by temporarily multiplying the
dimen_
macro by factor.
More general resizing should be done by redeï¬ning
dimen_
as described in Section 11.1. These two
macros can be nested; the following scales the above example by 1.8, for example
resized(1.8,‘diode’,right_ 0.4); resized(1.8,‘reversed’,‘diode’,right_ 0.4)
Figure 14 contains radiation-effect arrows for embellishing two-terminal and other macros. The
Head
Tail
A1
A2
em_arrows(N)
em_arrows(ND,45) . . .(I) . . .(ID) . . .(E) . . .(ED)
Figure 14: Radiation arrows: em_arrows(type, angle, length)
arrow stems are named A1, A2, and each pair is drawn in a
[]
block, with the names Head and
Tail deï¬ned to aid placement near another device. The second argument speciï¬es absolute angle in
degrees (default 135 degrees). The arrows are drawn relative to the diode direction by the
LE
option
in Figure 12. For absolute arrow directions, one can deï¬ne a wrapper (see Section 12) for the
diode
macro to draw arrows at 45 degrees, for example:
define(‘myLED’,‘diode(‘$1’); em_arrows(N,45) with .Tail at last [].ne’)
Switches with numerous controls are in Figure 15.
lswitch
(,,O) (,,C) (,,DA) (,,dDO) (,,uDC)
(,,K) (,,KD) (,,KOD) (,,KCD)
bswitch
(,,C)
dswitch(,,)
W
B
(,,WdBK)
dB
K
(,,WBmdDK) (,,WBKTr)
(,,WdBL)
(,,WBCo)
(,,WBKCo) (,,WBCb) (,,WBDI) (,,WBSd) (,,WBFDI) (,,WBFSd)
(,,WBTh) (,,WBKC) (,,WBM) (,,WBCO) (,,WBMP) (,,WBoKCP)
(,,WBCY) (,,WBCZ) (,,WBCE) (,,WBRH) (,,WBRdH) (,,WBRHH)
(,,WBMMR) (,,WBMM) (,,WBMR) (,,WBEL) (,,WBLE) (,,WBoKEL)
(,,WBPr) (,,WBPrT)
(,,WBPrM)
Figure 15:
The
switch(
linespec
,L|R,
chars
,L|B|D)
macro is a wrapper for the macros
lswitch(
linespec
,[L|R],[O|C][D][K][A])
,
bswitch(
linespec
,[L|R],[O|C])
, and the many-
optioned
dswitch(
linespec
,R,W[ud]B[K]
chars
)
shown. The switch is drawn in the current drawing
direction. A second-argument
R
produces a mirror image with respect to the drawing direction. The
separately deï¬ned macros Proxim and Magn embellish switches in the second-last row.
13
+
Figure 16 shows a collection of surge-protection devices, or arresters, of which the
E
and
S
types
may be either 2-terminal or as 3-terminal (composite) elements described in Section 6.
arrester
arrester(,G)
...(,g)
...(,M) ...(,C) ...(,A)
...(,H) ...(,HR) ...(,P) ...(,s) ...(,F) ...(,S)
...(,E)
...(,DE)
A B
G
...(,DS)
A B
G
...(,DEL)
A B
G
...(,DSL)
A B
G
Figure 16:
Variations of the
arrester(
linespec, chars, wid
[:
arrowhead ht
],
ht
[:
arrowhead wid
])
macro. Putting
D
in argument 2 for the
S
or
E
conï¬guration creates a 3-terminal composite element
with terminals A, B, and G.
Figure 17 shows some two-terminal elements with arrows or lines overlaid to indicate variability
using the macro
variable(‘element’,type,[+|-]angle,length),
where type is one of
A, P, L, N, NN
with
C
or
S
optionally appended to indicate continuous
or stepwise variation. Alternatively, this macro can be invoked similarly to the label macros in
Section 4.4 by specifying an empty ï¬rst argument; thus, the following line draws the third resistor
in Figure 17:
resistor(up_ dimen_); variable(,uN)
A N uN NN uNN
C S
A
P
L
N
Figure 17:
Illustrating
variable(‘
element
’,[A|P|L|[u]N]|[u]NN]][C|S],[+|-]
angle
,
length
)
. For
example,
variable(‘resistor(up_ dimen_)’,A)
draws the leftmost resistor shown above. The
default angle is 45
â—¦
, regardless of the direction of the element, but the angle preceded by a sign (+
or
−
) is taken to be relative to the drawing direction of the element as for the lower right capacitor
in Figure 7, for example. The array on the right shows the effect of the second argument.
4.3 Branch-current arrows
Arrowheads and labels can be added to conductors using basic pic statements. For example, the
following line adds a labeled arrowhead at a distance
alpha
along a horizontal line that has just
been drawn. Many variations of this are possible:
arrow right arrowht from last line.start+(alpha,0) "$i_1$" above
Macros have been deï¬ned to simplify labelling two-terminal elements, as shown in Figure 18.
The macro
b_current(label, above_|below_, In|O[ut], Start|E[nd], frac)
draws an arrow from the start of the last-drawn two-terminal element frac of the way toward the
body.
If the fourth argument is
End
, the arrow is drawn from the end toward the body. If the third
element is
Out
, the arrow is drawn outward from the body. The ï¬rst argument is the desired label,
of which the default position is the macro
above_,
which evaluates to
above
if the current direction
14
+
i
b_current(i)
i
. . .(i,below_)
i
. . .(i,,O)
i
. . .(i,below_,O)
i
b_current(i,,,E)
i
. . .(i,below_,,E)
i
. . .(i,,O,E,0.2)
i
. . .(i,below_,O,E)
i
larrow(i)
i
rarrow(i)
i
larrow(i,<-)
i
rarrow(i,<-)
Figure 18: Illustrating b_current, larrow, and rarrow. The drawing direction is to the right.
is right or to
ljust, below, rjust
if the current direction is respectively down, left, up. The label
is assumed to be in math mode unless it begins with
sprintf
or a double quote, in which case it
is copied literally. A non-blank second argument speciï¬es the relative position of the label with
respect to the arrow, for example
below_,
which places the label below with respect to the current
direction. Absolute positions, for example below or ljust, also can be speciï¬ed.
For those who prefer a separate arrow to indicate the reference direction for current, the macros
larrow(
label
, ->|<-,
dist
)
and
rarrow(
label
, ->|<-,
dist
)
are provided. The label is placed
outside the arrow as shown in Figure 18. The ï¬rst argument is assumed to be in math mode unless
it begins with
sprintf
or a double quote, in which case the argument is copied literally. The third
argument speciï¬es the separation from the element.
4.4 Labels
Arbitrary labels can be positioned by any pic placement method including the representative basic
examples shown:
"text" at position
"text" at position above
"text" wid width ht height with .sw at position
In addition, special macros for labeling two-terminal elements are available:
llabel( arg1,arg2,arg3 )
clabel( arg1,arg2,arg3 )
rlabel( arg1,arg2,arg3 )
dlabel( long,lat,arg1,arg2,arg3,[X][A|B][L|R])
The ï¬rst macro places the three arguments, which are treated as math-mode strings, on the
left side of the element block with respect to the current direction:
up, down, left, right.
The
second places the arguments along the centre, and the third along the right side. A simple circuit
example with labels is shown in Figure 19. The macro
dlabel
performs these functions for an
.PS
# ‘Loop.m4’
cct_init
define(‘dimen_’,0.75)
loopwid = 1; loopht = 0.75
source(up_ loopht); llabel(-,v_s,+)
resistor(right_ loopwid); llabel(,R,); b_current(i)
inductor(down_ loopht,W); rlabel(,L,)
capacitor(left_ loopwid,C); llabel(+,v_C,-); rlabel(,C,)
.PE
−
v
s
+
R
i
L
+
v
C
−
C
Figure 19: A loop containing labeled elements, with its source code.
obliquely drawn element, placing the three macro arguments at
vec_(-long,lat), vec_(0,lat),
and
vec_(long,lat)
respectively relative to the centre of the element. In the fourth argument, an
X
aligns the labels with respect to the line joining the two terminals rather than the element body,
15
+
and
A, B, L, R
use absolute
above, below, left,
or
right
alignment respectively for the labels.
Labels beginning with
sprintf
or a double quote are copied literally rather than assumed to be in
math mode.
5 Placing two-terminal elements
The length and position of a two-terminal element are deï¬ned by a straight-line segment, so four
numbers or equivalent are required to place the element as in the following example:
resistor(from (1,1) to (2,1)).
However, pic has a very useful concept of the current point (explicitly named Here); thus,
resistor(to (2,1))
is equivalent to
resistor(from Here to (2,1)).
Any deï¬ned position can be used; for example, if C1 and L2 are names of previously deï¬ned
two-terminal elements, then, for example, the following places the resistor:
resistor(from L2.end to C1.start)
A line segment starting at the current position can also be deï¬ned using a direction and length.
To draw a resistor up d units from the current position, for example:
resistor(up_ d)
Pic stores the current drawing direction, which is unfortunately limited to
up, down, left,
right,
for reference when necessary. The circuit macros need to know the current direction, so
whenever
up, down, left, right
are used they should be written respectively as the macros
up_,
down_, left_, right_ as in the above example.
To allow drawing circuit objects in other than the standard four directions, a transformation
matrix is applied at the macro level to generate the required (but sometimes very elaborate) pic
code. Potentially, the matrix elements can be used for other transformations. The macro
setdir_(direction, default direction)
is preferred when setting drawing direction. The direction arguments are of the form
R[ight] | L[eft] | U[p] | D[own] | degrees,
but the macros
Point_(
degrees
), point_(
radians
),
and
rpoint_(
relative linespec
)
are employed
in many macros to re-deï¬ne the entries of the matrix (named
m4a_
,
m4b_
,
m4c_
, and
m4d_
) for
the required rotation. The macro
eleminit_
in the two-terminal elements invokes
rpoint_
with a
speciï¬ed or default linespec to establish element length and direction.
As shown in Figure 20, “
Point_(-30); resistor
†draws a resistor along a line with slope of -30
degrees, and “
rpoint_(to Z)
†sets the current direction cosines to point from the current location
to location Z. Macro
vec_(x,y)
evaluates to the position
(x,y)
rotated as deï¬ned by the argument
of the previous
setdir_, Point_, point_
or
rpoint_
command. The principal device used to
deï¬ne relative locations in the circuit macros is
rvec_(x,y)
, which evaluates to position
Here +
vec_(x,y). Thus, line to rvec_(x,0) draws a line of length x in the current direction.
Figure 20 illustrates that some hand placement of labels using
dlabel
may be useful when
elements are drawn obliquely. The ï¬gure also illustrates that any commas within m4 arguments
must be treated specially because the arguments are separated by commas. Argument commas are
protected either by parentheses as in
inductor(from Cr to Cr+vec_(elen_,0))
, or by multiple
single quotes as in
‘‘,’’,
as necessary. Commas also may be avoided by writing
0.5 between L
and T instead of 0.5<L,T>.
16
+
.PS
# ‘Oblique.m4’
cct_init
Ct:dot; Point_(-60); capacitor(,C); dlabel(0.12,0.12,,,C_3)
Cr:dot; left_; capacitor(,C); dlabel(0.12,0.12,C_2,,)
Cl:dot; down_; capacitor(from Ct to Cl,C); dlabel(0.12,-0.12,,,C_1)
T:dot(at Ct+(0,elen_))
inductor(from T to Ct); dlabel(0.12,-0.1,,,L_1)
Point_(-30); inductor(from Cr to Cr+vec_(elen_,0))
dlabel(0,-0.1,,L_3,)
R:dot
L:dot( at Cl-(R.x-Cr.x,Cr.y-R.y) )
inductor(from L to Cl); dlabel(0,-0.12,,L_2,)
right_; resistor(from L to R); rlabel(,R_2,)
resistor(from T to R); dlabel(0,0.15,,R_3,) ; b_current(\;y,ljust)
line from L to 0.2<L,T>
source(to 0.5 between L and T); dlabel(sourcerad_+0.07,0.1,-,,+)
dlabel(0,sourcerad_+0.07,,u,)
resistor(to 0.8 between L and T); dlabel(0,0.15,,R_1,)
line to T
.PE
C
3
C
2
C
1
L
1
L
3
L
2
R
2
R
3
y
−
+
u
R
1
Figure 20: Illustrating elements drawn at oblique angles.
5.1 Series and parallel circuits
To draw elements in series, each element can be placed by specifying its line segment as described
previously, but the pic language makes some geometries particularly simple. Thus,
setdir_(Right)
resistor; llabel(,R); capacitor; llabel(,C); inductor; llabel(,L)
draws three elements in series as shown in the top line of Figure 21. However, the default length
R
C
L
R
C
L
R
C
L
Figure 21: Three ways of drawing basic elements in series.
elen_
appears too long for some diagrams. It can be redeï¬ned temporarily (to
dimen_
, say), by
enclosing the above line in the pair
pushdef(‘elen_’,dimen_) resistor. . . popdef(‘elen_’)
with the result shown in the middle row of the ï¬gure.
Alternatively, the length of each element can be tuned individually; for example, the capacitor in
the above example can be shortened as shown, producing the bottom line of Figure 21:
resistor; llabel(,R)
capacitor(right_ dimen_/4); llabel(,C)
inductor; llabel(,L)
If a macro that takes care of common cases automatically is to be preferred, you can use the
macro
series_(
elementspec, elementspec,
. . .)
. This macro draws elements of length
dimen_
from
the current position in the current drawing direction, enclosed in a
[ ]
block. The internal names
Start
,
End
, and
C
(for centre) are deï¬ned, along with any element labels. An elementspec is of
the form
[
Label
:]
element
; [
attributes
]
, where an attribute is zero or more of
llabel(. . .),
rlabel(. . .), or b_current(. . .).
17
+
Drawing elements in parallel requires a little more effort but, for example, three elements can be
drawn in parallel using the code snippet shown, producing the left circuit in Figure 22:
define(‘elen_’,dimen_)
L: inductor(right_ 2*elen_,W); llabel(+,L,-)
R1: resistor(right elen_ from L.start+(0,-dimen_)); llabel(,R1)
R2: resistor; llabel(,R2)
C: capacitor(right 2*elen_ from R1.start+(0,-dimen_)); llabel(,C)
line from L.start to C.start
line from L.end to C.end
+
L
−
R1 R2
C
Start
End
parallel_( ‘L:inductor(,W); llabel(+,L,-)’,
series_(‘R1:resistor; llabel(,R1)’, ‘R2:resistor; llabel(,R2)’),
‘C:capacitor; llabel(,C)’ )
R
1
R
2
L
C
+
V
−
Start
End
setdir_(Down)
parallel_(
series_(‘R1:resistor; rlabel(,R_1)’,
parallel_(
series_(‘resistor; rlabel(,R_2)’,
‘inductor(,W); rlabel(,L)’),
‘capacitor(,C); rlabel(,C)’ ),
line down dimen_/2),
‘Sep=linewid*3/2; V:source; rlabel(+,V,-)’)
Figure 22: Illustrating the macros parallel_ and series_, with Start and End points marked.
A macro that produces the same effect automatically is
parallel_(‘elementspec’, ‘elementspec’, . . .)
The arguments must be quoted to delay expansion, unless an argument is a nested
parallel_
or
series_
macro, in which case it is not quoted. The elements are drawn in a
[ ]
block with deï¬ned
points Start, End, and C. An elementspec is of the form
[Sep=val;][Label:] element; [attributes]
where an attribute is of the form
[llabel(. . .);] | [rlabel(. . .)] | [b_current(. . .);]
Putting
Sep=
val
;
in the ï¬rst branch sets the default separation of all branches to val; in a later
element,
Sep=
val; applies only to that branch. An element may have normal arguments but should
not change the drawing direction.
6 Composite circuit elements
Many basic elements are not two-terminal. These elements are usually enclosed in a
[ ]
pic block,
and contain named interior locations and components. The block must be placed by using its
compass corners, thus: element
with
corner
at
position or, when the block contains a predeï¬ned
location, thus: element
with
location
at
position. A few macros are positioned with the ï¬rst
argument; the
ground
macro, for example:
ground(at
position
).
In some cases, an invisible line
can be speciï¬ed by the ï¬rst argument to determine length and direction (but not position) of the
block.
Nearly all elements drawn within blocks can be customized by adding an extra argument, which
is executed as the last item within the block.
18
+
The macro
potentiometer(
linespec
,
cycles
,
fractional pos
,
length
, . . .)
, shown in Figure 23,
ï¬rst draws a resistor along the speciï¬ed line, then adds arrows for taps at fractional positions along
the body, with default or speciï¬ed length. A negative length draws the arrow from the right of the
current drawing direction.
potentiometer(down_ dimen_)
Start
End
T1
...(down_ dimen_,,0.5,-5mm__)
Start
End
T1
...(down_ dimen_,,0.25,-5mm__,0.75,5mm__)
Start
End
T1
T2
Figure 23: Default and multiple-tap potentiometer.
The macro
addtaps([
arrowhd
| type=
arrowhd
;name=
Name
],
fraction, length, fraction, length,
. . .)
, shown in Figure 24, will add taps to the immediately preceding two-terminal element. However,
R1.start R1.end
Tap1
Tap2
right_; t = 0.2in__
R1: resistor(,,E)
addtaps(<-,0.2,-t,0.8,t)
Tx1 Tx3
R2: ebox(,elen_*0.6)
addtaps(type=-;name=Tx,
0.2,-t,0.5,-t,0.8,-t)
R3.Start R3.End
R3.Tap1 R3.Tap3
R3: tapped(‘ebox(,elen_*0.6,)’,->,0.2,-t,0.5,-t,0.8,-t) \
with .Start at R1.start+(0.25in__,-0.6in__)
L1: tapped(‘inductor(right_ 9*dimen_/8,,9)’,
-,0,-t,3/9,-t/2,6/9,-t/2,1,-t)
L1.Tap1 L1.Tap4
Figure 24: Macros for adding taps to two-terminal elements.
the default names
Tap1, Tap2 . . .
may not be unique in the current scope. An alternative name
for the taps can be speciï¬ed or, if preferable, the tapped element can be drawn in a [ ] block using
the macro
tapped(‘
two-terminal element
’, [
arrowhd
| type=
arrowhd
;name=
Name
],
fraction,
length, fraction, length,
. . .)
. Internal names
.Start, .End,
and .C are deï¬ned automatically,
corresponding to the drawn element. These and the tap names can be used to place the block.
These two macros require the two-terminal element to be drawn either up, down, to the left, or to
the right; they are not designed for obliquely drawn elements.
A few composite symbols derived from two-terminal elements are shown in Figure 25.
KelvinR
T1 T2
Start End
KelvinR(,R)
T1 T2
FTcap
Start End
T1
T2
FTcap(B)
Start End
T1
T2
FTcap(C)
Start End
T
FTcap(D)
Start End
T
Figure 25: Composite elements KelvinR(cycles,[R],cycle wid) and FTcap(chars) .
The ground symbol is shown in Figure 26. The ï¬rst argument speciï¬es position; for example,
the two lines shown have identical effect:
move to (1.5,2); ground
ground(at (1.5,2))
The second argument truncates the stem, and the third deï¬nes the symbol type. The fourth
argument speciï¬es the angle at which the symbol is drawn, with D (down) the default. This macro
is one of several in which a temporary drawing direction is set using the
setdir_( U|D|L|R|
degrees,
default R|L|U|D|degrees ) macro and reset at the end using resetdir_.
19
+
ground
ground(,T)
(,,F)
(,,E)
(,dimen_/2,S)
(,,S,90)
(,,Q)
(,,L)
(,,P)
(,T,PA)
Figure 26: The ground( at position, T|stem length, N|F|S|L|P[A]|E, U|D|L|R|degrees ) macro.
The arguments of
antenna(at
position
, T|
stem length
, A|L|T|S|D|P|F, U|D|L|R|
degrees
)
shown in Figure 27 are similar to those of ground.
T
antenna
T
(,T)
T1 T2
(,,L)
T1 T2
(,T,L)
T
(,,T)
T1 T2
(,,S)
T1 T2
(,,D)
T
(,dimen_*3/4,P)
T
(,,F)
Figure 27: Antenna symbols, with macro arguments shown above and terminal names below.
Figure 28 illustrates the macro
opamp(
linespec, - label, + label, size, chars
)
. The element
is enclosed in a block containing the predeï¬ned internal locations shown. These locations can
−
+
opamp
Out
In1
In2
N
E1
E
E2
S
W
−
+
Point_(15); opamp(,,,,PR)
V1
V2
− +
Point_(90); opamp
−
+
opamp(,,,,T)
Figure 28:
Operational ampliï¬ers. The
P
option adds power connections. The second and third arguments
can be used to place and rotate arbitrary text at In1 and In2.
be referenced in later commands, for example as “
last [].Out
.†The ï¬rst argument deï¬nes the
direction and length of the opamp, but the position is determined either by the enclosing block of
the opamp, or by a construction such as “
opamp with .In1 at Here
â€, which places the internal
position In1 at the speciï¬ed location. There are optional second and third arguments for which the
defaults are
\scriptsize$-$
and
\scriptsize$+$
respectively, and the fourth argument changes
the size of the opamp. The ï¬fth argument is a string of characters.
P
adds a power connection,
R
exchanges the second and third entries, and T truncates the opamp point.
Typeset text associated with circuit elements is not rotated by default, as illustrated by the
second and third opamps in Figure 28. The
opamp
labels can be rotated if necessary by using
postprocessor commands (for example PSTricks \rput) as second and third arguments.
The code in Figure 29 places an opamp with three connections.
line right 0.2 then up 0.1
A: opamp(up_,,,0.4,R) with .In1 at Here
line right 0.2 from A.Out
line down 0.1 from A.In2 then right 0.2
−+
Figure 29: A code fragment invoking the opamp(linespec,-,+,size,[R][P]) macro.
Figure 30 shows variants of the transformer macro, which has predeï¬ned internal locations P1,
P2, S1, S2, TP, and TS. The ï¬rst argument speciï¬es the direction and distance from P1 to P2,
with position determined by the enclosing block as for opamps. The second argument places the
secondary side of the transformer to the left or right of the drawing direction. The optional third
and ï¬fth arguments specify the number of primary and secondary arcs respectively. If the fourth
20
+
P1
P2
TP
S1
S2
TS
transformer
P1
P2
TP
S1
S2
TS
...(down_ 0.6„2,P,8)
P1
P2
TP
S1
S2
TS
...(„8,WD12,4)
P1
P2
TP
S1
S2
TS
...(„9,AL)
P1
P2
TP
S1
S2
TS
...(,R,8,AW)
Figure 30:
The
transformer(
linespec
,L|R,
np
,[A|P][W|L][D1|D2|D12|D21],
ns
)
macro (drawing direc-
tion down), showing predeï¬ned terminal and centre-tap points.
argument string contains an
A
, the iron core is omitted; if a
P
, the core is dashed (powder); and if it
contains a
W
, wide windings are drawn. A
D1
puts phase dots at the P1, S1 end,
D2
at the P2, S2
ends, and D12 or D21 puts dots at opposite ends.
Figure 31 shows some audio devices, deï¬ned in
[]
blocks, with predeï¬ned internal locations as
shown. The ï¬rst argument speciï¬es the device orientation. Thus,
S: speaker(U) with .In2 at Here
places an upward-facing speaker with input In2 at the current location.
speaker
In1
In2
In3
In4 In5
In6 In7
Box
speaker(,,H)
bell
In1
In2
In3
Box Circle
buzzer
In1
In2
In3
Box
buzzer(,,C)
In1
In2
In3
Face
microphone
In1
In2
In3
Circle
microphone(A)
Head
Head.b
Stand.s
earphone
In1
In2
In3
Box
earphone(,,C)
L R
N
C
Figure 31:
Audio components:
speaker(U|D|L|R|
degrees
,
size
,
type
), bell, microphone, buzzer,
earphone, with their internally named positions and components.
The
nport(
box specs
[;
other commands
]
, nw, nn, ne, ns, space ratio, pin lgth, style
)
macro
is shown in Figure 32. The macro begins with the line
define(‘nport’,‘[Box: box ‘$1’
, so the
W1a
W1b
E1a
E1b
n-port
W1a
W1b
E1a
E3b
N1a N1b N2a N2b
S1a S4b
· · ·
.
.
.
W1 E1
S1
nport
nport(wid 2.0 ht 1 fill_(0.9) "n-port",1,2,3,4)
nterm
Figure 32:
The
nport
macro draws a sequence of pairs of named pins on each side of a box. The pin
names are shown. The default is a twoport. The
nterm
macro draws single pins instead of pin pairs.
ï¬rst argument is a box speciï¬cation such as size, ï¬ll, or text. The second to ï¬fth arguments specify
the number of ports (pin pairs) to be drawn respectively on the west, north, east, and south sides
of the box. The end of each pin is named according to the side, port number, and
a
or
b
pin, as
shown. The sixth argument speciï¬es the ratio of port width to inter-port space, the seventh is the
21
+
pin length, and setting the eighth argument to
N
omits the pin dots. The macro ends with
‘$9’]’)
,
so that a ninth argument can be used to add further customizations within the enclosing block.
The
nterm(
box specs, nw, nn, ne, ns, pin lgth, style
)
macro illustrated in Figure 32 is similar to
the
nport
macro but has one fewer argument, draws single pins instead of pin pairs, and defaults to
a 3-terminal box.
Many custom labels or added elements may be required, particularly for 2-ports. These elements
can be added using the ï¬rst argument and the ninth of the
nport
macro. For example, the following
code adds a pair of labels to the box immediately after drawing it but within the enclosing block:
nport(; ‘"0"’ at Box.w ljust; ‘"∞"’ at Box.e rjust)
If this trick were to be used extensively, then the following custom wrapper would save typing,
add the labels, and pass all arguments to nport:
define(‘nullor’,‘nport(‘$1’
{‘"${}0$"’ at Box.w ljust
‘"$\infty$"’ at Box.e rjust},shift($@))’)
The above example and the related gyrator macro are illustrated in Figure 33.
0
∞
nullor
gyrator
gyrator(invis,,0,N)
gyrator(invis wid boxht,,0,NV)
Figure 33: The nullor example and the gyrator macro are customizations of the nport macro.
Figure 34 shows the macro
contact(
chars
)
, which contains predeï¬ned locations P, C, O for the
armature and normally closed and normally open terminals. An
I
in the ï¬rst argument draws open
circles for contacts.
contact
P
O
C
(R)
P
O
C
(O) (C)
(P)
P
O
C
(PR)
P
O
C
(PO)
O
C
(PC)
(I)
P
O
C
(RI)
P
O
C
(OI) (CI) (PI)
O
C
(PIO) (PIC)
(T)
C
O
(RT)
O
C
(OT) (CT) (PT) (PTO) (PTC)
(U)
C
O
(RU)
O
C
(OU)
O
(CU)
C
(PU) (PUO) (PUC)
Figure 34:
The
contact(
chars
)
macro (default drawing direction right) can be used alone, in a set of
ganged contacts, or in relays.
The contacts(poles, chars) macro in Figure 35 draws multiple contacts.
For drawing relays, the macro
relaycoil(
chars, wid, ht,
U|D|L|R|
degrees
)
shown in Figure 36
provides a choice of connection points and actuator types.
22
+
contacts(2)
P1
O1
C1
P2
O2
C2
(2,I)
P1
O1
C1
P2
O2
C2
(2,IO)
P1
O1
P2
O2
(2,PICD)
P1
O1
C1
P2
O2
C2
(2,PTCD)
P1
O1
C1
P2
O2
C2
(2,PUCD)
P1
O1
C1
P2
O2
C2
Figure 35: The contacts(poles, chars) macro (drawing direction right).
relaycoil
V1 V2
(NX)
A1
A2
A3
B1
B2
B3
(AXSR)
V1
V2
(BXSR)
V1
V2
(SR) (SO) (SOR) (PC)
(HS) (NAC) (AC) (ML) (PO) (RM) (RH) (TH) (EL) (MR)
Figure 36: The relaycoil macro.
The
relay(
poles, chars
)
macro in Figure 37 deï¬nes coil terminals V1, V2 and contact terminals
P
i
, C
i
, O
i
.
V1 V2
P1
O1
C1
relay
P1
C1
P2
C2
(2,CTh)
P1
O1
P1
O2
(2,O)
V1
V2
P1
O1
C1
P2
O2
C2
(2,PIAX)
V1 V2
P1
O1
C1
P2
O2
C2
relay(2,R)
Figure 37: The relay(poles, chars) macro (drawing direction right).
The
jack
and
plug
macros and their deï¬ned points are illustrated in Figure 38. The ï¬rst
argument of both macros establishes the drawing direction. The second argument is a string of
A
B
TB
TA
A
B A
B
C
A
B
C
plug
plug(,R) plug(,3) plug(L,3R)
L
F
G
L
LM
LB
S
L
S
L1
LM1
L2
LM2
S
L
LB
L
S
S1
SM1
LB
SB
jack
jack(,LMBS) ..(L,RLS) ..(L,RLBLMLMS) ..(,RSBSMLB)
Figure 38:
The
jack(U|D|L|R|
degrees
,
chars
)
and
plug(U|D|L|R|
degrees
,[2|3][R])
components and
their deï¬ned points.
characters deï¬ning drawn components. An
R
in the string speciï¬es a right orientation with respect
to the drawing direction. The two principal terminals of the jack are included by putting
L S
or both
into the string with associated make (
M
) or break (
B
) points. Thus,
LMB
within the third argument
23
+
draws the
L
contact with associated make and break points. Repeated
L[M|B]
or
S[M|B]
substrings
add auxiliary contacts with speciï¬ed make or break points.
A macro for drawing headers is in Figure 39, and some experimental connectors are shown in
Figure 40 and Figure 41. The
tstrip
macro allows “key
=
value
;
†arguments for width and height.
P1
Header
P2
Block
P1
Header(2,3,8mm__,10mm__)
P2
P5 P6
P1
left_; Header(2,4,,,fill_(0.9))
P8
P1
P2
down_; Header(2,8)
P15
P16
PinP1
PinP2
Figure 39: Macro Header(1|2, rows, wid, ht, type).
L1
L4
.
.
.
R1
R4
.
.
.
T1
T4
.
.
.
tstrip(U)
T1 T5· · ·
tstrip(R,5,
DO;wid=1.0;ht=0.25)
ccoax
C
S
ccoax(,F)
tconn(,O) (,>) (,>>)
tconn(,<) (,<<)
V
2
tbox(V_2)
V
1
tbox(V_1,,,<)
V
1
tbox(V_1,,,<>)
Figure 40:
Macros
tstrip(R|L|U|D|
degrees
,
chars
)
,
ccoax(at
location,
M|F,
diameter
)
,
tconn(linespec, >|»|<|«|O[F], wid), and tbox(text, wid, ht, <|>|<>,type).
H
pconnex(,A)
HN
G
(,AF) (,AC) (,ACF)
(U,D) (U,DF)
(U,J) (U,JF)
(,G) (,GF) (L,GF)
(,GC) (,GCF)
(,P) (,PF)
Figure 41:
A small set of power connectors drawn by
pconnex(R|L|U|D|
degrees, chars
)
. Each connector
has an internal H, N, and where applicable, a G shape.
The double-throw switches shown in Figure 42 are drawn in the current drawing direction like
the two-terminal elements, but are composite elements that must be placed accordingly.
A basic winding macro for magnetic-circuit sketches and similar ï¬gures is shown in Figure 43.
For simplicity, the complete spline is ï¬rst drawn and then blanked in appropriate places using the
background (core) color (lightgray for example, default white).
24
+
RTL
NPDT
R
T
L
up_; NPDT
R1L1
R2L2
NPDT(2)
R1L1
R2L2
R3L3
NPDT(3,R)
R1 L1
R2 L2
left_; NPDT(2,R)
Figure 42: Multipole double-throw switches drawn by NPDT(npoles, [R]).
winding
winding(R)
pitch
diam core wid
core color
T1 T2
Left pins
cw
T1
T2
Left pins
ccw
T1
T2
Right pins
cw
T1
T2
Right pins
ccw
T1
T2
g
i
1
−
v
1
+
N
1
i
2
−
v
2
+
N
2
φ
Figure 43:
The
winding(L|R, diam, pitch, turns, core wid, core color)
macro draws a coil with
axis along the current drawing direction. Terminals
T1
and
T2
are deï¬ned. Setting the ï¬rst argument
to R draws a right-hand winding.
6.1 Semiconductors
Figure 44 shows the variants of bipolar transistor macro bi_tr(linespec,L|R,P,E) which contains
predeï¬ned internal locations E, B, C. The ï¬rst argument deï¬nes the distance and direction from E
to C, with location determined by the enclosing block as for other elements, and the base placed to
E
B
C
bi_tr(up_ dimen_)
E
B
C
bi_tr(,R)
E
B
C
bi_tr(,,P)
E
B
C
bi_tr(,,,E)
E
G
C
igbt
E
G
C
igbt(,,LD)
Figure 44: Variants of bipolar transistor bi_tr(linespec,L|R,P,E) (current direction upward).
the left or right of the current drawing direction according to the second argument. Setting the third
argument to
P
creates a PNP device instead of NPN, and setting the fourth to
E
draws an envelope
around the device. Figure 45 shows a composite macro with several optional internal elements.
E
B
C
Darlington
E
B
B1
C
(R,DZB1)
E
B
B1
C
(,EB1)
E
B
B1
C
(,EB1DZR1)
E
B
B1
C
(,EB1DE1E2)
Figure 45: Macro Darlington(L|R,[E][P][B1][E1|R1][E2|R2][D][Z]), drawing direction up_.
The code fragment example in Figure 46 places a bipolar transistor, connects a ground to the
emitter, and connects a resistor to the collector.
The
bi_tr
and
igbt
macros are wrappers for the macro
bi_trans(
linespec
, L|R,
chars
, E)
,
which draws the components of the transistor according to the characters in its third argument. For
example, multiple emitters and collectors can be speciï¬ed as shown in Figure 47.
25
+
S: dot; line left_ 0.1; up_
Q1: bi_tr(,R) with .B at Here
ground(at Q1.E)
line up 0.1 from Q1.C; resistor(right_ S.x-Here.x); dot
Figure 46: The bi_tr(linespec,L|R,P,E) macro.
C
B
E
B
C
BU
uE
S
S
bi_trans(,,BCuEBUS)
C
B
E0E2 E1
Em2
bi_trans(,,BCdE2BU)
E
B
C0 C2C1
Cm2
bi_trans(,,BC2dEBU)
Figure 47:
The
bi_trans(
linespec
,L|R,
chars
,E)
macro. The sub-elements are speciï¬ed by the third
argument. The substring En creates multiple emitters E0 to En. Collectors are similar.
A UJT macro with predeï¬ned internal locations B1, B2, and E is shown in Figure 48.
B1
E
B2
ujt(up_ dimen_,,,E)
B1
E
B2
ujt(,,P,)
B1
E
B2
ujt(,R,,)
B1
E
B2
ujt(,R,P,)
Figure 48: UJT devices, with current drawing direction up_.
A thyristor macro with predeï¬ned internal locations G and T1, T2, or A, K is in Figure 49.
Except for the G terminal, a thyristor (the
IEC
variant excluded) is much like a two-terminal
A
K
G
thyristor
T1
T2
G
...(,B)
T1
T2
G
...(,BRK)
T1
T2
G
...(,BE)
A
K
G
...(,A)
A
K
G
...(,F)
T1
T2
G
...(,BRE)
A
K
G
...(,UARE)
A
K
G
...(,AV)
A
K
G
...(,IEC)
A
K
G
...(,UAH)
A
K
Ga
...(,N)
A
K
Ga
...(,UANRE)
A
K
G
...(,SCR)
A
K
G
...(SCRE)
A
K
G
...(SCRRE)
A
K
G
...(SCS)
Ga
A
K
G
...(SCSE)
Ga
A
K
G
...(SUSE)
T1
T2
G
...(SBSE)
scr(,,Q)
Q.G
scs(,,Q2)
Q2.G
Q2.Ga
sus(,RE,Q3)
Q3.G
sbs(,E,Q4)
Q4.G
Figure 49:
The top two rows illustrate use of the
thyristor(
linespec, chars
)
macro, drawing direction
down_
, and the bottom row shows wrapper macros (drawing direction
right_
) that place the
thyristor like a two-terminal element. Append
K
to the second argument to draw open arrowheads.
element. The wrapper macro
scr(
linespec, chars, label
)
and similar macros
scs, sus,
and
sbs
place thyristors using linespec as for a two-terminal element, but require a third argument for the
label for the compound block; thus,
26
+
scr(from A to B,,Q3); line right from Q3.G
draws the element from position A to position B with label Q3, and draws a line from G.
Some FETs with predeï¬ned internal locations S, D, and G are also included, with similar
arguments to those of
bi_tr,
as shown in Figure 50. In all cases the ï¬rst argument is a linespec,
j_fet
G
S D
j_fet(right_
dimen_,,P,E)
G
S D
e_fet
G
S D
e_fet(,,P)
G
S D
e_fet(,,P,S)
G
S D
c_fet
G
S D
c_fet(,,P)
G
S D
d_fet
G
S D
d_fet(,,P)
G
S D
d_fet(,,P,S)
G
S D
g_fet
G
S D
g_fet(up_
dimen_,,P)
G
S
D
G0
G1
mosfet(,,dBSDFQM1,E)
G0G1
...(,,dBSDFQuM1)
mosfet(,,dGSDF,)
dG
F
S D
. . .(,,uHSDF,)
uH
. . .(,,dMEDSQuB,)
dM
E
Q
uB
. . .(,,uMEDSuB)
G
S D
B
Fe_fet
G
S D
Fe_fet(„TEDSQuB)
G
S D
. . .(,,ZSDFdT,)
Z
dT
IRF4905
G
D
S
Figure 50:
JFET, insulated-gate enhancement and depletion MOSFETs, simpliï¬ed versions, graphene,
and ferroelectric fets. These macros are wrappers that invoke the
mosfet
macro as shown in the
middle and bottom rows. The bottom-row examples show custom devices, the ï¬rst deï¬ned by
omitting the substrate connection, and the second deï¬ned using a wrapper macro.
and entering
R
as the second argument orients the G terminal to the right of the current drawing
direction. The macros in the top three rows of the ï¬gure are wrappers for the general macro
mosfet(
linespec
,R,
characters
,E)
. The third argument of this macro is a subset of the characters
{BDEFGLMQRSTXZ}
, each letter corresponding to a diagram component as shown in the bottom row
of the ï¬gure. Preceding the characters
B
,
G
, and
S
by
u
or
d
adds an up or down arrowhead to the
pin, preceding
T
by
d
negates the pin, and preceding
M
by
u
or
d
puts the pin at the drain or source
end respectively of the gate. The obsolete letter
L
is equivalent to
dM
and has been kept temporarily
for compatibility. This system allows considerable freedom in choosing or customizing components,
as illustrated in Figure 50.
The number of possible semiconductor symbols is very large, so these macros must be regarded
as prototypes. Often an element is a minor modiï¬cation of existing elements. For example, the
thyristor(
linespec
,
chars
)
macro illustrated in Figure 49 is derived from the diode and bipolar
transistor macros. Another example is the
tgate
macro shown in Figure 51, which also shows a
pass transistor.
A B
G
Gb
tgate
A B
G
Gb
tgate(,L)
A B
G
tgate(,B)
A B
G
Gb
ptrans
A B
G
Gb
ptrans(,L)
Figure 51:
The
tgate(
linespec,
[B][R|L])
element, derived from a customized diode and
ebox
, and the
ptrans(
linespec
, [R|L])
macro. These are not two-terminal elements, so the linespec argument
deï¬nes the direction and length of the line from A to B but not the element position.
27
+
Some other non-two-terminal macros are
dot
, which has an optional argument “
at
locationâ€,
the line-thickness macros, the
fill_
macro, and
crossover
, which is a useful if archaic method to
show non-touching conductor crossovers, as in Figure 52.
Q
1
Q
2
R
L
V
cc
R
L
R
1
R
1
R
2
−V
cc
R
2
Figure 52: Bipolar transistor circuit, illustrating crossover and colored elements.
This ï¬gure also illustrates how elements and labels can be colored using the macro
rgbdraw(r, g, b, drawing commands)
where the r, g, b values are in the range 0 to 1 (integers from 0 to 255 for SVG) to specify the rgb
color. This macro is a wrapper for the following, which may be more convenient if many elements
are to be given the same color:
setrgb(r, g, b)
drawing commands
resetrgb
A macro is also provided for colored ï¬lls:
rgbfill(r, g, b, drawing commands)
These macros depend heavily on the postprocessor and are intended only for PSTricks, Tikz PGF,
MetaPost, SVG, and the Postscript or PDF output of dpic. Basic Pic objects are probably best
colored and ï¬lled as discussed in Section 3.4.
7 Corners
If two straight lines meet at an angle then, depending on the postprocessor, the corner may not be
mitred or rounded unless the two lines belong to a multisegment line, as illustrated in Figure 53. This
line up 0.2
line right 0.2
line up 0.2 \
then right 0.2
line up 0.2
line right 0.2 \
chop -hlth chop 0
line up 0.2
round
line right 0.2
line up 0.15 left 0.15
corner
line up 0.1 right 0.1
A
corner(,at A)
L M
Mitre_(L,M,5 bp__)
A
B
C
mitre_(A,B,C)
Figure 53: Producing mitred angles and corners.
is normally not an issue for circuit diagrams unless the ï¬gure is magniï¬ed or thick lines are drawn.
Rounded corners can be obtained by setting post-processor parameters, but the ï¬gure shows the effect
of macros
round
and
corner
. The macros
mitre_(
Position1,Position2,Position3,length,attributes
)
and
Mitre_(
Line1,Line2,length,attributes
)
may assist as shown. Otherwise, a right-angle line can
be extended by half the line thickness (macro
hlth
) as shown on the upper row of the ï¬gure, or a
two-segment line can be overlaid at the corner to produce the same effect.
28
+
8 Looping
Sequential actions can be performed using either the dpic command
for variable=expression to expression [by expression] do { actions }
or at the m4 processing stage. The libgen library deï¬nes the macro
for_(start, end, increment, ‘actions’)
for this and other purposes. Nested loops are allowed and the innermost loop index variable is
m4x.
The ï¬rst three arguments must be integers and the end value must be reached exactly; for example,
for_(1,3,2,‘print In‘’m4x’)
prints locations In1 and In3, but
for_(1,4,2,‘print In‘’m4x’)
does not terminate since the index takes on values 1, 3, 5, . . ..
Repetitive actions can also be performed with the libgen macro
Loopover_(‘variable’, actions, value1, value2, . . .)
which evaluates actions for each instance of variable set to value1, value2, . . ..
9 Logic gates
Figure 54 shows the basic logic gates included in library
liblog.m4
. The ï¬rst argument of the gate
macros can be an integer
N
from 0 to 16
,
specifying the number of input locations
In1, . . . InN,
as illustrated for the NOR gate in the ï¬gure. By default,
N
= 2 except for macros
NOT_gate
and
BUFFER_gate
, which have one input
In1
unless they are given a ï¬rst argument, which is treated as
the line speciï¬cation of a two-terminal element.
AND_gate
OR_gate
BUFFER_gate
XOR_gate
NAND_gate
NOR_gate(3)
Out
N_Out
In1
In2
In3
NOT_gate
NXOR_gate(NPN)
In1
In2
In3
&
NAND_gate(,B)
≥ 1
NOR_gate(3,NB)
= 1
BOX_gate(PN,N,,,=1)
=
BOX_gate(PP,N,,,=)
Figure 54:
Basic logic gates. The input and output locations of a three-input NOR gate are shown.
Inputs are negated by including an
N
in the second argument letter sequence. A
B
in the second
argument produces a box shape as shown in the rightmost column, where the second example has
AND functionality and the bottom two are examples of exclusive OR functions.
Input locations retain their positions relative to the gate body regardless of gate orientation, as
in Figure 55. Beyond a default number (6) of inputs, the gates are given wings as in Figure 56.
.PS
# ‘FF.m4’
log_init
S: NOR_gate
left_
R: NOR_gate at S+(0,-L_unit*(AND_ht+1))
line from S.Out right L_unit*3 then down S.Out.y-R.In2.y then to R.In2
line from R.Out left L_unit*3 then up S.In2.y-R.Out.y then to S.In2
line left 4*L_unit from S.In1 ; "$S$sp_" rjust
line right 4*L_unit from R.In1 ; "sp_$R$" ljust
.PE
S
R
Figure 55: SR flip-flop.
Negated inputs or outputs are marked by circles drawn using the
NOT_circle
macro. The name
marks the point at the outer edge of the circle and the circle itself has the same name preï¬xed
by
N_
. For example, the output circle of a nand gate is named
N_Out
and the outermost point of
the circle is named
Out.
Instead of a number, the ï¬rst argument can be a sequence of letters
P
or
N
29
+
¯
Y
Y
¯
E
S
0
S
1
S
2
I
0
I
1
I
2
I
3
I
4
I
5
I
6
I
7
Figure 56: Eight-input multiplexer, showing a gate with wings.
to deï¬ne normal or negated inputs; thus for example,
NXOR_gate(NPN)
deï¬nes a 3-input nxor gate
with not-circle inputs
In1
and
In3
and normal input
In2
as shown in the ï¬gure. The macro
IOdefs
can also be used to create a sequence of custom named inputs or outputs.
Gates are typically not two-terminal elements and are normally drawn horizontally or vertically
(although arbitrary directions may be set with e.g.
Point_(
degrees
)
). Each gate is contained in a
block of typical height
6*L_unit
where
L_unit
is a macro intended to establish line separation for
an imaginary grid on which the elements are superimposed.
Including an
N
in the second argument character sequence of any gate negates the inputs, and
including
B
in the second argument invokes the general macro
BOX_gate([P|N]...,[P|N],
horiz
size
,
vert size
,
label
)
, which draws box gates. Thus,
BOX_gate(PNP,N„8,\geq 1)
creates a gate of
default width, eight
L_unit
s height, negated output, three inputs with the second negated, and
internal label “
≥
1â€. If the ï¬fth argument begins with
sprintf
or a double quote then the argument
is copied literally; otherwise it is treated as scriptsize mathematics.
A good strategy for drawing complex logic circuits might be summarized as follows:
•
Establish the absolute locations of gates and other major components (e.g. chips) relative to a
grid of mesh size commensurate with L_unit, which is an absolute length.
•
Draw minor components or blocks relative to the major ones, using parameterized relative
distances.
• Draw connecting lines relative to the components and previously drawn lines.
• Write macros for repeated objects.
•
Tune the diagram by making absolute locations relative, and by tuning the parameters. Some
useful macros for this are the following, which are in units of L_unit:
AND_ht, AND_wd: the height and width of basic AND and OR gates
BUF_ht, BUF_wd: the height and width of basic buffers
N_diam: the diameter of NOT circles
The macro
BUFFER_gate(
linespec
,[N|B],
wid
,
ht
,[N|P]*,[N|P]*)
is a wrapper for the compos-
ite element
BUFFER_gen
. If the second argument is
B
, then a box gate is drawn; otherwise the gate
is triangular. Arguments 5 and 6 determine the number of deï¬ned points along the northeast and
southeast edges respectively, with an
N
adding a NOT circle. If the ï¬rst argument is non-blank
however, then the buffer is drawn along an invisible line like a two-terminal element, which is
convenient sometimes but requires internal locations of the block to be referenced using
last []
, as
shown in Figure 57.
30
+
In1
bd = dimen_*3/4
BUFFER_gate(,,bd,bd)
NE
Out
SE
C
In1
N_NE1
N_NE2
Out
BUFFER_gate(,N,bd,bd,NN)
BUFFER_gen(ITNOC,bd,bd,PN,,N,
LH_symbol at C)
In1
In2
Out
N_SE1
C
BUFFER_gate(right_ elen_,,bd,bd)
BUFFER_gate(right_ elen_,N,bd,bd,,N,LH_symbol(I) at C)
line down dimen_/3 from last [].N_SE1.s then left dimen_*2/3
Figure 57:
The
BUFFER_gate
and
BUFFER_gen
macros. The bottom two examples show how the gate can
be drawn as a two-terminal macro but internal block locations must be referenced using last [].
Figure 58 shows the macro
FlipFlop(D|T|RS|JK,
label, boxspec, pinlength
)
, which is a wrapper
for the more general macro
FlipFlopX(
boxspec, label, leftpins, toppins, rightpins, bottompins,
pinlength
)
. The ï¬rst argument modiï¬es the box (labelled Chip) default speciï¬cation. Each of
Q1
D
CK
Q
Q
FlipFlop(D,Q1)
Q2
T
CK
Q
Q
FlipFlop(T,Q2,
ht h1 wid w1 fill_(0.9))
R
S
Q
Q
FlipFlop(RS,,,
Chip.wid/8)
J
CK
K
CLR
Q
Q
PR
FlipFlop(JK)
D
CK
Q
Q
FlipFlopX(,,
:D;E:CK,,:Q;:lg_bartxt(Q))
T
CK
Q
FlipFlopX(,,
:T;E:CK,,:Q;)
J
CK
K
CLR
Q
FlipFlopX(,,
:J;E:CK;:K,N:CLR,:Q;)
Figure 58: The FlipFlop and FlipFlopX macros, with variations.
arguments 3 to 6 is null or a string of pinspecs separated by semicolons (
;
). A pinspec is either
empty (null) or of the form
[
pinopts
]:[
label
[:
Picname
]]
. The ï¬rst colon draws the pin. Pins are
placed top to bottom or left to right along the box edges with null pinspecs counted for placement.
Pins are named by side and number by default; eg
W1, W2, ..., N1, N2, ..., E1, ..., S1,
...
; however, if
:
Picname is present in a pinspec then Picname replaces the default name. A
pinspec label is text placed at the pin base. Semicolons are not allowed in labels; use e.g.,
\char59{}
instead. To put a bar over a label, use
lg_bartxt(
label
)
. The pinopts are
[L|M|I|O][N][E]
as for
the lg_pin macro. Optional argument 7 is the pin length in drawing units.
Figure 59 shows a multiplexer block with variations, and Figure 60 shows the very similar
demultiplexer.
31
+
M1
0
1
2
3
Mux(4,M1)
In0
In1
In2
In3
Out
Sel
0
1
2
3
OE
left_; Mux(4,,LNOE)
In0
NOE
Out
Sel
00
01
10
11
OE
Mux(4,,OEBN2)
Sel0
Sel1
In0
In3
OE
0 1 2 3 4 5 6 7
down_; Mux(8,,L3,,28*L_unit)
Sel0
Sel2
In0 In7
Figure 59: The Mux(input count, label, [L][B|H|X][N[n]|S[n]][[N]OE],wid,ht) macro.
DM1
0
1
2
3
Demux(4,DM1)
Out0
Out3
In
Sel
0
1
2
3
OE
left_; Demux(4,,LOE)
Sel
Out0
OE
In
00
01
10
11
OE
(4,,NOEBN2)
Sel0
Sel1
Out0
Out3
NOE
In
0 1 2 3 4 5 6 7
down_; Demux(8,,L3,,28*L_unit)
Sel0
Sel2
Out0 Out7
In
Figure 60: The Demux(input count, label, [L][B|H|X][N[n]|S[n]][[N]OE],wid,ht) macro.
Customized gates can be deï¬ned simply. For example, the following code deï¬nes the custom
flipflops in Figure 61.
define(‘customFF’,‘FlipFlopX(wid 10*L_unit ht FF_ht*L_unit,,
:S;NE:CK;:R, N:PR, :Q;;ifelse(‘$1’,1,:lg_bartxt(Q)), N:CLR) ’)
S
CK
R
PR
Q
Q
CLR
SERIAL
INPUT
CLEAR
CLOCK
S
CK
R
PR
Q
Q
CLR
S
CK
R
PR
Q
Q
CLR
S
CK
R
PR
Q
Q
CLR
S
CK
R
PR
Q
CLR
OUTPUT
PR4 PR3 PR2 PR1 PR0
PRESET
ENABLE
Figure 61: A 5-bit shift register.
This deï¬nition makes use of macros
L_unit
and
FF_ht
that predeï¬ne default dimensions. There are
three pins on the right; the centre pin is null and the bottom is null if the ï¬rst macro argument is 1.
For hybrid applications, the
dac
and
adc
macros are illustrated in Figure 62. The ï¬gure shows the
default and predeï¬ned internal locations, the number of which can be speciï¬ed as macro arguments.
In addition to the logic gates described here, some experimental IC chip diagrams are included
with the distributed example ï¬les.
32
+
In1
NW
SW SE
NE
N1
S1
Out1
C
dac
DAC
In1
In2
N1 N2
Out1
Out2
Out3
S1 S2 S3
Q: dac(,,2,2,3,3); "DAC" "2" at Q.C
NW
SW SE
NE
In1
N1
S1
Out1
C
adc
ADC
In1
In2
N1 N2
Out1
Out2
Out3
S1 S2 S3
adc(,,2,2,3,3)
Figure 62: The dac(width,height,nIn,nN,nOut,nS) and adc(width,height,nIn,nN,nOut,nS) macros.
10 Integrated circuits
Developing a deï¬nitive library of integrated circuits is problematic because context may determine
how they should be drawn. Logical clarity may require drawing a functional diagram in which the
connection pins are not in the physical order of a terminal diagram, for example. Circuit boards
and connectors are similar. Although the geometries are simple, managing lists of pin locations and
labels can be tedious and repetitive.
The many-argument macro
lg_pin(
location, label, Picname,
n|e|s|w [L|M|I|O][N][E],
pinno, optional length
)
can be used to draw a variety of pins as illustrated in the Figure 63.
To draw the left-side pins, for example, one can write
lg_pin( U.nw-(0,lg_pinsep), Vin, Pin1, w )
lg_pin( U.nw-(0,2*lg_pinsep),,, wL )
and so on. Each pin can also be given a pic name, some text to indicate function, and a number.
.PS
log_init
command "\small\sf"
U: box wid 18*L_unit ht 9*lg_pinsep
Loopover_(‘x’,
‘lg_pin(U.nw-(0,m4Lx*lg_pinsep),,,w‘’x)’,
nul,L,M,I,O,N,E,NE)
define(‘Upin’,
‘lg_pin(U.ne-(0,(17-‘$1’)*lg_pinsep),‘$2’,Pin‘$1’,e‘$3’,‘$1’,8*L_unit)’)
Loopover_(‘x’,
‘Upin(patsubst(x,;,‘,’))’,
16;Vin;, 15;D0;L, 14;D1;M, 13;D2;I, 12;D3;O, 11;D4;N, 10;D5;E, 9;D6;NE )
.PE
Vin
16
D0
15
D1
14
D2
13
D3
12
D4
11
D5
10
D6
9
Figure 63:
An imaginary 16-pin integrated circuit and its code. Pin variations deï¬ned by the ï¬rst
Loopover_
are shown on the left; and text, pic labels, and pin numbers are deï¬ned on the right.
The third and successive arguments of the second
Loopover_
are
;
-separated pin number, text, and
pin type. The semicolons are changed to commas by the patsubst m4 macro and the Upin macro
gives the resulting arguments to lg_pin.
To reduce the tedium of adding the pins by hand, a list can be given to the
Loopover_(‘variable’,
‘
actions
’,
value1, value2,
. . .)
which executes the given actions successively with variable = value1,
value2 . . . and the counter m4Lx set to 1, 2, . . . as in the diagram.
11 Element and diagram scaling
There are several issues related to scale changes. You may wish to use millimetres, for example,
instead of the default inches. You may wish to change the size of a complete diagram while keeping
33
+
the relative proportions of objects within it. You may wish to change the sizes or proportions
of individual elements within a diagram. You must take into account that line widths are scaled
separately from drawn objects, and that the size of typeset text is independent of the pic language
except when svg is being produced.
The scaling of circuit elements will be described ï¬rst, then the pic scaling facilities.
11.1 Circuit scaling
The circuit elements all have default dimensions that are multiples of the pic environmental parameter
linewid,
so changing this parameter changes default element dimensions. The scope of a pic variable
is the current block; therefore, a sequence such as
resistor
T: [linewid = linewid*1.5; up_; Q: bi_tr] with .Q.B at Here
ground(at T.Q.E)
resistor(up_ dimen_ from T.Q.C)
connects two resistors and a ground to an enlarged transistor. Alternatively, you may redeï¬ne the
default length elen_ or the body-size parameter dimen_. For example, adding the line
define(‘dimen_’,(dimen_*1.2))
after the
cct_init
line of
quick.m4
produces slightly larger body sizes for all circuit elements. For
logic elements, the equivalent to the
dimen_
macro is
L_unit
, which has default value
(linewid/10)
.
The macros
capacitor, inductor,
and
resistor
have arguments that allow the body sizes to
be adjusted individually. The macro resized mentioned previously can also be used.
11.2 Pic scaling
There are at least three kinds of graphical elements to be considered:
1.
When generating ï¬nal output after reading the
.PE
line, pic processors divide distances and
sizes by the value of the environmental parameter
scale
, which is 1 by default. Therefore, the
effect of assigning a value to
scale
at the beginning of the diagram is to change the drawing
unit (initially 1 inch) throughout the ï¬gure. For example, the ï¬le
quick.m4
can be modiï¬ed
to use millimetres as follows:
.PS # Pic input begins with .PS
scale = 25.4 # mm
cct_init # Set defaults
elen = 19 # Variables are allowed
...
The default sizes of pic objects are redeï¬ned by assigning new values to the environmental
parameters
arcrad, arrowht, arrowwid, boxht, boxrad, boxwid, circlerad, dashwid,
ellipseht, ellipsewid, lineht, linewid, moveht, movewid, textht,
and
textwid.
The
. . .ht
and
. . .wid
parameters refer to the default sizes of vertical and horizontal lines, moves, etc.,
except for
arrowht
and
arrowwid
, which are arrowhead dimensions. The
boxrad
parameter
can be used to put rounded corners on boxes. Assigning a new value to
scale
also multiplies
all of these parameters except
arrowht, arrowwid, textht,
and
textwid
by the new value
of
scale
(gpic multiplies them all). Therefore, objects drawn to default sizes are unaffected
by changing
scale
at the beginning of the diagram. To change default sizes, redeï¬ne the
appropriate parameters explicitly.
2.
The
.PS
line can be used to scale the entire drawing, regardless of its interior. Thus, for
example, the line
.PS 100/25.4
scales the entire drawing to a width of 100 mm. Line thickness,
text size, and dpic arrowheads are unaffected by this scaling.
34
+
If the ï¬nal picture width exceeds
maxpswid
, which has a default value of 8.5, then the picture
is scaled to this size. Similarly, if the height exceeds
maxpsht
(default 11), then the picture
is scaled to ï¬t. These parameters can be assigned new values as necessary, for example, to
accommodate landscape ï¬gures.
3.
The ï¬nished size of typeset text is independent of pic variables, but can be determined as in
Section 13. Then,
"text" wid x ht y
tells pic the size of
text
, once the printed width
x
and height y have been found.
4.
Line widths are independent of diagram and text scaling, and have to be set explicitly.
For example, the assignment
linethick = 1.2
sets the default line width to 1.2 pt. The
macro
linethick_(
points
)
is also provided, together with default macros
thicklines_
and
thinlines_.
12 Writing macros
The m4 language is quite simple and is described in numerous documents such as the original
reference [
9
] or in later manuals [
15
]. If a new circuit or other element is required, then it may
suffice to modify and rename one of the library deï¬nitions or simply add an option to it. Hints for
drawing general two-terminal elements are given in
libcct.m4
. However, if an element or block is
to be drawn in only one orientation then most of the elaborations used for general two-terminal
elements in Section 4 can be dropped. If you develop a library of custom macros in the installation
directory then the statement include(mylibrary.m4) can bring its deï¬nitions into play.
It may not be necessary to deï¬ne your own macro if all that is needed is a small addition to
an existing element that is deï¬ned in an enclosing
[ ]
block. After the element arguments are
expanded, one argument beyond the normal list is automatically expanded before exiting the block,
as mentioned near the beginning of Section 6. This extra argument can be used to embellish the
element.
A macro is deï¬ned using quoted name and replacement text as follows:
define(‘name’,‘replacement text’)
After this line is read by the m4 processor, then whenever name is encountered as a separate
string, it is replaced by its replacement text, which may have multiple lines. The quotation characters
are used to defer macro expansion. Macro arguments are referenced inside a macro by number; thus
$1 refers to the ï¬rst argument. A few examples will be given.
Example 1:
Custom two-terminal elements can often be deï¬ned by writing a wrapper for an
existing element. For example, an enclosed thermal switch can be deï¬ned as shown in Figure 64.
define(‘thermalsw’,
‘dswitch(‘$1’,‘$2’,WDdBTh)
circle rad distance(M4T,last line.c) at last line.c ’)
Figure 64: A custom thermal switch deï¬ned from the dswitch macro.
Example 2:
In the following, two macros are deï¬ned to simplify the repeated drawing of a series
resistor and series inductor, and the macro
tsection
deï¬nes a subcircuit that is replicated several
times to generate Figure 65.
.PS
# ‘Tline.m4’
cct_init
hgt = elen_*1.5
ewd = dimen_*0.9
define(‘sresistor’,‘resistor(right_ ewd); llabel(,r)’)
define(‘sinductor’,‘inductor(right_ ewd,W); llabel(,L)’)
define(‘tsection’,‘sinductor
{ dot; line down_ hgt*0.25; dot
parallel_(‘resistor(down_ hgt*0.5); rlabel(,R)’,
35
+
‘capacitor(down_ hgt*0.5); rlabel(,C)’)
dot; line down_ hgt*0.25; dot }
sresistor ’)
SW: Here
gap(up_ hgt)
sresistor
for i=1 to 4 do { tsection }
line dotted right_ dimen_/2
tsection
gap(down_ hgt)
line to SW
.PE
r
L
RC
r
L
RC
r
L
RC
r
L
RC
r
L
RC
r
Figure 65: A lumped model of a transmission line, illustrating the use of custom macros.
Example 3:
Figure 66 shows an element that is composed of several basic elements and that can be
drawn in any direction prespeciï¬ed by
Point_(
degrees
)
. The labels always appear in their natural
horizontal orientation. Two flags in the argument determine the circuit orientation with respect to
r
Ï€
+
−
v
Ï€
g
m
v
Ï€
r
o
Base
Emitter
Collector
hybrid_PI_BJT
r
Ï€
+
−
v
Ï€
g
m
v
Ï€
r
o
hybrid_PI_BJT(M)
r
Ï€
+
−
v
Ï€
g
m
v
Ï€
r
o
hybrid_PI_BJT(LM)
r
Ï€
+
−
v
Ï€
g
m
v
Ï€
r
o
Point_(45)
hybrid_PI_BJT
Figure 66: A composite element containing several basic elements
the current drawing direction and whether a mirrored circuit is drawn. The key to writing such
a macro is to observe that the pic language allows two-terminal elements to change the current
drawing direction, so the value of
rp_ang
should be saved and restored as necessary after each
internal two-terminal element has been drawn. A draft of such a macro follows:
# ‘Point_(degrees)
# hybrid_PI_BJT([L][M])
# L=left orientation; M=mirror’
define(‘hybrid_PI_BJT’,
‘[ # Size (and direction) parameters:
hunit = ifinstr(‘$1’,M,-)dimen_
vunit = ifinstr(‘$1’,L,-)dimen_*3/2
hp_ang = rp_ang # Save the reference direction
36
+
Rpi: resistor(to rvec_(0,-vunit)); point_(hp_ang) # Restore direction
DotG: dot(at rvec_(hunit*5/4,0))
Gm: consource(to rvec_(0,vunit),I,R); point_(hp_ang) # Restore direction
dot(at rvec_(hunit*3/4,0))
Ro: resistor(to rvec_(0,-vunit)); point_(hp_ang) # Restore direction
line from Rpi.start to Rpi.start+vec_(-hunit/2,0) chop -lthick/2 chop 0
Base: dot(,,1)
line from Gm.end to Ro.start+vec_(hunit/2,0) chop -lthick/2 chop 0
Collector: dot(,,1)
line from Rpi.end to Ro.end chop -lthick/2
DotE: dot(at 0.5 between Rpi.end and DotG)
line to rvec_(0,-vunit/2)
Emitter: dot(,,1)
# Labels
‘"$\mathrm{r_\pi}$"’ at Rpi.c+vec_(hunit/4,0)
‘"$ + $"’ at Rpi.c+vec_(-hunit/6, vunit/4)
‘"$ - $"’ at Rpi.c+vec_(-hunit/6,-vunit/4)
‘"$\mathrm{v_\pi}$"’ at Rpi.c+vec_(-hunit/4,0)
‘"$\mathrm{g_m}$$\mathrm{v_\pi}$"’ at Gm.c+vec_(-hunit*3/8,-vunit/4)
‘"$\mathrm{r_o}$"’ at Ro.c+vec_(hunit/4,0)
‘$2’ ] ’)
Example 4:
A number of elements have arguments meant explicitly for customization. Figure 67
customizes the
source
macro to show a cycle of a horizontal sinusoid with adjustable phase given
by argument 2 in degrees, as might be wanted for a 3-phase circuit:
phsource(,120)
define(‘phsource’,‘source($1,
#‘Set angle to 0, draw sinusoid, restore angle’
m4smp_ang = rp_ang; rp_ang = 0
sinusoid(m4h/2,twopi_/(m4h),
ifelse(‘$2’,,,‘($2)/360*twopi_+’)pi_/2,-m4h/2,m4h/2) with .Origin at Here
rp_ang = m4smp_ang,
$3,$4,$5)’)
Figure 67: A source element customized using its second argument.
Example 5:
Repeated subcircuits might appear only as the subcircuit and its mirror image,
for example, so the power of the
vec_()
and
rvec_()
macros is not required. Suppose that an
optoisolator is to be drawn with left-right or right-left orientation as shown in Figure 68.
C CA A
E EK KB
Figure 68: Showing opto and opto(BR) with deï¬ned labels.
The macro interface could be something like the following:
opto( [L|R][A|B] ),
where an
R
in the argument string signiï¬es a right-left (mirrored) orientation and the element is of
either
A
or
B
type; that is, there are two related elements that might be drawn in either orientation,
for a total of four possibilities. Those who ï¬nd such an interface to be too cryptic might prefer to
invoke the macro as
opto(orientation=Rightleft;type=B),
37
+
which includes semantic sugar surrounding the
R
and
B
characters for readability; this usage is made
possible by testing the argument string using the
ifinstr()
macro rather than requiring an exact
match. A draft of the macro follows, and the ï¬le
Optoiso.m4
in the examples directory adds a third
type option.
# ‘opto([R|L][A|B])’
define(‘opto’,‘[{u = dimen_/2
Q: bi_trans(up u*2,ifinstr(‘$1’,R,R),ifinstr(‘$1’,B,B)CBUdE)
E: Q.E; C: Q.C; A:ifinstr(‘$1’,R,Q.e+(u*3/2,u),Q.w+(-u*3/2,u)); K: A-(0,u*2)
ifinstr(‘$1’,B,line from Q.B to (Q.B,E); B: Here)
D: diode(from A to K)
arrow from D.c+(0,u/6) to Q.ifinstr(‘$1’,R,e,w)+(0,u/6) chop u/3 chop u/4
arrow from last arrow.start-(0,u/3) to last arrow.end-(0,u/3)
Enc: box rad u wid abs(C.x-A.x)+u*2 ht u*2 with .c at 0.5 between C and K
‘$2’ }]’)
Two instances of this subcircuit are drawn and placed by the following code, with the result shown
in Figure 68.
Q1: opto
Q2: opto(type=B;orientation=Rightleft) with .w at Q1.e+(dimen_,0)
12.1 Macro arguments
Macro parameters are deï¬ned by entering them into speciï¬c arguments, and if an argument is blank
then a default parameter is used. For the resistor macro, for example:
resistor( linespec, cycles, chars, cycle wid );
an integer (3, say) in the second argument speciï¬es the number of cycles. Arguments could be
entered in a key–value style (for example,
resistor(up_ elen_,style=N;cycles=8
) instead of by
positional parameters, but it was decided early on to keep macro usage as close as possible to pic
conventions.
More recently, a mixed style has been adopted by which some parameters are entered using keys.
Two macros assist this process, of which the ï¬rst is
setkey_(string, key, default value, [N])
The ï¬rst argument is taken to be a sequence of semicolon (;)-separated terms of the form
key=value;. Then for example in a macro, the line
setkey_( ‘$2’, wdth, dimen_*2 )
checks argument 2 for a term
wdth=
value and deï¬nes the macro
m4wdth
to evaluate to
(dimen_*2)
if not found, otherwise to
(
value
).
The enclosing parentheses are omitted if the third argument of
setkey_ is N, as may be required if m4wdth is non-numeric.
In addition, the macro
setkeys_(string, keysequence)
applies
setkey_()
multiple times to its keysequence (second) argument. Each term of the second
argument consists of the three arguments of
setkey_
separated by the colons (:) rather than commas.
For example, consider the elementary example of a custom box macro:
define(‘custombox’,
‘setkeys_(‘$1’,wdth:boxwid:; hgt:boxht:; label::N; text::N)
ifelse(m4label,,,m4label:) box wid m4wdth ht m4hgt "m4text" ’)
Then
custombox(wdth=2; label=B1; text=Hello)
ï¬rst causes the macros
m4wdth, m4hgt,
m4label,
and
m4text
to be created, with values
(2), (boxht), B1,
and
Hello
respectively, and
custombox evaluates to
B1: box wid (2) ht (boxht) "Hello".
The key preï¬x
m4
of the automatically created parameter macros can be redeï¬ned if necessary,
since it is given in the distribution by the line define(‘key_prefix’,‘m4’).
38
+
13 Interaction with L
A
T
E
X
The sizes of typeset labels and other T
E
X boxes are generally unknown prior to processing the
diagram by L
A
T
E
X. Although they are not needed for many circuit diagrams, these sizes may be
required explicitly for calculations or implicitly for determining the diagram bounding box. The
following example shows how text sizes can affect the overall size of a diagram:
.PS
B: box
"Left text" at B.w rjust
"Right text: $x^2$" at B.e ljust
.PE
The pic interpreter cannot know the size of the text to the left and right of the box, and the
diagram is generated using default text size values. One solution to this problem is to measure the
text sizes by hand and include them literally, thus:
"Left text" wid 38.47pt__ ht 7pt__ at B.w rjust
but this is tedious.
Often, a better solution is to process the diagram twice. The diagram source is processed as
usual by m4 and a pic processor, and the main document source is L
A
T
E
Xed to input the diagram
and format the text, and also to write the text dimensions into a supplementary ï¬le. Then the
diagram source is processed again, reading the required dimensions from the supplementary ï¬le and
producing a diagram ready for ï¬nal L
A
T
E
Xing. This hackery is summarized below, with an example
in Figure 69.
• Put \usepackage{boxdims} into the document source.
•
Insert the following at the beginning of the diagram source, where jobname is the name of the
main L
A
T
E
X ï¬le:
sinclude(jobname.dim)
s_init(unique name)
•
Use the macro
s_box(
text
)
to produce typeset text of known size, or alternatively, invoke
the macros
\boxdims
and
boxdim
described later. The argument of
s_box
need not be text
exclusively; it can be anything that produces a T
E
X box, for example, \includegraphics.
.PS
gen_init
sinclude(Circuit_macros.dim)
s_init(stringdims)
B: box
s_box(Left text) at B.w rjust
s_box(Right text: $xˆ%g$,2) at B.e ljust
.PE
Left text
Right text: x
2
Figure 69:
Macro
s_box
sets string dimensions automatically when processed twice. If two or more
arguments are given to s_box, they are passed through sprintf. The bounding box is shown.
The macro s_box(text) evaluates initially to
"\boxdims{name}{text}" wid boxdim(name,w) ht boxdim(name,v)
On the second pass, this is equivalent to
"text" wid x ht y
where x and y are the typeset dimensions of the L
A
T
E
X input text. If
s_box
is given two or more
arguments as in Figure 69 then they are processed by sprintf.
The argument of
s_init
, which should be unique within jobname
.dim
, is used to generate a
unique
\boxdims
ï¬rst argument for each invocation of
s_box
in the current ï¬le. If
s_init
has been
omitted, the symbols “
!!
†are inserted into the text as a warning. Be sure to quote any commas in
the arguments. Since the ï¬rst argument of
s_box
is L
A
T
E
X source, make a rule of quoting it to avoid
39
+
comma and name-clash problems. For convenience, the macros
s_ht
,
s_wd
, and
s_dp
evaluate to
the dimensions of the most recent
s_box
string or to the dimensions of their argument names, if
present.
The ï¬le
boxdims.sty
distributed with this package should be installed where L
A
T
E
X can ï¬nd it.
The essential idea is to deï¬ne a two-argument L
A
T
E
X macro
\boxdims
that writes out deï¬nitions for
the width, height and depth of its typeset second argument into ï¬le jobname.
dim
, where jobname
is the name of the main source ï¬le. The ï¬rst argument of
\boxdims
is used to construct unique
symbolic names for these dimensions. Thus, the line
box "\boxdims{Q}{\Huge Hi there!}"
has the same effect as
box "\Huge Hi there!"
except that the line
define(‘Q_w’,77.6077pt__)define(‘Q_h’,17.27779pt__)define(‘Q_d’,0.0pt__)dnl
is written into ï¬le jobname.
dim
(and the numerical values depend on the current font). These
deï¬nitions are required by the boxdim macro described below.
The L
A
T
E
X macro
\boxdimfile{dimension ï¬le}
is used to specify an alternative to jobname.
dim
as the dimension ï¬le to be written. This simpliï¬es
cases where jobname is not known in advance or where an absolute path name is required.
Another simpliï¬cation is available. Instead of the
sinclude(
dimension ï¬le
)
line above, the
dimension ï¬le can be read by m4 before reprocessing the source for the second time:
m4 library ï¬les dimension ï¬le diagram source ï¬le ...
Here is a second small example. Suppose that the ï¬le tsbox.m4 contains the following:
\documentclass{article}
\usepackage{boxdims,ifpstricks(pstricks,tikz)}
\begin{document}
.PS
cct_init s_init(unique) sinclude(tsbox.dim)
[ source(up_,AC); llabel(,s_box(AC supply)) ]; showbox_
.PE
\end{document}
The ï¬le is processed twice as follows:
m4 pgf.m4 tsbox.m4 | dpic -g > tsbox.tex; pdflatex tsbox
m4 pgf.m4 tsbox.m4 | dpic -g > tsbox.tex; pdflatex tsbox
The ï¬rst command line produces a ï¬le
tsbox.pdf
with incorrect bounding box. The second command
reads the data in
tsbox.dim
to size the label correctly. The equivalent pstricks commands (note the
ifpstricks macro in the second line of the diagram source) are
m4 pstricks.m4 tsbox.m4 | dpic -p > tsbox.tex; latex tsbox
m4 pstricks.m4 tsbox.m4 | dpic -p > tsbox.tex; latex tsbox; dvips tsbox
Objects can be taylored to their attached text by invoking
\boxdims
and
boxdim
explicitly. The
small source ï¬le in Figure 70, for example, produces the box in the ï¬gure.
.PS
# ‘eboxdims.m4’
sinclude(Circuit_macros.dim) # The input file is Circuit_macros.tex
box fill_(0.9) wid boxdim(Q,w) + 5pt__ ht boxdim(Q,v) + 5pt__ \
"\boxdims{Q}{\large$\displaystyle\int_0^T e^{tA}\,dt$}"
.PE
Z
T
0
e
tA
dt
Q_w
Q_h+Q_d
Figure 70: Fitting a box to typeset text.
The ï¬gure is processed twice, as described previously. The line sinclude(jobname.dim) reads
the named ï¬le if it exists. The macro
boxdim(
name,suffix,default
)
from
libgen.m4
expands the
40
+
expression
boxdim(Q,w)
to the value of
Q_w
if it is deï¬ned, else to its third argument if deï¬ned, else
to 0, the latter two cases applying if jobname.
dim
doesn’t exist yet. The values of
boxdim(Q,h)
and
boxdim(Q,d)
are similarly deï¬ned and, for convenience,
boxdim(Q,v)
evaluates to the sum of these.
Macro pt__ is deï¬ned as *scale/72.27 in libgen.m4, to convert points to drawing coordinates.
Sometimes a label needs a plain background in order to blank out previously drawn components
overlapped by the label, as shown on the left of Figure 71. The technique illustrated in Figure 70
Wood chips
n
3
Figure 71: Illustrating the f_box macro.
is automated by the macro
f_box(
boxspecs, label arguments
)
. For the special case of only one
argument, e.g.,
f_box(Wood chips),
this macro simply overwrites the label on a white box of
identical size. Otherwise, the ï¬rst argument speciï¬es the box characteristics (except for size), and
the macro evaluates to
box boxspecs s_box(label arguments).
For example, the result of the following command is shown on the right of Figure 71.
f_box(color "lightgray" thickness 2 rad 2pt__,"\huge$n^{%g}$",4-1)
More tricks can be played. The example
Picture: s_box(‘\includegraphics{ï¬le.eps}’) with .sw at location
shows a nice way of including eps graphics in a diagram. The included picture (named
Picture
in the example) has known position and dimensions, which can be used to add vector graphics
or text to the picture. To aid in overlaying objects, the macro
boxcoord(
object name, x-fraction,
y-fraction
)
evaluates to a position, with
boxcoord(
object name
,0,0)
at the lower left corner of the
object, and boxcoord(object name,1,1) at its upper right.
14 PSTricks and other tricks
This section applies only to a pic processor (dpic) that is capable of producing output compatible
with PSTricks, Tikz PGF, or in principle, other graphics postprocessors.
By using
command
lines, or simply by inserting L
A
T
E
X graphics directives along with strings to be
formatted, one can mix arbitrary PSTricks (or other) commands with m4 input to create complicated
effects.
Some commonly required effects are particularly simple. For example, the rotation of text by
PSTricks postprocessing is illustrated by the ï¬le
.PS
# ‘Axes.m4’
arrow right 0.7 "‘$x$-axis’" below
arrow up 0.7 from 1st arrow.start "‘\rput[B]{90}(0,0){$y$-axis}’" rjust
.PE
which contains both horizontal text and text rotated 90
â—¦
along the vertical line. This rotation of text
is also implemented by the macro
rs_box
, which is similar to
s_box
but rotates its argument by 90
â—¦
,
a default angle that can be changed by preceding invocation with
define(‘text_ang’,
degrees
)
.
The
rs_box
macro requires either PSTricks or Tikz PGF and, like
s_box
, it calculates the size of
the resulting text box but requires the diagram to be processed twice.
Another common requirement is the ï¬lling of arbitrary shapes, as illustrated by the following
lines within a .m4 ï¬le:
command "‘\pscustom[fillstyle=solid,fillcolor=lightgray]{’"
drawing commands for an arbitrary closed curve
command "‘}%’"
For colour printing or viewing, arbitrary colours can be chosen, as described in the PSTricks
manual. PSTricks parameters can be set by inserting the line
command "‘\psset{option=value, . . .}’"
41
+
in the drawing commands or by using the macro psset_(PSTricks options).
The macros
shade(
gray value,closed line specs
)
and
rgbfill(
red value, green value, blue value,
closed line specs
)
can be invoked to accomplish the same effect as the above ï¬ll example, but are
not conï¬ned to use only with PSTricks.
Since arbitrary L
A
T
E
X can be output, either in ordinary strings or by use of
command
output,
complex examples such as found in reference [
3
], for example, can be included. The complications
are twofold: L
A
T
E
X and dpic may not know the dimensions of the formatted result, and the code
is generally unique to the postprocessor. Where postprocessors are capable of equivalent results,
then macros such as
rs_box
,
shade
, and
rgbfill
mentioned previously can be used to hide code
differences.
14.1 Tikz with pic
Arbitrary pic output can be inserted into a
\tikzpicture
environment. The trick is to keep the pic
and Tikz coordinate systems the same. The lines
\begin{tikzpicture}[scale=2.54]
\end{tikzpicture}%
in the dpic -g output must be changed to
\begin{scope}[scale=2.54]
\end{scope}%
This is accomplished, for example, by adapting the \mtotex macro of Section 2.1.4 as follows:
\newcommand\mtotikz[1]{\immediate\write18{m4 pgf.m4 #1.m4 | dpic -g
| sed -e "/begin{tikzpicture}/s/tikzpicture/scope/"
-e "/end{tikzpicture}/s/tikzpicture/scope/" > #1.tex}\input{./#1.tex}}%
Then, from within a Tikz pictdure,
\mtotikz{
ï¬lename
}
will create ï¬lename
.tex
from ï¬lename
.m4
and read the result into the Tikz code.
In addition, the Tikz code may need to refer to nodes deï¬ned in the pic diagram. The included
m4 macro
tikznode(
tikz node name,[position],[string]
)
deï¬nes a zero-size Tikz node at the given
pic position, which is
Here
by default. This macro must be invoked in the outermost scope of a pic
diagram, and the .PS value scaling construct may not be used.
15 Web documents, pdf, and alternative output formats
Circuit diagrams contain graphics and symbols, and the issues related to web publishing are similar
to those for other mathematical documents. Here the important factor is that gpic
-t
generates
output containing tpic
\special
commands, which must be converted to the desired output, whereas
dpic can generate several alternative formats, as shown in Figure 72. One of the easiest methods for
producing web documents is to generate postscript as usual and to convert the result to pdf format
with Adobe Distiller or equivalent.
PDFlatex produces pdf without ï¬rst creating a postscript ï¬le but does not handle tpic
\special
s,
so dpic must be installed.
Most PDFLatex distributions are not directly compatible with PSTricks, but the Tikz PGF
output of dpic is compatible with both L
A
T
E
X and PDFLatex. Several alternative dpic output
formats such as mfpic and MetaPost also work well. To test MetaPost, create a ï¬le ï¬lename
.mp
containing appropriate header lines, for example:
verbatimtex
\documentclass[11pt]{article}
\usepackage{times,boxdims,graphicx}
\boxdimfile{tmp.dim}
\begin{document} etex
42
+
L
A
T
E
X
L
A
T
E
X
pict2e
PDF
.pdf
-d
L
A
T
E
X
.tex
-e
tpic
.tex
L
A
T
E
X
psfrag
Postscript
psfrag
.eps
-f
L
A
T
E
X
or
PDFlatex
tikz
PGF
.tex
-g
L
A
T
E
X
Mfpic
Metafont
mfpic
.tex
-m
L
A
T
E
X
PSTricks
PSTricks
.tex
-p
dpic
MetaPost
Meta-
Post
.mp
-s
Post-
script
.eps
-r
L
A
T
E
X
or
PDFlatex
SVG
.svg
-v
Inkscape
or
HTML
Xï¬g
.ï¬g
-x
Xï¬g
L
A
T
E
X
or
PDFlatex
gpic -t
m4
.pic.pic
Diagram source
Macro libraries
Figure 72:
Output formats produced by gpic
-t
and dpic. SVG output can be read by Inkscape or used
directly in web documents.
Then append one or more diagrams by using the equivalent of
m4 <installdir>mpost.m4 library ï¬les diagram.m4 | dpic -s » ï¬lename.mp
The command “
mpost –tex=latex
ï¬lename
.mp end
†processes this ï¬le, formatting the di-
agram text by creating a temporary
.tex
ï¬le, L
A
T
E
Xing it, and recovering the
.dvi
output to
create ï¬lename
.1
and other ï¬les. If the
boxdims
macros are being invoked, this process must be
repeated to handle formatted text correctly as described in Section 13. In this case, either put
sinclude(tmp.dim)
in the diagram
.m4
source or read the
.dim
ï¬le at the second invocation of m4
as follows:
m4 <installdir>mpost.m4 library ï¬les tmp.dim diagram.m4 | dpic -s » ï¬lename.mp
On some operating systems, the absolute path name for
tmp.dim
has to be used to ensure that
the correct dimension ï¬le is written and read. This distribution includes a
Makefile
that simpliï¬es
the process; otherwise a script can automate it.
Having produced ï¬lename
.1
, rename it to ï¬lename
.mps
and, voilà, you can now run PDFlatex
on a .tex source that includes the diagram using \includegraphics{ï¬lename.mps} as usual.
The dpic processor can generate other output formats, as illustrated in Figure 72 and in example
ï¬les included with the distribution. The L
A
T
E
X drawing commands alone or with
eepic
or
pict2e
extensions are suitable only for simple diagrams.
16 Developer’s notes
Years ago in the course of writing a book, I took a few days off to write a pic-like interpreter (dpic)
to automate the tedious coordinate calculations required by L
A
T
E
X picture objects. The macros in
this distribution and the interpreter are the result of that effort, drawings I have had to produce
since, and suggestions received from others. The interpreter has been upgraded over time to generate
mfpic, MetaPost [
5
], raw Postscript, Postscript with
psfrag
tags, raw PDF, PSTricks, and TikZ
PGF output, the latter two my preference because of their quality and flexibility, including facilities
for colour and rotations, together with simple font selection. Xï¬g-compatible output was introduced
early on to allow the creation of diagrams both by programming and by interactive graphics. SVG
output was added relatively recently, and seems suitable for producing web diagrams directly and for
further editing by the Inkscape interactive graphics editor. The latest addition is raw PDF output,
which has very basic text capability and is most suitable for creating diagrams without labels, but
on which sophisticated text can be overlaid if necessary. Dpic can write the coordinates of selected
locations to an external ï¬le to be used in overlaying text or other items on the diagram.
The main value of this distribution is not intended to be in the use of a speciï¬c language but in
the element data encoded in the macros, which have been developed with reference to standards
and reï¬ned over more than two decades, and which now total thousands of lines. Some of the
43
+
macros have become less readable as more options and flexibility have been added, and if starting
over today, perhaps I would change some details. Compromises have been made in order to retain
reasonable compatibility with the variety of postprocessors. No choice of tool is without compromise,
and producing good graphics seems to be time consuming, no matter how it is done, especially for
circuits or other diagrams that contain random detail.
Instead of using pic macros, I preferred the equally simple but more powerful m4 macro processor,
and therefore m4 is required here, although dpic now supports pic-like macros. Free versions of m4
are available for Unix and its descendents, Windows, and other operating systems.
If starting over today would I not just use one of the other drawing packages available these
days? It would depend on the context, but pic remains a good choice for line drawings because it
is easy to learn and read but powerful enough for coding the geometrical calculations required for
precise component sizing and placement. It would be nice if arbitrary rotations and scaling were
simpler and if a general path element with clipping were available as in Postscript. However, all the
power of Postscript or Tikz PGF, for example, remains available, as arbitrary postprocessor code
can be included with pic code.
The dpic interpreter has several output-format options that may be useful. The
eepicemu
and
pict2e
extensions of the primitive L
A
T
E
X picture objects are supported. The mfpic output allows the
production of Metafont alphabets of circuit elements or other graphics, thereby essentially removing
dependence on device drivers, but with the complication of treating every alphabetic component
as a T
E
X box. The xï¬g output allows elements to be precisely deï¬ned with dpic and interactively
placed with xï¬g. Similarly, the SVG output can be read directly by the Inkscape graphics editor,
but SVG can also be used directly for web pages. Dpic will also generate low-level MetaPost or
Postscript code, so that diagrams deï¬ned using pic can be manipulated and combined with others.
The Postscript output can be imported into CorelDraw and Adobe Illustrator for further processing.
With raw Postscript, PDF, and SVG output, the user is responsible for ensuring that the correct
fonts are provided and for formatting the text.
Many thanks to the people who continue to send comments, questions, and, occasionally, bug
ï¬xes. What began as a tool for my own use changed into a hobby that has persisted, thanks to your
help and advice.
17 Bugs
This section provides hints and a list of common errors.
The distributed macros are not written for maximum robustness. Macro arguments could be
tested for correctness and explanatory error messages could be written as necessary, but that would
make the macros more difficult to read and to write. You will have to read them when unexpected
results are obtained or when you wish to modify them.
Maintaining reasonable compatibility with both gpic and dpic and, especially, with different
postprocessors, has resulted in some macros becoming more complicated than is preferable.
Here are some hints, gleaned from experience and from comments I have received.
1. Misconï¬guration:
One of the conï¬guration ï¬les listed in Section 2.2 and
libgen.m4
must
be read by m4 before any other library macros. Otherwise, the macros assume default
conï¬guration. To aid in detecting the default condition, a
WARNING
comment line is inserted
into the
pic
output. If only PSTricks is to be used, for example, then the simplest strategy is to
set it as the default processor by typing “make psdefault†in the installation directory to change
the mention of
gpic
to
pstricks
near the top of
libgen.m4
. Similarly if only Tikz PGF
will be used, change
gpic
to
pgf
using the Makeï¬le. The package default is to read
gpic.m4
for historical compatibility. The processor options must be chosen correspondingly,
gpic -t
for
gpic.m4
and, most often,
dpic -p
or
dpic -g
when dpic is employed. For example, the
pipeline for PSTricks output from ï¬le quick.m4 is
m4 -I installdir pstricks.m4 quick.m4 | dpic -p > quick.tex
but for Tikz PGF processing, the conï¬guration ï¬le and dpic option have to be changed:
m4 -I installdir pgf.m4 quick.m4 | dpic -g > quick.tex
44
+
Any non-default conï¬guration ï¬le must appear explicitly in the command line or in an
include() statement.
2. Pic objects versus macros: A common error is to write something like
line from A to B; resistor from B to C; ground at D
when it should be
line from A to B; resistor(from B to C); ground(at D)
This error is caused by an unfortunate inconsistency between pic object attributes and the
way m4 and pic pass macro arguments.
3. Commas:
Macro arguments are separated by commas, so any comma that is part of an
argument must be protected by parentheses or quotes. Thus,
shadebox(box with .n at w,h)
produces an error, whereas
shadebox(box with .n at w‘,’h)
and
shadebox(box with .n at (w,h))
do not. The parentheses are preferred. For example, a macro invoked by circuit elements
contained the line
command "\pscustom[fillstyle=solid‘,’fillcolor=m4fillv]{%"
which includes a comma, duly quoted. However, if such an element is an argument of another
macro, the quotes are removed and the comma causes obscure “too many arguments†error
messages. Changing this line to
command sprintf("\pscustom[fillstyle=solid,fillcolor=m4fillv]{%%")
cured the problem because the protecting parentheses are not stripped away.
4. Default directions and lengths:
The linespec argument of element macros deï¬nes a
straight-line segment, which requires the equivalent of four parameters to be speciï¬ed uniquely.
If information is omitted, default values are used. Writing
source(up_)
draws a source from the current position up a distance equal to the current
lineht
value,
which may cause confusion. Writing
source(0.5)
draws a source of length 0.5 units in the current pic default direction, which is one of
right,
left, up,
or
down.
The best practice is to specify both the direction and length of an element,
thus:
source(up_ elen_).
The effect of a linespec argument is independent of any direction set using the
Point_
or
similar macros. To draw an element at an obtuse angle (see Section 7) try, for example,
Point_(45); source(to rvec_(0.5,0))
5. Processing sequence:
It is easy to forget that m4 ï¬nishes before pic processing begins.
Consequently, it may be puzzling that the following mix of a pic loop and the m4 macro
s_box
does not appear to produce the required result:
for i=1 to 5 do {s_box(A[i]); move }
In this example, the
s_box
macro is expanded only once and the index
i
is not a number.
This particular example can be repaired by using an m4 loop:
for_(1,5,1,‘s_box(A[m4x]); move’)
Note that the loop index variable m4x is automatically deï¬ned.
45
+
6. Quotes: Single quote characters are stripped in pairs by m4, so the string
"‘‘inverse’’"
will become
"‘inverse’".
The cure is to add single quotes in pairs as necessary.
The only subtlety required in writing m4 macros is deciding when to quote macro arguments.
In the context of circuits it seemed best to assume that arguments would not be protected by
quotes at the level of macro invocation, but should be quoted inside each macro. There may
be cases where this rule is not optimal or where the quotes could be omitted, and there are
rare exceptions such as the parallel_ macro.
To keep track of paired single quotes, parentheses “
(
,
)
,†braces “
{
,
}
,†and brackets “
[
,
]
,â€
use an editor that highlights these pairs. For example, the vim editor highlights single quotes
with the command :set mps+=‘:’.
7. Dollar signs:
The
i
-th argument of an m4 macro is
$i,
where
i
is an integer, so the following
construction can cause an error when it is part of a macro,
"$0$" rjust below
since
$0
expands to the name of the macro itself. To avoid this problem, put the string in
quotes or write "$‘’0$".
8. Name conflicts:
Using the name of a macro as part of a comment or string is a simple and
common error. Thus,
arrow right "$\dot x$" above
produces an error message because
dot
is a macro name. Macro expansion can be avoided by
adding quotes, as follows:
arrow right ‘"$\dot x$"’ above
Library macros intended only for internal use have names that begin with
m4
or
M4
to avoid
name clashes, but in addition, a good rule is to quote all L
A
T
E
X in the diagram input.
If extensive use of strings that conflict with macro names is required, then one possibility is to
replace the strings by macros to be expanded by L
A
T
E
X, for example the diagram
.PS
box "\stringA"
.PE
with the L
A
T
E
X macro
\newcommand{\stringA}{
Circuit containing planar inductor and capacitor}
9. Current direction:
Some macros, particularly those for labels, do unexpected things if
care is not taken to preset the current direction using macros
right_, left_, up_, down_,
or rpoint_( · ). Thus for two-terminal macros it is good practice to write, e.g.
resistor(up_ from A to B); rlabel(,R_1)
rather than
resistor(from A to B); rlabel(,R_1),
which produce different results if the last-deï¬ned drawing direction is not
up
. It might be
possible to change the label macros to avoid this problem without sacriï¬cing ease of use.
10. Position of elements that are not 2-terminal:
The linespec argument of elements
deï¬ned in
[ ]
blocks must be understood as deï¬ning a direction and length, but not the
position of the resulting block. In the pic language, objects inside these brackets are placed by
46
+
default as if the block were a box. Place the element by its compass corners or deï¬ned interior
points as described in the ï¬rst paragraph of Section 6 on page 18, for example
igbt(up_ elen_) with .E at (1,0)
11. Pic error messages:
Some errors are detected only after scanning beyond the end of the
line containing the error. The semicolon is a logical line end, so putting a semicolon at the
end of lines may assist in locating bugs.
12. Line continuation:
A line is continued to the next if the rightmost character is a backslash
or, with dpic, if the backslash is followed immediately by the
#
character. A blank after the
backslash, for example, produces a pic error.
13. Scaling:
Pic and these macros provide several ways to scale diagrams and elements within
them, but subtle unanticipated effects may appear. The line
.PS x
provides a convenient way
to force the ï¬nished diagram to width
x.
However, if gpic is the pic processor then all scaled
parameters are affected, including those for arrowheads and text parameters, which may not
be the desired result. A good general rule is to use the
scale
parameter for global scaling
unless the primary objective is to specify overall dimensions.
14. Buffer overflow:
For some m4 implementations, the error message
pushed back more
than 4096 chars
results from expanding large macros or macro arguments, and can be
avoided by enlarging the buffer. For example, the option
-B16000
enlarges the buffer size to
16000 bytes. However, this error message could also result from a syntax error.
15. PSTricks anomaly:
If you are using PSTricks and you get the error message
Graphics
parameter ‘noCurrentPoint’ not defined..
then your version of PSTricks is older than
August 2010. You can do the following:
(a) Update your PSTricks package.
(b)
Instead, comment out the second deï¬nition of
M4PatchPSTricks
in
pstricks.m4
. The
ï¬rst deï¬nition works for some older PSTricks distributions.
(c)
Insert
define(‘M4PatchPSTricks’,)
immediately after the
.PS
line of your diagram.
This change prevents the line
\psset{noCurrentPoint}
from being added to the
.tex
code for the diagram. This line is a workaround for a “feature†of the current PSTricks
\psbezier
command that changes its behaviour within the
\pscustom
environment. This
situation occurs rarely and so the line is unnecessary for many diagrams.
(d)
For very old versions of PSTricks such as pstricks97, disable the workaround totally by
changing the second deï¬nition in
pstricks.m4
to
define(‘M4PatchPSTricks’,)
. Undo
the change if you later update PSTricks.
16. m4 -I error:
Some old versions of m4 may not implement the
-I
option or the
M4PATH
environment variable that simplify ï¬le inclusion. The simplest course of action is probably
to install GNU m4, which is free and widely available. Otherwise, all
include(
ï¬lename
)
statements in the libraries and calling commands have to be given absolute ï¬lename paths.
You can deï¬ne the
HOMELIB_
macro in
libgen.m4
to the path of the installation directory and
change the library include statements to the form include(HOMELIB_‘’ï¬lename).
18 List of macros
The following table lists macros in the libraries, conï¬guration ï¬les, and selected macros from example
diagrams. Some of the sources in the
examples
directory contain additional macros, such as for
flowcharts, Boolean logic, and binary trees.
Internal macros deï¬ned within the libraries begin with the characters m4 or M4 and, for the
most part, are not listed here.
The library in which each macro is found is given, and a brief description.
47
+
A B C D E F G H I J K L M N O P R S T U V W X Y
A above_ gen string position above relative to current direction
abs_(number) gen absolute value function
ACsymbol(at position, len, ht, [A]U|D|L|R|degrees)
cct
draw an AC symbol ( 1-cycle sine wave); If arg 4 contains
A, two arcs are drawn. The current drawing direction is
default, otherwise Up, Down, Left, Right, or at degrees
slant; (Section 4.2) e.g.,
ebox; {ACsymbol(at last [],,dimen_/8)}
adc(width,height,nIn,nN,nOut,nS)
cct ADC with deï¬ned width, height, and number of inputs
Ini, top terminals Ni, ouputs Outi, and bottom
terminals Si
addtaps[arrowhd | type=arrowhd;name=Name], fraction, length, fraction, length, · · ·)
cct Add taps to the previous two-terminal element. arrowhd
= blank or one of . - <- -> <->. Each fraction
determines the position along the element body of the
tap. A negative length draws the tap to the right of the
current direction; positive length to the left. Tap names
are Tap1, Tap2, · · · by default or Name1, Name2, · · · if
speciï¬ed (Section 6)
along_(linear object name) gen short for between name.start and name.end
Along_(LinearObj,distance,[R])gen Position arg2 (default all the way) along a linear object
from .start to .end (from .end to .start if arg3=R)
amp(linespec,size) cct ampliï¬er (Section 4.2)
And, Or, Not, Nand, Nor, Xor, Nxor, Buffer
log Wrappers of AND_gate, . . . for use in the Autologix
macro
AND_gate(n,N) log basic ‘and’ gate, 2 or n inputs; N=negated input.
Otherwise, arg1 can be a sequence of letters
P|N
to deï¬ne
normal or negated inputs (Section 9)
AND_gen(n,chars,[wid,[ht]]) log general AND gate: n=number of inputs (0 ≤ n ≤ 16);
chars: B=base and straight sides; A=Arc;
[N]NE,[N]SE,[N]I,[N]N,[N]S=inputs or circles;
[N]O=output; C=center. Otherwise, arg1 can be a
sequence of letters
P|N
to deï¬ne normal or negated inputs.
AND_ht log height of basic ‘and’ and ‘or’ gates in L_units
AND_wd log width of basic ‘and’ and ‘or’ gates in L_units
antenna(at location, T, A|L|T|S|D|P|F, U|D|L|R|degrees)
cct antenna, without stem for nonblank 2nd arg; A=aerial,
L=loop, T=triangle, S=diamond, D=dipole, P=phased,
F=fork; up, down, left, right, or angle from horizontal
(default 90) (Section 6)
arca(absolute chord linespec, ccw|cw, radius, modiï¬ers)
gen
arc with acute angle (obtuse if radius is negative), drawn
in a [ ] block
ArcAngle(position, position, position, radius, modiï¬ers, label)
gen Arc angle symbol drawn ccw at arg2. Arg4 is the radius
from arg2; arg5 contains line attributes, e.g., thick
linethick/2 ->; arg6 is an optional label at mid-arc
arcd(center, radius,start degrees,end degrees)
48
+
gen Arc deï¬nition (see arcr), angles in degrees (Section 3.3)
arcdimension_(arcspec,offset,label, D|H|W|blank width,tic offset,arrowhead )
gen like dimension_, for drawing arcs for dimensioning
diagrams; arrowhead=-> | <-. Uses the ï¬rst argument
as the attributes of an invisible arc: arc invis arg1.
Arg2 is the radial displacement (possibly negative) of the
dimension arrows. If arg3 is s_box(...) or rs_box(. . . )
and arg4=D|H|W then arg4 means: D: blank width is the
diagonal length of arg3; H: blank width is the height of
arg3 + textoffset*2; W: blank width is the width of
arg3 + textoffset*2; otherwise arg4 is the absolute
blank width
arcr(center,radius,start angle,end angle,modiï¬ers,ht)
gen Arc deï¬nition. If arg5 contains <- or -> then a midpoint
arrowhead of height equal to arg6 is added. Arg5 can
contain modiï¬ers (e.g. outlined "red"), for the arc and
arrowhead. Modiï¬ers following the macro affect the arc
only, e.g., arcr(A,r,0,pi_/2,->) dotted ->
(Section 3.3)
arcto(position 1,position 2,radius,[dashed|dotted])
gen line toward position 1 with rounded corner toward
position 2
arrester(linespec,chars, len[:arrowhead ht], ht[:arrowhead wid] )
cct Arg2 chars: G= spark gap (default), g= general (dots), E=
gas discharge, S= box enclosure, C= carbon block, A=
electrolytic cell,
H=
horn gap,
P=
protective gap,
s=
sphere
gap, F= ï¬lm element, M= multigap. Modiï¬ers in arg2: R=
right orientation, L= left orientation, D= 3-terminal
element for S, E only, with terminals A, B, G
(Section 4.2)
arrowline(linespec) cct
line (dotted, dashed permissible) with centred arrowhead
(Section 4.2)
AutoGate log Draw the tree for a gate as in the Autologix macro. No
inputs or external connections are drawn. The names of
the internal gate inputs are stacked in ‘AutoInNames’
assign3(var name,var name,var name,arg4,arg5,arg6)
gen Assigns $1 = arg4 if $1 is nonblank; similarly $2 = arg5
and $3 = arg6
Autologix(
Boolean function sequence
,[N[oconnect]][L[eftinputs]][R][V][M][;offset=
value
]
49
+
log Draw the Boolean expressions deï¬ned in function
notation using And, Or, Not, Buffer, Xor, Nand,
Nor, Nxor and variables, e.g.,
Autologix(And(Or(x1, x2),Or( x1,x2)));. The
Boolean functions are separated by semicolons (;).
Function outputs are aligned vertically but appending
:location attribute to a function can be used to place it.
Each unique variable var causes an input point Invar to
be deï¬ned. Preceding the variable by a Ëœ causes a not
gate to be drawn at the input. The inputs are drawn in a
row at the upper left by default. An L in arg2 draws the
inputs in a column at the left;
R
reverses the order of the
drawn inputs; V scans the expression from right to left
when listing inputs;
M
draws the left-right mirror image of
the diagram; and N draws only the function tree without
the input array. The inputs are labelled In1, In2, . . . and
the function outputs are Out1, Out2, . . . . Each variable
var corresponds also to one of the input array points with
label Invar. Setting offset=value displaces the drawn
input list in order to disambiguate the input connections
when L is used
B b_ gen blue color value
b_current(label,pos,In|Out,Start|End,frac)
cct
labelled branch-current arrow to frac between branch end
and body (Section 4.3)
basename_(string sequence, separator)
gen Extract the rightmost name from a sequence of names
separated by arg2 (default dot “.â€)
battery(linespec,n,R) cct n-cell battery: default 1 cell, R=reversed polarity
(Section 4.2)
beginshade(gray value) gen begin gray shading, see shade e.g., beginshade(.5);
closed line specs; endshade
bell( U|D|L|R|degrees, size) cct bell, In1 to In3 deï¬ned (Section 6)
below_ gen string position relative to current direction
bi_tr(linespec,L|R,P,E) cct left or right, N- or P-type bipolar transistor, without or
with envelope (Section 6.1)
bi_trans(linespec,L|R,chars,E)
cct bipolar transistor, core left or right; chars: BU=bulk line,
B=base line and label, S=Schottky base hooks,
uEn|dEn=emitters E0 to En, uE|dE=single emitter,
Cn|uCn|dCn=collectors C0 to Cn; u or d add an arrow,
C=single collector; u or d add an arrow, G=gate line and
location, H=gate line; L=L-gate line and location,
[d]D=named parallel diode, d=dotted connection,
[u]T=thyristor trigger line; arg 4 = E: envelope
(Section 6.1)
binary_(n, [m]) gen binary representation of n, left padded to m digits if the
second argument is nonblank
BOX_gate(inputs,output,swid,sht,label)
log output=[P|N], inputs=[P|N]. . ., sizes swid and sht in
L_units (default AND_wd = 7) (Section 9)
boxcoord(planar obj,x fraction,y fraction)
gen internal point in a planar object
50
+
boxdim(name,h|w|d|v,default) gen
evaluate, e.g. name
_w
if deï¬ned, else default if given, else
0 v gives sum of d and h values (Section 13)
bp__ gen big-point-size factor, in scaled inches, (*scale/72)
bswitch(linespec, [L|R],chars)
cct pushbutton switch R=right orientation (default L=left);
chars: O= normally open, C=normally closed
BUF_ht log basic buffer gate height in L_units
BUF_wd log basic buffer gate width in L_units
BUFFER_gate(linespec, [N|B], wid, ht, [N|P]*, [N|P]*, [N|P]*)
log basic buffer, dfault 1 input or as a 2-terminal element,
arg2:
N
=negated input,
B
=box gate; arg 5: normal (
P
) or
negated N) inputs labeled In1 (Section 9)
BUFFER_gen(chars,wd,ht,[N|P]*,[N|P]*,[N|P]*)
log general buffer, chars: T=triangle, [N]O=output location
Out
(
NO
draws circle
N_Out
);
[N]I, [N]N, [N]S, [N]NE,
[N]SE input locations; C=centre location. Args 4-6 allow
alternative deï¬nitions of respective In, NE, and SE
argument sequences
buzzer( U|D|L|R|degrees, size,[C])
cct buzzer, In1 to In3 deï¬ned, C=curved (Section 6)
C c_fet(linespec,R,P) cct left or right, plain or negated pin simpliï¬ed MOSFET
capacitor(linespec,chars,R, height, wid)
cct
capacitor, chars: F or blank=flat plate; dF flat plate with
hatched ï¬ll; C=curved-plate; dC=curved-plate with
variability arrowhead; CP=constant phase element;
E=polarized boxed plates; K=ï¬lled boxed plates;
M=unï¬lled boxes; M=one rectangular plate; P=alternate
polarized; + adds a polarity sign; +L polarity sign to the
left of drawing direction; arg3: R=reversed polarity; arg4
= height (defaults F: dimen_/3, C,P: dimen_/4, E,K:
dimen_/5); arg5 = wid (defaults F: height*0.3, C,P:
height*0.4, CP: height*0.8, E,K: height) (Section 4.2)
cbreaker(linespec,L|R,D|Th|TS)
cct circuit breaker to left or right, D=with dots; Th=thermal;
TS=squared thermal (Section 4.2)
ccoax(at location, M|F, diameter)
cct coax connector, M=male, F=female (Section 6)
cct_init cct initialize circuit-diagram environment (reads libcct.m4)
centerline_(linespec, thickness|color, minimum long dash len, short dash len, gap len
gen Technical drawing centerline
Cintersect(Pos1, Pos2, rad1, rad2, [R])
gen Upper (lower if arg5=R) intersection of circles at Pos1
and Pos2, radius rad1 and rad2
clabel(label,label,label,arg4,arg5)
cct Triple label along the drawing axis of an element in the
current direction (Section 4.4). Labels are placed at the
beginning, centre, or end of the last
[]
block (or a named
[] block). The labels are treated as math, but copied
literally if in double quotes or deï¬ned by sprintf. Arg4
can be
above, below, left,
or
right
to supplement the
default position. Arg5 is the optional name of a [] block
to be labelled and is last [] by default
51
+
cm__ gen absolute centiimetres
consource(linespec,V|I|v|i,R)cct voltage or current controlled source with alternate forms;
R=reversed polarity (Section 4.2)
contact(chars) cct single-pole contact: O= normally open, C= normally
closed (default), I= open circle contacts, P= three
position, R= right orientation, T= T contacts, U= U
contacts (Section 6)
contacts(count, chars) cct multiple ganged single-pole contacts: P= three position,
O= normally open, C= normally closed, D= dashed
ganging line over contact armatures I= open circle
contacts, R= right orientation, T= T contacts, U= U
contact lines parallel to drawing direction (Section 6)
contline(line) gen evaluates to continue if processor is dpic, otherwise to
ï¬rst arg (default line)
corner(line thickness,attributes,turn radians)
gen Mitre (default ï¬lled square) drawn at end of last line or
at a given position. arg1 default: current line thickness;
arg2: e.g.
outlined
string; if arg2 starts with
at
position
then a manhattan (right-left-up-down) corner is drawn;
arg3= radians (turn angle, +ve is ccw, default
Ï€/
2). The
corner is enclosed in braces in order to leave Here
unchanged unless arg2 begins with at (Section 7)
Cos(integer) gen cosine function, integer degrees
cosd(arg) gen cosine of an expression in degrees
Cosine( amplitude, freq, time, phase )
gen function a × cos(ωt + φ)
cross(at location) gen plots a small cross
cross3D(x1,y1,z1,x2,y2,z2) 3D cross product of two triples
crossover(linespec, L|R, Line1, ...)
cct line jumping left or right over named lines (Section 6.1)
crosswd_ gen cross dimension
csdim_ cct controlled-source width
D d_fet(linespec,R,P,E|S) cct left or right, N or P depletion MOSFET, envelope or
simpliï¬ed (Section 6.1)
dabove(at location) darrow above (displaced dlinewid/2)
dac(width,height,nIn,nN,nOut,nS)
cct DAC with deï¬ned width, height, and number of inputs
Ini, top terminals Ni, ouputs Outi, and bottom
terminals Si (Section 9)
darc(
center position
,
radius
,
start radians
,
end radians
,
dline thickness
,
arrowhead wid
,
ar-
rowhead ht, terminals)
darrow
See also
Darc
. CCW arc in
dline
style, with closed ends
or (dpic only) arrowheads. Permissible terminals: x-, -x,
x-x, ->, x->, <-, <-x, <-> where x means | or
(half-thickness line) !.
Darc(center position, radius, start radians, end radians, parameters)
darrow Wrapper for darc. CCW arc in dline style, with closed
ends or (dpic only) arrowheads. Semicolon-separated
parameters: thick=value, wid=value, ends= x-, -x, x-x,
->, x->, <-, <-x, <-> where x means | or (half-thickness
line) !.
52
+
Darlington(L|R,chars) cct Composite Darlington pair Q1 and Q2 with internal
locations E, B, C; Characters in arg2: E= envelope, P=
P-type, B1= internal base lead, D= damper diode, R1=
Q1 bias resistor; E1= ebox, R2= Q2 bias resistor; E1=
ebox, Z= zener bias diode (Section 6.1)
darrow_init darrow initialize darrow drawing parameters (reads darrow.m4)
Darrow(linespec, parameters) darrow Wrapper for darrow. Semicolon-separated parameters: S,
E
truncate at start or end by dline thickness/2;
thick=
val
(total thicknes, ie width); wid=val (arrowhead width);
ht=val (arrowhead height); ends= x-x or -x or x- where
x is ! (half-width line) or | (full-width line).
darrow(linespec, t,t,width,arrowhd wd,arrowhd ht,parameters)
darrow
See also
Darrow
. double arrow, truncated at beginning or
end, speciï¬ed sizes, with arrowhead or closed stem.
parameters= x
-
or
->
or x
->
or
<-
or
<-
x or
<->
where x
is | or !. The !- or -! parameters close the stem with
half-thickness lines to simplify butting to other objects.
dashline(linespec,thickness|color|<->, dash len, gap len,G)
gen dashed line with dash at end (G ends with gap)
dbelow(at location) darrow below (displaced dlinewid/2)
dcosine3D(i,x,y,z) 3D extract i-th entry of triple x,y,z
DCsymbol(at position, len, ht, U|D|L|R|degrees)
cct A DC symbol (a dashed line below a solid line). The
current drawing direction is default, otherwise Up, Down,
Left, Right, or at degrees slant; e.g., source(up_
dimen_); { DCsymbol(at last []„,R) } (Section 4.2)
delay_rad_ cct delay radius
delay(linespec,size) cct delay element (Section 4.2)
deleminit_ darrow sets drawing direction for dlines
Deltasymbol(at position,keys, U|D|L|R|degrees) (default U for up)
cct Delta symbol for power-system diagrams. keys:
size=expression
Demux(n,label, [L][B|H|X][N[n]|S[n]][[N]OE], wid,ht)
log binary multiplexer, n inputs, L reverses input pin
numbers, B displays binary pin numbers, H displays
hexadecimal pin numbers, X do not print pin numbers,
N[
n
]
puts Sel or Sel0 .. Sel
n
at the top (i.e., to the left of
the drawing direction), S[n] puts the Sel inputs at the
bottom (default) OE (N=negated) OE pin (Section 9)
dend(at location) darrow close (or start) double line
dfillcolor darrow dline ï¬ll color (default white)
diff_(a,b) gen difference function
diff3D(x1,y1,z1,x2,y2,z2) 3D difference of two triples
dimen_ cct size parameter for scaling circuit element bodies
(Section 11.1)
dimension_(linespec,offset,label, D|H|W|blank width,tic offset,arrowhead )
gen macro for dimensioning diagrams; arrowhead=-> | <-
diode(linespec,B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,[R][E])
53
+
cct diode: B=bi-directional, CR=current regulator, D=diac,
G=Gunn, L=open form with centre line, LE[R]=LED
[right], P[R]=photodiode [right], S=Schottky,
Sh=Shockley, T=tunnel, V=varicap, v=varicap (curved
plate),
w
=varicap (reversed polarity),
Z
=zener; appending
K to arg 2 draws open arrowheads; arg 3: R=reversed
polarity, E=enclosure (Section 4.2)
dir_ darrow
used for temporary storage of direction by darrow macros
distance(Position 1, Position2)
gen distance between named positions
distance(position, position) gen distance between positions
dlabel(long,lat,label,label,label,chars)
cct general triple label; chars: x (drawing direction)
displacement is from the centre of the last line rather than
the centre of the last
[ ]
; L,R,A,B align labels ljust, rjust,
above, or below (absolute) respectively (Section 4.4)
dleft darrow double line left turn
Dline(linespec, parameters) darrow
Wrapper for
dline
. Semicolon-separated parameters:
S
,
E
truncate at start or end by dline thickness/2; thick=val
(total thicknes, ie width); ends= x-x or -x or x- where x
is ! (half-width line) or | (full-width line).
dline(linespec,t,t,width,parameters)
darrow See also Dline. Double line, truncated by half width at
either end, closed at either or both ends. parameters=
x-x or -x or x- where x is ! (half-width line) or |
(full-width line).
dlinewid darrow width of double lines
dljust(at location) darrow ljust (displaced dlinewid/2)
dn_ gen down with respect to current direction
dna_ cct internal character sequence that speciï¬es which
subcomponents are drawn
dot(at location,radius,ï¬ll) gen ï¬lled circle (third arg= gray value: 0=black, 1=white)
dot3D(x1,y1,z1,x2,y2,z2) 3D dot product of two triples
dotrad_ gen dot radius
down_ gen sets current direction to down (Section 5)
dright darrow double arrow right turn
drjust(at location) darrow rjust (displaced dlinewid/2)
dswitch(linespec,L|R,W[ud]B[K]chars)
54
+
cct SPST switch left or right, W=baseline, B=contact blade,
dB=contact blade to the right of drawing direction, Bm
= mirror contact blade, Bo = contact blade more widely
open, Cb = circuit-breaker function, Co = contactor
function, C = external operating mechanism, D = circle
at contact and hinge, (dD = hinge only, uD = contact
only) E = emergency button, EL = early close (or late
open), LE = late close (or early open), F = fused, H =
time delay closing, uH = time delay opening, HH = time
delay opening and closing, K=vertical closing contact line,
L = limit, M = maintained (latched), MM = momentary
contact on make, MR = momentary contact on release,
MMR = momentary contact on make and release, O =
hand operation button, P = pushbutton, Pr[T|M] =
proximity (touch-sensitive or magnetically controlled), Th
= thermal control linkage, Tr = tripping, Y = pull switch,
Z = turn switch (Section 4.2)
dtee([L|R]) darrow double arrow tee junction with tail to left, right, or
(default) back along current direction
dtor_ gen degrees to radians conversion constant
dturn(degrees ccw) darrow turn dline arg1 degrees left (ccw)
E E__ gen the constant e
e_ gen .e relative to current direction
e_fet(linespec,R,P,E|S) cct left or right, N or P enhancement MOSFET, normal or
simpliï¬ed, without or with envelope (Section 6.1)
earphone( U|D|L|R|degrees, size)
cct earphone, In1 to In3 deï¬ned (Section 6)
ebox(linespec,lgth,wdth,ï¬ll value, box attributes)
cct
two-terminal box element with adjustable dimensions and
ï¬ll value 0 (black) to 1 (white). lgth (length) and wdth
(width) are relative to the direction of linespec.
Alternatively, argument 1 is the linespec and argument 2
is a semicolon-separated sequence of key=value terms.
The possible keys are lgth, wdth, text, box, e.g.,
lgth=0.2; text="XX"; box=shaded "green"
(Section 4.2)
elchop(Name1,Name2) gen chop for ellipses: evaluates to chop r where r is the
distance from the centre of ellipse Name1 to the
intersection of the ellipse with a line to location Name2;
e.g., line from A to E elchop(E,A)
eleminit_(linespec) cct internal line initialization
elen_ cct default element length
em_arrows([N|I|E][D],angle,length)
cct radiation arrows, N=nonionizing, I=ionizing, E=simple;
D=dot (Section 4.2)
endshade gen end gray shading, see beginshade
Equidist3(Pos1, Pos2, Pos3, Result, distance)
gen Calculates location named Result equidistant from the
ï¬rst three positions, i.e. the centre of the circle passing
through the three positions. If arg5 is nonblank, it is
equated to the radius.
55
+
expe gen exponential, base e
F f_box(boxspecs,text,expr1,· · ·)gen like s_box but the text is overlaid on a box of identical
size. If there is only one argument then the default box is
invisible and ï¬led white (Section 13)
Fector(x1,y1,z1,x2,y2,z2) 3D vector projected on current view plane with top face of
3-dimensonal arrowhead normal to x2,y2,z2
Fe_fet(linespec,R,chars) cct
FET with superimposed ferroelectric symbol. Args 1 to 3
are as for the mosfet macro (Section 6.1)
FF_ht cct flipflop height parameter in L_units
FF_wid cct flipflop width parameter in L_units
fill_(number) gen ï¬ll macro, 0=black, 1=white (Section 6.1)
fitcurve(V,n,[e.g. dotted],m (default 0))
gen Draw a spline through positions V[m], ldots V[n]: Works
only with dpic.
FlipFlop(D|T|RS|JK,label,boxspec,pinlength)
log flip-flops, boxspec=e.g. ht x wid y (Section 9)
FlipFlop6(label,spec,boxspec) log This macro (6-input flip-flops) has been superseded by
FlipFlopX and may be deleted in future.
spec=[[n]NQ][[n]Q][[n]CK][[n]PR][lb]
[[n]CLR][[n]S][[n].|D|T|R] to include and negate
pins, lb to print labels
FlipFlopJK(label, spec,boxspec)
log This macro (JK flip-flop) has been superseded by
FlipFlopX and may be deleted in future. Similar to
FlipFlop6.
FlipFlopX(boxspec, label, leftpins, toppins, rightpins, bottompins, pinlength)
log General flipflop. Arg 1 modiï¬es the box (labelled Chip)
default speciï¬cation. Each of args 3 to 6 is null or a
string of pinspecs separated by semicolons (
;
). A Pinspec
is either empty or of the form
[pinopts]:[label[:Picname]]. The ï¬rst colon draws the
pin. Pins are placed top to bottom or left to right along
the box edges with null pinspecs counted for placement.
Pins are named by side and number by default; eg W1,
W2, ..., N1, N2, ..., E1, ..., S1, ... ; however,
if
:
Picname is present in a pinspec then Picname replaces
the default name. A pinspec label is text placed at the
pin base. Semicolons are not allowed in labels; use, e.g.,
\char59{} instead. To put a bar over a label, use
lg_bartxt(label). The pinopts are [N|L|M][E]; N=pin
with not circle;
L
=active low out;
M
=active low in;
E
=edge
trigger (Section 9). Optional arg 7 is the length of pins
for_(start,end,increment,‘actions’)
gen integer for loop with index variable m4x (Section 8)
foreach_(‘variable’,actions,value1, value2, . . .)
gen Clone of Loopover_ by a different name: Repeat actions
with variable set successively to value1, value2,
. . .
, setting
macro m4Lx to 1, 2, . . ., terminating if variable is nul
FTcap(chars) cct Feed-through capacitor; example of a composite element
derived from a two-terminal element. Deï¬ned points:
.Start, .End, .C .T1 .T2 T Arg 1: (default) A= type A,
B= type B, C= type C (Section 6)
56
+
fuse(linespec, type, wid, ht) cct fuse symbol, type= A|B|C|D|S|HB|HC|SB or dA=D
(Section 4.2)
G g_ gen green color value
G_hht log gate half-height in L_units
g_fet(linespec,R,P,shade spec)cct left or right, N or P graphene FET, without or with
shading (Section 6.1)
gap(linespec,ï¬ll,A) cct gap with (ï¬lled) dots, A=chopped arrow between dots
(Section 4.2)
gen_init gen
initialize environment for general diagrams (customizable,
reads libgen.m4)
glabel_ cct internal general labeller
gpolyline_(fraction,location, ...)
gen internal to gshade
graystring(gray value) gen
evaluates to a string compatible with the postprocessor in
use to go with colored, shaded, or outlined attributes.
(PSTricks, metapost, pgf-tikz, pdf, postscript, svg). The
argument is a fraction in the range [0, 1]; see rgbstring
grid_(x,y) log absolute grid location
ground(at location, T|stem length, N|F|S|L|P[A]|E, U|D|L|R|degrees)
cct ground, without stem for 2nd arg = T; N=normal,
F=frame, S=signal, L=low-noise, P=protective,
PA=protective alternate, E=European; up, down, left,
right, or angle from horizontal (default -90) (Section 6)
gshade(gray value,A,B,...,Z,A,B)
gen (Note last two arguments). Shade a polygon with named
vertices, attempting to avoid sharp corners
gyrator(box specs,space ratio,pin lgth,[N][V])
cct Gyrator two-port wrapper for nport, N omits pin dots; V
gives a vertical orientation (Section 6)
H H_ht log hysteresis symbol dimension in L_units
Header(1|2,rows,wid,ht,box attributes)
log
Header block with 1 or 2 columns and square Pin 1: arg1
= number of columns; arg2 = pins per column; arg3,4 =
custom wid, ht; arg5 = e.g., fill_(0.9) (Section 6)
HeaderPin(location, type, Picname,n|e|s|w,length)
log General pin for Header macro; arg 4 speciï¬es pin
direction with respect to the current drawing direction)
hatchbox(boxspec,hashsep,hatchspec)
gen Manhattan box with 45 degree hatching, e.g.,
hatchbox(outlined "blue"„dashed outlined
"green" thick 0.4)
heater(linespec, ndivisions, wid, ht)
cct heater element (Section 4.2)
hex_digit(n) gen hexadecimal digit for 0 ≤ n < 16
hexadecimal_(n, [m]) gen hexadecimal representation of n, left padded to m digits
if the second argument is nonblank
hlth gen current line half thickness in drawing units
hoprad_ cct hop radius in crossover macro
ht_ gen height relative to current direction
57
+
I ifdpic(if true,if false) gen test if dpic has been speciï¬ed as pic processor
ifgpic(if true,if false) gen test if gpic has been speciï¬ed as pic processor
ifinstr(string,string,if true,if false)
gen
test if the second argument is a substring of the ï¬rst; also
ifinstr(string,string,if true,string,string,if true, . . .
if false)
ifmfpic(if true,if false) gen test if mfpic has been speciï¬ed as pic post-processor
ifmpost(if true,if false) gen test if MetaPost has been speciï¬ed as pic post-processor
ifpgf(if true,if false) gen test if Tikz PGF has been speciï¬ed as pic post-processor
ifpostscript(if true,if false) gen test if Postscript (dpic -r) has been speciï¬ed as pic
output format
ifpsfrag(if true,if false) gen Test if either psfrag or psfrag_ has been deï¬ned. For
postscript with psfrag strings, one or the other should be
deï¬ned prior to or at the beginning of the diagram
ifpstricks(if true,if false) gen test if PSTricks has been speciï¬ed as post-processor
ifroff(if true,if false) gen test if troff or groff has been speciï¬ed as post-processor
ifxfig(if true,if false) gen test if Fig 3.2 (dpic -x) has been speciï¬ed as pic output
format
igbt(linespec,L|R,[L][[d]D]) cct left or right IGBT, L=alternate gate type, D=parallel
diode, dD=dotted connections
in__ gen absolute inches
inductor(linespec, W|L, cycles, M[n]|P[n]|K[n], loop wid)
cct inductor, arg2: narrow (default), W=wide, L=looped;
arg3: number of arcs or cycles (default 4); arg4:
M=magnetic core, P=powder (dashed) core,
K=long-dashed core, n=integer (default 2) number of core
lines named M4Core1, M4Core2, . . .; arg5: loop width
(default L,W: dimen_/5; other: dimen_/8) (Section 4.2)
inner_prod(linear obj,linear obj)
gen inner product of (x,y) dimensions of two linear objects
Int_ gen corrected (old) gpic int() function
integrator(linespec,size) cct integrating ampliï¬er (Section 4.2)
intersect_(line1.start,line1.end, line2.start,line2.end)
gen intersection of two lines
Intersect_(Name1,Name2) gen intersection of two named lines
IOdefs(linespec,label,[P|N]*,L|R)
log
Deï¬ne locations label
1
,
. . .
label
n
along the line;
P
= label
only; N=with NOT_circle; R=circle to right of current
direction
J j_fet(linespec,L|R,P,E) cct left or right, N or P JFET, without or with envelope
(Section 6.1)
jack(U|D|L|R|degrees,chars) cct arg1: drawing direction; string arg2: R=right orientation,
one or more L[M][B] for L and auxiliary contacts with
make or break points; S[M][B] for S and auxiliary
contacts (Section 6)
K KelvinR(cycles,[R],cycle wid) cct
IEEE resistor in a
[ ]
block with Kelvin taps T1 and T2
(Section 6)
L L_unit log logic-element grid size
lamp(linespec, [R]) cct Two-terminal incandescent lamp (Section 4.2)
58
+
larrow(label,->|<-,dist) cct arrow dist to left of last-drawn 2-terminal element
(Section 4.3)
lbox(wid, ht, attributes) gen box oriented in current direction, arg 3= e.g. dashed
shaded "red"
LCintersect(line name, Centre, rad, [R])
gen First (second if arg4 is R) intersection of a line with a
circle
LCtangent(Pos1, Centre, rad, [R])
gen Left (right if arg4=R) tangent point of line from Pos1 to
circle at Centre with radius arg3
left_ gen left with respect to current direction (Section 5)
length3D(x,y,z) 3D Euclidean length of triple x,y,z
LEintersect(line name, Centre, ellipse wid, ellipse ht, [R])
gen First (second if arg5 is R) intersection of a line with an
ellipse
LEtangent(Pos1, Centre, ellips wid, ellipse ht [R])
gen Left (right if arg5=R) tangent point of line from Pos1 to
ellipse at Centre with given width and height
lg_bartxt log draws an overline over logic-pin text (except for xï¬g)
lg_pin(location, label, Picname, n|e|s|w[L|M|I|O][N][E], pinno, optlen)
log comprehensive logic pin; label= text (indicating logical
pin function, usually), Picname= pic label for referring to
the pin (line), n|e|s|w=orientation (north, south, east,
west), L=active low out, M=active low in, I=inward
arrow, O=outward arrow, N=negated, E=edge trigger
lg_pintxt log reduced-size text for logic pins
lg_plen log logic pin length in in L_units
LH_symbol([U|D|L|R|degrees][I])
log logic-gate hysteresis symbol; I=inverted
lin_ang(line-reference) gen the angle from .start to .end of a line or move
lin_leng(line-reference) gen
length of a line, equivalent to line-reference
.len
with dpic
linethick_(number) gen set line thickness in points
ljust_ gen ljust with respect to current direction
llabel(label,label,label,arg4,arg5)
cct Triple label on the left of an element with respect to the
current direction (Section 4.4). Labels are placed at the
beginning, centre, or end of the last
[]
block (or a named
[] block). The labels are treated as math, but copied
literally if in double quotes or deï¬ned by sprintf. Arg4
can be
above, below, left,
or
right
to supplement the
default position. Arg5 is the optional name of a [] block
to be labelled and is last [] by default
loc_(x, y) gen location adjusted for current direction
log_init log initialize environment for logic diagrams (customizable,
reads liblog.m4)
log10E_ gen constant log
10
(e)
loge gen logarithm, base e
Loopover_(‘variable’,actions,value1, value2, . . .)
gen Repeat actions with variable set successively to value1,
value2,
. . .
, setting macro
m4Lx
to 1, 2,
. . .
, terminating if
variable is nul
59
+
lp_xy log coordinates used by lg_pin
lpop(xcoord, ycoord, radius, ï¬ll, zero ht)
gen for lollipop graphs: ï¬lled circle with stem to
(xcoord,zeroht)
lswitch( linespec, L|R, chars )
cct knife switch R=right orientation (default L=left);
chars=[O|C][D][K][A] O=opening arrow; C=closing
arrow; D=dots; K=closed switch; A=blade arrowhead
(Section 4.2)
lt_ gen left with respect to current direction
LT_symbol(U|D|L|R|degrees) log logic-gate triangle symbol
lthick gen current line thickness in drawing units
M m4_arrow(linespec,ht,wid) gen arrow with adjustable head, ï¬lled when possible
m4dupstr(string,n,‘name’) gen Deï¬nes name as n concatenated copies of string.
m4lstring(arg1,arg2) gen
expand arg1 if it begins with
sprintf
or
"
, otherwise arg2
m4xpand(arg) gen Evaluate the argument as a macro
m4xtract(‘string1’,string2) gen delete string2 from string1, return 1 if present
manhattan gen sets direction cosines for left, right, up, down
Max(arg, arg, . . .) gen Max of an arbitrary number of inputs
memristor(linespec, wid, ht) cct memristor element (Section 4.2)
microphone( A|U|D|L|R|degrees, size)
cct
microphone; if arg1 = A: upright mic, otherwise arg1 sets
direction of standard microphone with In1 to In3 deï¬ned
(Section 6)
Min(arg, arg, . . .) gen Min of an arbitrary number of inputs
Mitre_(Line1,Line2,length,line attributes)
gen e.g., Mitre_(L,M) draws angle at intersection of lines L
and M with legs of length arg3 (default linethick
bp__/2); sets Here to intersection (Section 7)
mitre_(Position1,Position2,Position3,length,line attributes)
gen
e.g.,
mitre_(A,B,C)
draws angle ABC with legs of length
arg4 (default
linethick bp__/2
); sets
Here
to Position2
(Section 7)
mm__ gen absolute millimetres
mosfet(linespec,L|R,chars,E) cct MOSFET left or right, included components deï¬ned by
characters, envelope. arg 3 chars: [u][d]B: center bulk
connection pin; D: D pin and lead; E: dashed substrate;
F: solid-line substrate; [u][d]G: G pin to substrate at
source; [u][d]H: G pin to substrate at center; L: G pin
to channel (obsolete); [u][d]M: G pin to channel; u: at
drain end; d: at source end
[u][d]M
n
:
multiple gates G0
to Gn Py: parallel diode; Pz: parallel zener diode; Q:
connect B pin to S pin;
R:
thick channel;
[u][d]S:
S pin
and lead u: arrow up; d: arrow down; [d]T: G pin to
center of channel d: not circle; X: XMOSFET terminal;
Z: simpliï¬ed complementary MOS (Section 6.1)
Mux_ht cct Mux height parameter in L_units
Mux_wid cct Mux width parameter in L_units
Mux(n,label, [L][B|H|X][N[n]|S[n]][[N]OE], wid,ht)
60
+
log binary multiplexer, n inputs, L reverses input pin
numbers, B display binary pin numbers, H display
hexadecimal pin numbers, X do not print pin numbers,
N[
n
]
puts Sel or Sel0 .. Sel
n
at the top (i.e., to the left of
the drawing direction), S[n] puts the Sel inputs at the
bottom (default) OE (N=negated) OE pin (Section 9)
Mx_pins log max number of gate inputs without wings
N n_ gen .n with respect to current direction
N_diam log diameter of ‘not’ circles in L_units
N_rad log radius of ‘not’ circles in L_units
NAND_gate(n,N) log ‘nand’ gate, 2 or n inputs; N=negated input. Otherwise,
arg1 can be a sequence of letters P|N to deï¬ne normal or
negated inputs. (Section 9)
ne_ gen .ne with respect to current direction
NeedDpicTools gen executes copy "HOMELIB_/dpictools.pic" if the ï¬le
has not been read
neg_ gen unary negation
NOR_gate(n,N) log ‘nor’ gate, 2 or n inputs; N=negated input. Otherwise,
arg1 can be a sequence of letters P|N to deï¬ne normal or
negated inputs. (Section 9)
norator(linespec,width,ht) cct norator two-terminal element (Section 4.2)
NOT_circle log ‘not’ circle
NOT_gate(linespec,[B][N|n],wid,height)
log ‘not’ gate. When linespec is blank then the element is
composite and In1, Out, C, NE, and SE are deï¬ned;
otherwise the element is drawn as a two-terminal element.
arg2: B=box gate, N=not circle at input and output,
n=not circle at input only (Section 9)
NOT_rad log ‘not’ radius in absolute units
NPDT(npoles,[R]) cct Double-throw switch; npoles: number of poles; R= right
orientation with respect to drawing direction (Section 6)
nport(box spec;other commands, nw,nn,ne,ns,space ratio,pin lgth,style, other commands)
cct Default is a standard-box twoport. Args 2 to 5 are the
number of ports to be drawn on w, n, e, s sides. The port
pins are named by side, number, and by a or b pin, e.g.,
W1a, W1b, W2a, . . . Arg 6 speciï¬es the ratio of port
width to interport space (default 2), and arg 7 is the pin
length. Set arg 8 to N to omit the dots on the port pins.
Arguments 1 and 9 allow customizations (Section 6)
nterm(box spec;other commands, nw,nn,ne,ns,pin lgth,style, other commands)
cct
n-terminal box macro (default three pins). Args 2 to 5 are
the number of pins to be drawn on W, N, E, S sides. The
pins are named by side and number, e.g. W1, W2, N1,
. . .
Arg 6 is the pin length. Set arg 7 to N to omit the dots
on the pins. Arguments 1 and 8 allow customizations, e.g.
nterm(,,,,,,N,"$a$" at Box.w ljust,"$b$" at
Box.e rjust, "$c$" at Box.s above)
nullator(linespec,width,ht) cct nullator two-terminal element (Section 4.2)
nw_ gen .nw with respect to current direction
61
+
NXOR_gate(n,N) log ‘nxor’ gate, 2 or n inputs; N=negated input. Otherwise,
arg1 can be a sequence of letters P|N to deï¬ne normal or
negated inputs. (Section 9)
O opamp(linespec,label,label,size,chars, other commands)
cct operational ampliï¬er with −, + or other internal labels,
speciï¬ed size. chars: P= add power connections, R= swap
In1, In2 labels,
T=
truncated point. The internally deï¬ned
positions are W, N, E, S, Out, NE, SE, In, In2, and the
(obsolete) positions E1 = NE, E2 = SE. The ï¬rst and last
arguments allow added customizations (Section 6)
open_arrow(linespec,ht,wid) gen arrow with adjustable open head
OR_gate(n,N) log
‘or’ gate, 2 or n inputs; N=negated input. Otherwise, arg1
can be a sequence of letters P|N to deï¬ne normal or
negated inputs. (Section 9)
OR_gen(n,chars,[wid,[ht]]) log general OR gate: n=number of inputs (0 ≤ n ≤ 16);
chars: B=base and straight sides; A=Arcs;
[N]NE,[N]SE,[N]I,[N]N,[N]S=inputs or circles; [N]P=XOR
arc; [N]O=output; C=center. Otherwise, arg1 can be a
sequence of letters
P|N
to deï¬ne normal or negated inputs.
OR_rad log radius of OR input face in L_units
P parallel_(‘elementspec’,‘elementspec’. . .)
cct Parallel combination of two-terminal elements in a [ ]
block. Each argument is a quoted elementspec of the form
[Sep=val;][Label:] element; [attributes] where an
attribute is of the form [llabel(. . .);] |
[rlabel(. . .);] | [b_current(. . .);]. An argument
may also be series_(. . .) or parallel_(. . .) without
attributes or quotes. Sep=val; in the ï¬rst branch sets the
default separation of all branches to val; in a later
element Sep=val; applies only to that branch. An element
may have normal arguments but should not change the
drawing direction. (Section 5.1)
proximity(linespec) cct proximity detector (= consource(,P))
pc__ gen absolute points
pvcell(linespec, width, height) cct PV cell
px__ gen absolute SVG screen pixels
pconnex(R|L|U|D|degrees,chars)
cct power connectors, arg 1: drawing direction; chars:
R=right orientation, M|F= male, female, A|AC=115V, 3
prong, B=box, C=circle, P= PC connector, D= 2-pin
connector, G|GC= GB 3-pin, J= 110V 2-pin (Section 6)
pi_ gen π
plug(U|D|L|R|degrees,[2|3][R])
cct arg1: drawing direction; string arg2: R right orientation,
2|3 number of conductors (Section 6)
pmod(integer, integer) gen +ve mod(M, N) e.g., pmod(−3, 5) = 2
point_(angle) gen (radians) set direction cosines
perpto(Pos1, Line, Point) gen Point is the label for the point on Line of the
perpendicular from Point to Line.
PerpTo(Pos1, Pos2, Pos3) gen The point between Pos2 and Pos3 of intersection of the
perpendicular to Pos1, i.e., the perpendicular projection
of Pos1 onto the line from Pos2 to Pos3.
62
+
Point_(integer) gen sets direction cosines in degrees (Section 5)
polar_(x,y) gen rectangular-to polar conversion
langle(Start, End) gen
Angle in radians from horizontal of the line from Start to
End.
potentiometer(linespec,cycles,fractional pos,length,· · ·)
cct resistor with taps T1, T2, . . . with speciï¬ed fractional
positions and lengths (possibly neg) (Section 6)
print3D(x,y,z) 3D write out triple for debugging
prod_(a,b) gen binary multiplication
project(x,(y,(z) 3D 3D to 2D projection onto the plane perpendicular to the
view vector with angles deï¬ned by setview(azim, elev)
psset_(PSTricks settings) gen set PSTricks parameters
pt__ gen T
E
X point-size factor, in scaled inches, (*scale/72.27)
PtoL(position, U|D|L|R|degrees, length)
gen
Evaluates to
from
position
to
position
+ Rect_(
length,
angle) from the polar-coordinate data in the arguments
ptrans(linespec, [R|L]) cct pass transistor; L= left orientation (Section 6.1)
R r_ gen red color value
rarrow(label,->|<-,dist) cct arrow dist to right of last-drawn 2-terminal element
(Section 4.3)
Rect_(radius,angle) gen (deg) polar-to-rectangular conversion
rect_(radius,angle) gen (radians) polar-rectangular conversion
reed(linespec, width, height, box attribues, [R][C])
cct Enclosed reed two-terminal contact; R=right orientation;
C=closed contact; e.g., reed(„dimen_/5,shaded
"lightgreen" (Section 6)
relay(number of poles, chars) cct relay: n poles (default 1), chars: O=normally open,
C=normally closed, P=three position, default double
throw, L=drawn left (default), R=drawn right,
Th
=thermal. Argument 3=
[L|R]
is deprecated but works
for backward compatibility (Section 6)
relaycoil(chars, wid, ht, R|L|U|D|degrees)
cct chars: X=or default: external lines from A2 and B2;
AX=external lines at positions A1,A3; BX=external lines
at positions B1,B3; NX=no lines at positions
A1,A2,A3,B1,B2,B3; SO=slow operating; SOR=slow
operating and release; SR=slow release; HS=high speed;
NAC=unaffected by AC current; AC AC=current;
ML=mechanically latched; PO=polarized; RM=remanent;
RH=remanent; TH=thermal; EL=electronic (Section 6)
resetdir_ gen resets direction set by setdir_
resetrgb gen cancel r_, g_, b_ color deï¬nitions
resistor(linespec,n|E,chars, cycle wid)
cct resistor, n cycles (default 3), chars: AC=general complex
element, E=ebox, ES=ebox with slash, Q=offset,
H
=squared,
N
=IEEE,
B
=not burnable,
V
=varistor variant,
R=right-oriented, cycle width (default dimen_/6)
(Section 4.2)
resized(factor,‘macro name’,args)
cct scale the element body size by factor
63
+
restorem4dir([‘stack name’]) gen Restore m4 direction parameters from the named stack;
default ‘savm4dir_’
reversed(‘macro name’,args) cct reverse polarity of 2-terminal element
rgbdraw(color triple, drawing commands)
gen color drawing for PSTricks, pgf, MetaPost, SVG
postprocessors; (color entries are 0 to 1 except for SVG
entries which are 0 to 255), see setrgb (Section 6.1).
Exceptionally, the color of SVG arrows other than the
default black has to be deï¬ned using the
outlined
string
and shaded string constructs.
rgbfill(color triple, closed path)
gen ï¬ll with arbitrary color (color entries are 0 to 1 except
SVG entries which are 0 to 255); see
setrgb
(Section 6.1)
rgbstring(color triple or color name)
gen
evaluates to a string compatible with the postprocessor in
use to go with colored, shaded, or outlined attributes.
(PSTricks, metapost, pgf-tikz, pdf, postscript, svg). The
arguments are fractions in the range [0, 1]; For example,
box outlined rgbstring(0.1,0.2,0.7) shaded
rgbstring(0.75,0.5,0.25). For those postprocessors
that allow it, there can be one argument which is the
name of a deï¬ned color
right_ gen set current direction right (Section 5)
RightAngle(Pos1, Pos2, Pos3, line len, attributes)
gen Draw a right-angle symbol at Pos2, of size given by arg4.
Arg5 = line attributes, e.g., outlined "gray"
rjust_ gen right justify with respect to current direction
rlabel(label,label,label,arg4,arg5)
cct
Triple label on the right of an element with respect to the
current direction (Section 4.4). Labels are placed at the
beginning, centre, or end of the last
[]
block (or a named
[] block). The labels are treated as math, but copied
literally if in double quotes or deï¬ned by sprintf. Arg4
can be
above, below, left,
or
right
to supplement the
default position. Arg5 is the optional name of a [] block
to be labelled and is last [] by default
rot3Dx(radians,x,y,z) 3D rotates x,y,z about x axis
rot3Dy(radians,x,y,z) 3D rotates x,y,z about y axis
rot3Dz(radians,x,y,z) 3D rotates x,y,z about z axis
Rot_(position, degrees) gen rotate position by degrees
rot_(x, y, angle) gen rotate x,y by theta radians
rotbox(wid,ht,type,[r|t=val]) gen box oriented in current direction in [ ] block; type= e.g.
dotted shaded "green". Deï¬ned internal locations: N,
E, S, W (and NE, SE, NW, SW if arg4 is blank). If arg4
is
r=
val then corners have radius val. If arg4 is
t=
val then
a spline with tension val is used to draw a “superellipse,â€
and the bounding box is then only approximate.
rotellipse(wid,ht,type) gen ellipse oriented in current direction in [ ] block; e.g.
Point_(45); rotellipse(,,dotted fill_(0.9)).
Deï¬ned internal locations: N, S, E, W.
round(at location,line thickness,attributes)
64
+
gen ï¬lled circle for rounded corners; attributes=colored
"gray" for example; leaves Here unchanged if arg1 is
blank (Section 7)
rpoint_(linespec) gen set direction cosines
rpos_(position) gen Here + position
rrot_(x, y, angle) gen Here + vrot_(x, y, cos(angle), sin(angle))
rs_box(text,expr1,· · ·) gen like s_box but the text is rotated by text_ang (default
90) degrees (Section 13), (Section 14)
rsvec_(position) gen Here + position
rt_ gen right with respect to current direction
rtod__ gen constant, degrees/radian
rtod_ gen constant, degrees/radian
rvec_(x,y) gen location relative to current direction
S s_ gen .s with respect to current direction
s_box(text,expr1,· · ·) gen generate dimensioned text string using \boxdims from
boxdims.sty
. Two or more args are passed to
sprintf()
(default 90) degrees (Section 13)
s_dp(name,default) gen depth of the most recent (or named) s_box (Section 13)
s_ht(name,default) gen
height of the most recent (or named)
s_box
(Section 13)
s_init(name) gen initialize s_box string label to name which should be
unique (Section 13)
s_name gen the value of the last s_init argument (Section 13)
s_wd(name,default) gen width of the most recent (or named) s_box (Section 13)
savem4dir([‘stack name’]) gen Stack m4 direction parameters in the named stack
(default ‘savm4dir_’)
sbs(linespec, chars, label) cct Wrapper to place an SBS thyristor as a two-terminal
element with
[ ]
block label given by the third argument
(Section 6.1)
sc_draw(dna string, chars, iftrue, iffalse)
cct test if chars are in string, deleting chars from string
scr(linespec, chars, label) cct Wrapper to place an SCR thyristor as a two-terminal
element with
[ ]
block label given by the third argument
(Section 6.1)
scs(linespec, chars, label) cct Wrapper to place an SCS thyristor as a two-terminal
element with
[ ]
block label given by the third argument
(Section 6.1)
se_ gen .se with respect to current direction
series_(elementspec, elementspec, . . .)
cct Series combination in a [] block of elements with
shortened default length. An elementspec is of the form
[Label:] element; [attributes], where an attribute is
of the form [llabel(. . .);] | [rlabel(. . .);]
[b_current(. . .);]. Internal points Start, End, and C
are deï¬ned (Section 5.1)
setdir_(R|L|U|D|degrees, default U|D|R|L|degrees)
gen
store drawing direction and set it to up, down, left, right,
or angle in degrees (reset by resetdir_). The directions
may be spelled out, i.e., Right, Left, . . . (Section 5.1)
65
+
setrgb(red value, green value, blue value,[name])
gen
deï¬ne colour for lines and text, optionally named (default
lcspec); svg values are integers from 0 to 255
(Section 6.1)
setkey_(string, key, default,[N])
gen Key-value deï¬nition. The string contains
semicolon-separated terms of the form key=value. Then
macro m4key is deï¬ned using pushdef to be (value) but
if arg4 is nonbland, the parentheses are omitted.
setview(azimuth degrees,elevation degrees)
3D set projection viewpoint
sfg_init(default line len, node rad, arrowhd len, arrowhd wid), (reads libcct.m4)
cct initialization of signal flow graph macros
sfgabove cct like above but with extra space
sfgarc(linespec,text,text justiï¬cation,cw|ccw, height scale factor)
cct directed arc drawn between nodes, with text label and a
height-adjustment parameter
sfgbelow cct like below but with extra space
sfgline(linespec,text,text justiï¬cation)
cct directed straight line chopped by node radius, with text
label
sfgnode(at location,text,above|below,circle options)
cct small circle default white interior, with text label. The
default label position is inside if the diameter is bigger
than textht and textwid; otherwise it is sfgabove.
Options such as ï¬ll or line thickness can be given.
sfgself(at location, U|D|L|R|degrees, text, text justiï¬cation, cw|ccw, scale factor)
cct self-loop drawn at angle angle from a node, with text
label and a size-adjustment parameter
shade(gray value,closed line specs)
gen Fill arbitrary closed curve
shadebox(box attributes, shade width)
gen
Box with edge shading. Arg2 is in points. See also
shaded
ShadedPolygon(vertexseq, line attributes, degrees, colorseq)
gen Draws the polygon speciï¬ed in arg1 and shades the
interior according to arg4 by drawing lines perpendicular
to the angle in arg3. The vertexseq is a colon (:)
separated sequence of vertex positions (or names) of the
polygon in cw or ccw order. A colorseq is of the form 0,
r0,g0,b0, frac1,r1,g1,b1, frac2,r2,g2,b2, . . . 1,rn,gn,bn with
0 < frac1 < frac2 . . . 1
shadowed(box|circle|ellipse|line, position spec, keys)
gen Object with speciï¬ed shadow. possspec is e.g., with .w
at ... or at position. The keys are attrib=object
attributes; shadowthick=expr; (default
linethick*)5/4), shadowcolor=string; (default
"gray"), shadowangle=expr; (default −45) for box only:
rad=expr;
shielded(‘two-terminal element’, L|U, line attributes)
cct shielding in a [ ] box for two-terminal element. Arg2=
blank (default) to enclose the element body; L for the left
side with respect to drawing direction, R for right.
Internal points .Start, .End, and .C are deï¬ned
66
+
SIdefaults gen
Sets
scale = 25.4
for drawing units in mm, and sets pic
parameters lineht = 12, linewid = 12, moveht =
12, movewid = 12, arcrad = 6, circlerad = 6,
boxht = 12, boxwid = 18, ellipseht = 12,
ellipsewid = 18, dashwid = 2, arrowht = 3,
arrowwid = arrowht/2,
sign_(number) gen sign function
Sin(integer) gen sine function, integer degrees
sinc(number) gen the sinc(x) function
sind(arg) gen sine of an expression in degrees
sinusoid(amplitude, frequency, phase, tmin, tmax, linetype)
gen draws a sinusoid over the interval (t
min
, t
max
); e.g., to
draw a dashed sine curve, amplitude a, of n cycles of
length x from A,
sinusoid(a,twopi_*n/x,-pi_/2,0,x,dashed) with
.Start at A
source(linespec, V|v|I|i|AC|B|F|G|H|J|Q|L|N|P|S[C[r]]|E[r]]|T|X|U|other, diameter,R)
cct source, blank or: V = voltage source; v = alternate
voltage source; I = current source; i = alternate current
source; AC = AC source; B = bulb; F = fluorescent; G =
generator; H = step function; L = lamp; N = neon; P =
pulse; Q = charge; R = ramp; r = right orientation; S =
sinusoid; SC = quarter arc; SE = arc; T = triangle; U =
square-wave; X = interior X; other = custom interior
label or waveform; arg 4: R = reversed polarity; arg 5
modiï¬es the circle with e.g., color or ï¬ll (Section 4.2)
sourcerad_ cct default source radius
sp_ gen evaluates to medium space for gpic strings
speaker( U|D|L|R|degrees,size,H)
cct speaker, In1 to In7 deï¬ned; H=horn (Section 6)
sprod3D(a,x,y,z) 3D scalar product of triple x,y,z by a
sqrta(arg) gen square root of the absolute value of arg; i.e.,
sqrt(abs(arg))
SQUID(n, diameter, initial angle, ccw|cw)
cct Superconducting quantum interface device with n
junctions labeled J1, ... Jn placed around a circle
with initial angle -90 deg (by default) with respect to the
current drawing direction. The default diameter is
dimen_
stackargs_(‘stackname’,args) gen
Stack arg 2, arg 3, ... onto the named stack up to a blank
arg
stackcopy_(‘name 1’,‘name 2’)
gen
Copy stack 1 into stack 2, preserving the order of pushed
elements
stackdo_(‘stackname’,commands)
gen
Empty the stack to the ï¬rst blank entry, performing arg 2
stackexec_(‘name 1’,‘name 2’,commands)
gen Copy stack 1 into stack 2, performing arg3 for each
nonblank entry
stackprint_(‘stack name’) gen Print the contents of the stack to the terminal
stackreverse_(‘stack name’) gen Reverse the order of elements in a stack, preserving the
name
67
+
stacksplit_(‘stack name’,string,separator)
gen Stack the ï¬elds of string left to right separated by
nonblank separator (default .). White space preceding the
ï¬elds is ignored.
sum_(a,b) gen binary sum
sum3D(x1,y1,z1,x2,y2,z2) 3D sum of two triples
sus(linespec, chars, label) cct Wrapper to place an SUS thyristor as a two-terminal
element with
[ ]
block label given by the third argument
(Section 6.1)
svec_(x,y) log scaled and rotated grid coordinate vector
sw_ gen .sw with respect to current direction
switch(linespec,L|R,[C|O][D],[B|D])
cct
SPST switch (wrapper for bswitch, lswitch, and dswitch),
arg2: R=right orientation (default L=left); if arg4=blank
(knife switch): arg3 = [O|C][D][A] O= opening,
C=closing, D=dots, A=blade arrowhead; if arg4=B
(button switch): arg3 = O|C O=normally open,
C=normally closed, if arg4=D: arg3 = same as for
dswitch (Section 4.2)
T ta_xy(x, y) cct macro-internal coordinates adjusted for L|R
tapped(‘
two-terminal element
’, [
arrowhd
| type=
arrowhd
;name=
Name
],
fraction, length, frac-
tion, length, · · ·)
cct Draw the two-terminal element with taps in a [ ] block
(see addtaps). arrowhd = blank or one of . - <- ->
<->. Each fraction determines the position along the
element body of the tap. A negative length draws the tap
to the right of the current direction; positive length to the
left. Tap names are Tap1, Tap2,
· · ·
by default or Name1,
Name2,
· · ·
if speciï¬ed. Internal block names are
.Start,
.End, and .C corresponding to the drawn element, and
the tap names (Section 6)
tbox(text,wid,ht,<|>|<>,type) cct Pointed terminal box. The text is placed at the
rectangular center in math mode unless the text begins
with " or sprintf in which case the arument is used
literally. Arg 4 determines whether the point is forward,
backward, or both with respect to the current drawing
direction. (Section 6)
tconn(linespec,>|»|<|«|O[F],wid)
cct Terminal connector, O=circle; OF=ï¬lled circle; > or »
output connector (default
>
) ;
< or « input connector
;
arg3 is arrowhead width or circle diameter (Section 6)
tgate(linespec, [B][R|L]) cct transmission gate, B= ebox type; L= oriented left
(Section 6.1)
thermocouple(linespec, wid, ht, L|R)
cct Thermocouple drawn to the left (by default) of the
linespec line. If the linespec length equals wid (default
dimen_/5), then only the two branches appear. R= right
orientation. (Section 4.2)
thicklines_(number) gen set line thickness in points
thinlines_(number) gen set line thickness in points
threeD_init 3D initialize 3D transformations (reads lib3D.m4)
68
+
thyristor(linespec,[SCR|SCS|SUS|SBS|IEC][chars])
cct Composite thyristor element in []block: types SCR:
silicon controlled rectiï¬er (default), SCS: silicon
controlled switch, SUS: silicon unilateral switch, SBS:
silicon bilateral switch, IEC: type IEC. Chars to modify
or deï¬ne the element: K: open arrowheads, A: arrowhead,
F: half arrowhead, B: bidirectional diode, E: adds
envelope, H: perpendicular gate (endpoint G), N: anode
gate (endpoint Ga), U: centre line in diodes V:
perpendicular gate across arrowhead centre, R=right
orientation, E=envelope (Section 6.1)
tikznode(Tikz node name, position)
pgf insert Tikz code to deï¬ne a zero-size Tikz node at
location (default
Here
) to assist with inclusion of pic code
output in Tikz diagrams. This macro must be invoked in
the outermost pic scope. (Section 14.1)
tline(linespec,wid,ht) cct transmission line, manhattan direction (Section 4.2)
ToPos(position, U|D|L|R|degrees, length)
gen Evaluates to from position - Rect_(length, angle) to
position from the polar-coordinate data in the arguments
tr_xy_init(origin, unit size, sign )
cct initialize tr_xy
tr_xy(x, y) cct relative macro internal coordinates adjusted for L|R
transformer(linespec,L|R,np,[A|P][W|L][D1|D2|D12|D21],ns)
cct 2-winding transformer or choke with terminals P1, P2,
TP, S1, S2, TS: arg2: L = left, R = right, arg3: np
primary arcs, arg5: ns secondary arcs, arg4: A = air core,
P = powder (dashed) core, W = wide windings, L =
looped windings, D1: phase dots at P1 and S1 end; D2 at
P2 and S2 end; D12 at P1 and S2 end; D21 at P2 and S1
end (Section 6)
tstrip(R|L|U|D|degrees, nterms, chars)
cct terminal strip, chars: I=invisible terminals, C=circle
terminals (default), D=dot terminals, O=omitted
separator lines, wid=value; total strip width, ht=value;
strip height (Section 6)
ttmotor(linespec, string, diameter, brushwid, brushht)
cct motor with label (Section 4.2)
twopi_ gen 2Ï€
U ujt(linespec,R,P,E) cct unijunction transistor, right, P-channel, envelope
(Section 6.1)
unit3D(x,y,z) 3D unit triple in the direction of triple x,y,z
up__ gen up with respect to current direction
up_ gen set current direction up (Section 5)
V variable(‘element’, [A|P|L|[u]N|[u]NN][C|S], [+|-]angle, length, at position)
cct overlaid arrow or line to indicate variable 2-terminal
element: A=arrow, P=preset, L=linear, N= symmetric
nonlinear, C=continuous, S=setpwise; u changes the
nonlinearity direction. The angle is absolute but
preceding it with a sign makes the angle (often -30 or -45)
relative to the element drawing direction. If arg5 is blank
the symbol is placed over the last
[ ]
block (Section 4.2)
69
+
Vcoords_(position) gen The x, y coordinate pair of the position
Vdiff_(position,position) gen Vdiff_(A,B) evaluates to A-(B) with dpic, A-(B.x,B.y)
with gpic
vec_(x,y) gen position rotated with respect to current direction
View3D 3D The view vector (triple) deï¬ned by setview(azim, elev).
The
project
macro projects onto the plane perpendicular
to this vector
vlength(x,y) gen vector length
p
x
2
+ y
2
vperp(linear object) gen unit-vector pair CCW-perpendicular to linear object
Vperp(position name, position name)
gen unit-vector pair CCW-perpendicular to line joining two
named positions
vrot_(x,y,xcosine,ycosine) gen rotation operator
vscal_(number,x,y) gen vector scale operator
Vsprod_(position, expression) gen The vector in arg 1 multiplied by the scalar in arg 2
Vsum_(position,position) gen Vsum_(A,B) evaluates to A+B with dpic, A+(B.x,B.y)
with gpic
W w_ gen .w with respect to current direction
while_(‘test’,‘actions’) gen Integer m4 while loop
wid_ gen width with respect to current direction
winding(L|R, diam, pitch, turns, core wid, core color)
cct core winding drawn in the current direction;
R=right-handed (Section 6)
XOR_gate(n,N) log ‘xor’ gate, 2 or n inputs; N=negated input. Otherwise,
arg1 can be a sequence of letters P|N to deï¬ne normal or
negated inputs. (Section 9)
XOR_off log XOR and NXOR offset of input face
X xtal(linespec,keys) cct Quartz crystal. The keys are type=N (default) or R
(round); type N keys: lgth=expr (body length);
wdth=expr (body width); bxwd=expr (body inner box
width); box= box attributes (shaded . . .); type R keys:
outerdiam=expr; innerdiam=expr; outer= outer circle
attributes (dotted . . .); inner= inner circle attributes
(shaded . . .) (Section 4.2)
xtract(string, substr1, substr2, . . .)
gen returns substrings if present
Y Ysymbol(at position,keys, U|D|L|R|degrees) (default U for up)
cct Y symbol for power-system diagrams keys:
size=expression; type=G
References
[1] J. D. Aplevich. Drawing with dpic, 2015. In the dpic source distribution.
[2] J. Bentley. More Programming Pearls. Addison-Wesley, Reading, Massachusetts, 1988.
[3]
D. Girou. Présentation de PSTricks. Cahiers GUTenberg, 16, 1994.
http://cahiers.
gutenberg.eu.org/cg-bin/article/CG_1994___16_21_0.pdf.
70
+
[4]
M. Goossens, S. Rahtz, and F. Mittelbach. The L
A
T
E
XGraphics Companion. Addison-Wesley,
Reading, Massachusetts, 1997.
[5] J. D. Hobby. A user’s manual for MetaPost, 1990.
[6]
IEC. International standard database snapshot 2007-01, graphical symbols for diagrams, 2007.
IEC-60617.
[7]
IEEE. Graphic symbols for electrical and electronic diagrams, 1975. Std 315-1975, 315A-1986,
reaffirmed 1993.
[8]
B. W. Kernighan. PIC—A graphics language for typesetting, user manual. Technical Report
116, AT&T Bell Laboratories, 1991. http://doc.cat-v.org/unix/v10/10thEdMan/pic.pdf.
[9]
B. W. Kernighan and D. M. Richie. The M4 macro processor. Technical report, Bell Laboratories,
1977.
[10] Thomas K. Landauer. The Trouble with Computers. MIT Press, Cambridge, 1995.
[11] W. Lemberg. Gpic man page, 2005. http://www.manpagez.com/man/1/groff/.
[12]
O. Mas. Pycirkuit 0.5.0. Python Software Foundation, 2019.
https://pypi.org/project/
pycirkuit/.
[13]
E. S. Raymond. Making pictures with GNU PIC, 1995. In GNU groff source distribution, also
in the dpic package and at http://www.kohala.com/start/troff/gpic.raymond.ps.
[14] T. Rokicki. DVIPS: A T
E
X driver. Technical report, Stanford, 1994.
[15] R. Seindal et al. GNU m4, 1994. http://www.gnu.org/software/m4/manual/m4.html.
[16]
T. Tantau. Tikz & pgf, 2013.
http://mirrors.ctan.org/graphics/pgf/base/doc/
pgfmanual.pdf.
[17]
T. Van Zandt. PSTricks: Postscript macros for generic tex, 2007.
http://mirrors.ctan.org/
graphics/pstricks/base/doc/pst-user.pdf.
71
+
+
+ +
+ + diff --git a/graphics/circuit_macros/doc/Circuit_macros.pdf b/graphics/circuit_macros/doc/Circuit_macros.pdf index a6b0c06f86..02df6fffe2 100644 Binary files a/graphics/circuit_macros/doc/Circuit_macros.pdf and b/graphics/circuit_macros/doc/Circuit_macros.pdf differ diff --git a/graphics/circuit_macros/doc/ConfigA.m4 b/graphics/circuit_macros/doc/ConfigA.m4 index 56fd5fe54f..d8301f909d 100644 --- a/graphics/circuit_macros/doc/ConfigA.m4 +++ b/graphics/circuit_macros/doc/ConfigA.m4 @@ -3,6 +3,7 @@ sinclude(Circuit_macros.dim) s_init(ConfigA) gen_init + "{\tt .pic}" above arrow <- M4: shadebox(box wid boxht "{\tt m4}") diff --git a/graphics/circuit_macros/doc/ConfigB.m4 b/graphics/circuit_macros/doc/ConfigB.m4 index a33e57b86b..b17a40dc9d 100644 --- a/graphics/circuit_macros/doc/ConfigB.m4 +++ b/graphics/circuit_macros/doc/ConfigB.m4 @@ -3,6 +3,7 @@ sinclude(Circuit_macros.dim) s_init(ConfigB) gen_init + aw = linewid/2 linewid = linewid*2/3 "{\tt .pic}" above diff --git a/graphics/circuit_macros/doc/ConfigC.m4 b/graphics/circuit_macros/doc/ConfigC.m4 index ccf8bae2d7..4bb48f1f2e 100644 --- a/graphics/circuit_macros/doc/ConfigC.m4 +++ b/graphics/circuit_macros/doc/ConfigC.m4 @@ -3,6 +3,7 @@ sinclude(Circuit_macros.dim) s_init(ConfigC) gen_init + aw = linewid/2 linewid = linewid*2/3 "{\tt .pic}" above diff --git a/graphics/circuit_macros/doc/Flowdiag.m4 b/graphics/circuit_macros/doc/Flowdiag.m4 index 5af78953f0..c551c9eb2c 100644 --- a/graphics/circuit_macros/doc/Flowdiag.m4 +++ b/graphics/circuit_macros/doc/Flowdiag.m4 @@ -1,5 +1,7 @@ .PS # `Flowdiag.m4' +gen_init + define(`shadellipse',`{ellipse $1 fill invis define(`m4h',`1.0 pt__')dnl ellipse invis fill 0.5 wid last ellipse .wid+linethick pt__ \ diff --git a/graphics/circuit_macros/doc/Makefile b/graphics/circuit_macros/doc/Makefile index 3cdac7062e..d91801fcf9 100644 --- a/graphics/circuit_macros/doc/Makefile +++ b/graphics/circuit_macros/doc/Makefile @@ -20,6 +20,7 @@ PICTEX = \ Series.tex ShiftRMan.tex Sinus.tex SourcesMan.tex SwitchesMan.tex \ Taps.tex TgateMan.tex Thermal.tex Tline.tex \ VariableMan.tex WindingsMan.tex Workflow.tex XformMan.tex \ + arrowex.tex \ bitr.tex bi_trans.tex bistableMan.tex \ currents.tex eboxdims.tex fbfilter.tex fetMan.tex lrarrows.tex \ MoreTableMan.tex mplex.tex opampex.tex quick.tex \ diff --git a/graphics/circuit_macros/doc/MoreTableMan.m4 b/graphics/circuit_macros/doc/MoreTableMan.m4 index bfc41113c1..32ca4bd281 100644 --- a/graphics/circuit_macros/doc/MoreTableMan.m4 +++ b/graphics/circuit_macros/doc/MoreTableMan.m4 @@ -1,10 +1,15 @@ .PS -# MoreTable.m4 +# MoreTableMan.m4 cct_init movewid = 2 pt__ hm = 2.05 vm = 0.28 +{ right; {lamp ; move;"`{\tt lamp}'" ljust} + move right_ hm + {thermocouple ; move;"`{\tt thermocouple}'" ljust } +} + move down 0.25; right_ { {memristor ; move;"`{\tt memristor}'" ljust} move right_ hm {heater; move;"`{\tt heater}'" ljust} @@ -26,11 +31,9 @@ vm = 0.28 {arrowline ; move;"`{\tt arrowline}'" ljust} } move down 0.25; right_ -{ move down 0.10; right; {lamp ; move;"`{\tt lamp}'" ljust} +{ {xtal ; move ;"`{\tt xtal}'" ljust} move right_ hm - {thermocouple ; move;"`{\tt thermocouple}'" ljust } -# move up 0.10 right_ hm -# {arrester ; move ;"`{\tt arrester}'" ljust} + {xtal(,type=R;outerdiam=0.2) ; move ;"`{\tt xtal(,type=R)}'" ljust} } .PE diff --git a/graphics/circuit_macros/doc/ResistorsMan.m4 b/graphics/circuit_macros/doc/ResistorsMan.m4 index 2b1d1515e8..57ebc4e34f 100644 --- a/graphics/circuit_macros/doc/ResistorsMan.m4 +++ b/graphics/circuit_macros/doc/ResistorsMan.m4 @@ -9,22 +9,32 @@ vm = 0.28 move right_ hm {resistor(,,Q) ; move ;"`\tt resistor(,{,}Q) '" ljust} move right_ hm - {resistor(,,E) ; move - "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust} + {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust} } move down vm; right_ { {resistor(,,ES) ; move ;"`\tt resistor(,{,}ES) '" ljust} move right_ hm {resistor(,,H) ; move ;"`\tt resistor(,{,}H) '" ljust} move right_ hm - {ebox(,,,0.9) ; move ;"`{\tt ebox(,{,},0.9)}'" ljust} + {resistor(,,AC) ; move ;"`{\tt resistor(,{,}AC)}'" ljust} } move down vm; right_ -{ {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust} +{ {resistor(,,B) ; move ;"`{\tt resistor(,{,}B)}'" ljust} + move right_ hm + {resistor(,,E) ; move + "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust} move right_ hm {ebox(,0.5,0.3) ; move ;"`{\tt ebox(,0.5,0.3)}'" ljust} - move right_ hm+4bp__ - {resistor(,,B) ; move movewid-4bp__ ;"`{\tt resistor(,{,}B)}'" ljust} +} + move down vm; right_ +{ {ebox(,,,0.9) ; move ;"`{\tt ebox(,{,},0.9)}'" ljust} + move right_ hm + {ebox(,,,,shaded "green") ; move + "`{\tt ebox(,{,},{,}shaded \"green\")}'" ljust} +} + move down vm; right_ +{ {ebox(,wdth=0.2;box=dashed shaded "green";text="X") ; move + "`{\tt ebox(,wdth=0.2;box=dashed shaded \"green\";text=\"X\")}'" ljust} } .PE diff --git a/graphics/circuit_macros/doc/Taps.m4 b/graphics/circuit_macros/doc/Taps.m4 index 7b8797d035..aa6b59251b 100644 --- a/graphics/circuit_macros/doc/Taps.m4 +++ b/graphics/circuit_macros/doc/Taps.m4 @@ -13,7 +13,7 @@ cct_init "\tt R1:$\;$resistor(,{,}E)" ljust \ "\tt addtaps(<-,0.2,-t,0.8,t)" ljust' at R1.end+(0.3,0) - move to R1.end+(2.25,0.1); right_ + move to R1.end+(2.6,0.1); right_ R2: ebox(,elen_*0.6,) addtaps(type=-;name=Tx,0.2,-t,0.5,-t,0.8,-t) "\sl Tx1" at Tx1 rjust diff --git a/graphics/circuit_macros/doc/Version.tex b/graphics/circuit_macros/doc/Version.tex index fb5fc7b97e..7079b5d95b 100644 --- a/graphics/circuit_macros/doc/Version.tex +++ b/graphics/circuit_macros/doc/Version.tex @@ -1 +1 @@ -Version 9.6 +Version 9.7 diff --git a/graphics/circuit_macros/doc/arrowex.m4 b/graphics/circuit_macros/doc/arrowex.m4 new file mode 100644 index 0000000000..2ffd512107 --- /dev/null +++ b/graphics/circuit_macros/doc/arrowex.m4 @@ -0,0 +1,33 @@ +.PS +# arrowex.m4 +gen_init + + movewid = 1 + moveht = 13bp__ + + ifdpic( + `{{ arrow -> 0 }; move; "\tt arrow -> 0" ljust } + move down_; right_ + {{ arrow -> 1 }; move; "{\tt arrow -> 1} (default)" ljust } + move down_; right_ + {{ arrow -> 3 }; move; "\tt arrow -> 3" ljust } ', + `{{arrowhead = 0; arrow}; move; "\tt arrowhead = 0; arrow" ljust } + move down_; right_ + {{arrowhead = 1; arrow}; move + "{\tt arrowhead = 1; arrow} (default)" ljust } ') + + move down_; right_ + arrowwid = 8bp__; arrowht = 10bp__ + {{ sarrow(,type=Plain)}; move; + {"`\tt arrowwid=8bp\_\_; arrowht=10bp\_\_; sarrow(,type=Plain)'" ljust }} + move down_; right_ + {{ sarrow(,type=Open)}; move; + {"`\tt sarrow(,type=Open)'" ljust }} + move down_; right_ + {{ sarrow(,type=Crow;shaft=dashed)}; move + {"`\tt sarrow(,type=Crow;shaft=dashed)'" ljust }} + move down_; right_ + {{ sarrow(,type=Diamond;head=shaded "red";lgth=16bp__)}; move + {"`\tt sarrow(,type=Diamond;head=shaded \"red\";lgth=16bp\_\_)'" ljust }} + +.PE diff --git a/graphics/circuit_macros/doc/body.tex b/graphics/circuit_macros/doc/body.tex index 0fd36ecb5c..0acc9dc2ec 100644 --- a/graphics/circuit_macros/doc/body.tex +++ b/graphics/circuit_macros/doc/body.tex @@ -115,6 +115,7 @@ only with \dpic. concepts applied here do not require \Mfour. \subsection{Quick start\label{Quickstart:}} +Read this section to understand basic usage of \Mfour and macros. The contents of file {\tt quick.m4} and resulting diagram are shown in \FR{quick} to illustrate the language % to show several ways for placing circuit elements, @@ -507,10 +508,11 @@ Lines can be concatenated. For example, to draw a triangle: {\tt line up\_ sqrt(3) right\_ 1 then down\_ sqrt(3) right\_ 1 then left\_ 2} \subsection{Positions\label{Positions:}} -A {\sl position} can be defined by a coordinate pair, e.g. {\tt 3,2.5}, +A {\sl position} can be defined by a coordinate pair; + e.g., {\tt 3,2.5}, more generally using parentheses by {\tt (}{\sl expression, expression}{\tt )}, -as a sum or difference as -{\tt{\sl position} $+$ ({\sl expression, expression})}, +as a sum or difference; + e.g., {\tt{\sl position} $+$ ({\sl expression, expression})}, or by the construction {\tt (}{\sl position, position}{\tt )}, the latter taking the $x$-coordinate from the first position and the $y$-coordinate from the second. A position can be @@ -657,6 +659,8 @@ two words, one above the other, at the centre of an ellipse: The C-like \pic function {\tt sprintf("{\sl format string}",{\sl numerical arguments})} is equivalent to a string. +(Its implementation passes arguments singly to the C {\tt snprintf} +function). \subsection{Compound objects\label{Compoundobjects:}} A compound object is a group of statements enclosed in square @@ -915,6 +919,7 @@ Some more basic elements are in \FR{MoreTable}, and amplifiers in \FR{AmpTable}. \label{MoreTable} \end{figure} \begin{figure}[h!t] +\vspace*{-\baselineskip} \input AmpTableMan \caption{Amplifier, delay, and integrator.} \label{AmpTable} @@ -1122,11 +1127,11 @@ also can be specified. For those who prefer a separate arrow to indicate the reference direction for current, the macros {\tt larrow({\sl label}, ->|<-,{\sl dist})} and {\tt rarrow({\sl label}, ->|<-,{\sl dist})} are provided. The label is -placed outside the arrow as shown in \FR{currents}. The first -argument is assumed to be in math mode unless +placed outside the arrow as shown in \FR{currents}. +The first argument is assumed to be in math mode unless it begins with {\tt sprintf} or a double -quote, in which case the argument is copied literally. The third argument -specifies the separation from the element. +quote, in which case the argument is copied literally. +The third argument specifies the separation from the element. \subsection{Labels\label{Labels:}} Arbitrary labels @@ -2235,11 +2240,11 @@ which executes the given actions successively with There are several issues related to scale changes. You may wish to use millimetres, for example, instead of the default inches. You may wish to change the size of a complete diagram while keeping the relative -proportions of objects within it. You may wish to change the sizes or -proportions of individual elements within a diagram. You must take -into account that line widths are scaled separately from drawn objects, -and that the size of typeset text is independent of the \pic language -except when svg is being produced. +proportions of objects within it. You may wish to change the sizes +or proportions of individual elements within a diagram. You must take +into account that the size of typeset text is independent of the \pic +language except when svg is being produced, and that line widths are +independent of the scaling of drawn objects. The scaling of circuit elements will be described first, then the \pic scaling facilities. @@ -2597,7 +2602,7 @@ placed by specifying the position of one of its defined points; by default it will be placed as if it were a box. \fi -\subsection{Macro arguments\label{Marcroarguments:}} +\subsection{Macro arguments\label{Macroarguments:}} Macro parameters are defined by entering them into specific arguments, and if an argument is blank then a default parameter is used. @@ -2626,13 +2631,11 @@ Then for example in a macro, the line {\tt setkey\_( `\$2', wdth, dimen\_*2 )} \noindent -checks argument 2 for a term {\tt wdth=}{\sl value} and defines -the macro {\tt m4wdth} to evaluate to -{\tt (dimen\_*2)} if not found, -otherwise to {\tt ({\sl value}).} -The enclosing parentheses are omitted if the -third argument of {\tt setkey\_} is {\tt N,} as may be required if {\tt m4wdth} -is non-numeric. +checks argument 2 for a term {\tt wdth=}{\sl value} and defines the macro +{\tt m4wdth} to evaluate to {\tt (dimen\_*2)} if not found, otherwise +to {\tt ({\sl value}).} The enclosing parentheses are omitted if the +third argument of {\tt setkey\_} is {\tt N,} as would be required if +{\tt m4wdth} were to be non-numeric. In addition, the macro @@ -2663,6 +2666,21 @@ The key prefix {\tt m4} of the automatically created parameter macros can be redefined if necessary, since it is given in the distribution by the line {\tt define(`key\_prefix',`m4')}. +%\iffalse +As another example, the macro +{\tt sarrow({\sl linespec}, {\sl keys})} +can generate the custom arrows shown below the three native arrows +in \FR{arrowex}. The defined keys are + {\tt type=}; {\tt lgth=}; {\tt wdth=}; {\tt shaft=}; and {\tt head=}. +Many variations of these arrowheads are possible. +\begin{figure}[h!t] + \input arrowex + \caption{The three \dpic native arrows and others generated by + {\tt sarrow({\sl linespec}, {\sl keys})}.} + \label{arrowex} + \end{figure} +%\fi + \xection{Interaction with \latex\label{Interaction:}} The sizes of typeset labels and other \tex boxes are generally unknown @@ -3260,8 +3278,7 @@ part of an argument must be protected by parentheses or quotes. Thus, {\tt shadebox(box with .n at (w,h))} \noindent do not. The parentheses are preferred. -For example, -a macro invoked by circuit elements contained the line +For example, a macro invoked by circuit elements contained the line \verb|command "\pscustom[fillstyle=solid`,'fillcolor=m4fillv]{%"| diff --git a/graphics/circuit_macros/doc/defines.tex b/graphics/circuit_macros/doc/defines.tex index da19a5fcf0..e598203179 100644 --- a/graphics/circuit_macros/doc/defines.tex +++ b/graphics/circuit_macros/doc/defines.tex @@ -335,6 +335,7 @@ dF flat plate with hatched fill; C=curved-plate; dC=curved-plate with variability arrowhead; + CP=constant phase element; E=polarized boxed plates; K=filled boxed plates; M=unfilled boxes; @@ -346,7 +347,8 @@ arg4 = height (defaults F: {\tt dimen\_}$/3$, C,P: {\tt dimen\_}$/4$, E,K: {\tt dimen\_}$/5$); arg5 = wid (defaults F: {\sl height}*0.3, - C,P: {\sl height}*0.4, E,K: {\sl height}) \seesect{Twoterminal:}} + C,P: {\sl height}*0.4, CP: {\sl height}*0.8, E,K: {\sl height}) + \seesect{Twoterminal:}} \macrodef{cbreaker}{cbreaker}{(\linespec,L|R,D|Th|TS)} {cct} {circuit breaker to left or right, {\tt D}=with dots; {\tt Th}=thermal; @@ -755,11 +757,17 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% {cct} {earphone, {\sl In1} to {\sl In3} defined \seesect{Composite:}} -\macrodef{ebox}{ebox}{(\linespec,{\sl length},{\sl ht},{\sl fill value})} +\macrodef{ebox}{ebox}{(\linespec,{\sl lgth},{\sl wdth},{\sl fill value}, + {\sl box attributes})} {cct} { two-terminal box element with adjustable dimensions and fill - value 0 (black) to 1 (white). {\sl length} and {\sl ht} are relative - to the direction of \linespec\seesect{Twoterminal:}} + value 0 (black) to 1 (white). {\sl lgth} (length) and {\sl wdth} (width) + are relative + to the direction of \linespec. Alternatively, argument 1 is the + \linespec\ and argument 2 is a semicolon-separated sequence of key=value + terms. The possible keys are {\tt lgth, wdth, text, box}, + e.g., {\tt lgth=0.2; text=\char34{}XX\char34; + box=shaded \char34{}green\char34}\seesect{Twoterminal:}} \macrodef{elchop}{elchop}{({\sl Name1,Name2})} {gen} {{\tt chop} for ellipses: evaluates to {\tt chop} $r$ where $r$ is @@ -861,6 +869,13 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% \macrodef{for\_}{for_}{({\sl start},{\sl end},{\sl increment},`{\sl actions}')} {gen} {integer for loop with index variable {\tt m4x} \seesect{Looping:}} +\macrodef{foreach\_}{foreach_}{(`{\sl variable}',{\sl actions},{\sl + value1, value2, $\ldots$})} + {gen} + {Clone of Loopover\_ by a different name: + Repeat {\sl actions} with {\sl variable} set successively to + {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2, + $\ldots$, terminating if {\sl variable} is nul} \macrodef{FTcap}{FTcap}{({\sl chars})} {cct} {Feed-through capacitor; example of a composite element derived from @@ -1073,9 +1088,9 @@ n|e|s|w,{\sl length})} {cct} {arrow {\sl dist} to left of last-drawn 2-terminal element \seesect{Branchcurrent:}} -\macrodef{lbox}{lbox}{({\sl wid}, {\sl ht}, {\sl type})} +\macrodef{lbox}{lbox}{({\sl wid}, {\sl ht}, {\sl attributes})} {gen} - {box oriented in current direction, type= e.g.\ dotted} + {box oriented in current direction, arg 3= e.g.\ {\tt dashed shaded "red"}} \macrodef{LCintersect}{LCintersect}{({\sl line name, Centre, rad,} [R])} {gen} { First (second if arg4 is R) intersection of a line with a circle} @@ -1161,8 +1176,7 @@ n|e|s|w,{\sl length})} {gen} {logarithm, base $e$} \macrodef{Loopover\_}{Loopover_}{(`{\sl variable}',{\sl actions},{\sl -value1, - value2, $\ldots$})} + value1, value2, $\ldots$})} {gen} {Repeat {\sl actions} with {\sl variable} set successively to {\sl value1, value2, $\ldots$}, setting macro {\tt m4Lx} to 1, 2, @@ -1448,11 +1462,16 @@ elementspec}\char39,% \macrodef{point\_}{point_}{({\sl angle})} {gen} {(radians) set direction cosines} -\macrodef{PerpTo}{PerpTo}{({\sl Pos1, Line, Point})} +\macrodef{perpto}{perpto}{({\sl Pos1, Line, Point})} {gen} {{\sl Point} is the label for the point on {\sl Line} of the perpendicular from {\sl Point} to {\sl Line}.} +\macrodef{PerpTo}{PerpTo}{({\sl Pos1, Pos2, Pos3})} + {gen} + {The point between Pos2 and Pos3 of intersection of the perpendicular + to Pos1, i.e., the perpendicular projection of Pos1 onto the line + from Pos2 to Pos3.} \macrodef{Point\_}{Point_}{({\sl integer})} {gen} {sets direction cosines in degrees \seesect{Placing:}} @@ -1543,6 +1562,7 @@ degrees})} cycle wid})} {cct} {resistor, n cycles (default 3), {\sl chars:} + {\tt AC}=general complex element, {\tt E}={\tt ebox}, {\tt ES}={\tt ebox} with slash, {\tt Q}=offset, {\tt H}=squared, {\tt N}=IEEE, {\tt B}=not burnable, {\tt V}=varistor variant, {\tt R}=right-oriented, {\sl cycle width} (default {\tt @@ -1689,6 +1709,17 @@ degrees})} {gen} {width of the most recent (or named) {\tt s\_box} \seesect{Interaction:}} +\macrodef{sarrow}{sarrow}{(\linespec,{\sl keys})} + {gen} + {Single-segment, single-headed special arrows. + The {\sl keys} are + {\tt type=}{\tt O[pen]} (default) + | {\tt D[iamond]} | {\tt C[rowfoot]} | {\tt P[lain]}{\tt ;} + {\tt wdth=}{\tt expression}{\tt ;} (default {\tt arrowwid}) + {\tt lgth=}{\tt expression}{\tt ;} (default {\tt arrowht}) + {\tt shaft=}{\sl shaft attributes} (e.g., {\tt dashed}){\tt ;} + {\tt head=}{\sl head attributes} (e.g., {\tt shaded}){\tt ;} + \seesect{Macroarguments:}} \macrodef{savem4dir}{savem4dir}{([`{\sl stack name}'])} {gen} {Stack m4 direction parameters in the named stack @@ -1783,10 +1814,10 @@ justification})} with text label and a size-adjustment parameter } \macrodef{shade}{shade}{({\sl gray value},{\sl closed line specs})} {gen} - {fill arbitrary closed curve} -\macrodef{shadebox}{shadebox}{({\sl box specification})} + {Fill arbitrary closed curve} +\macrodef{shadebox}{shadebox}{(box {\sl attributes, shade width})} {gen} - {box with edge shading} + {Box with edge shading. Arg2 is in points. See also {\tt shaded} } \macrodef{ShadedPolygon}{ShadedPolygon}{({\sl vertexseq, line attributes, degrees, colorseq})} {gen} {Draws the polygon specified in arg1 and @@ -1796,8 +1827,20 @@ justification})} (or names) of the polygon in cw or ccw order. A {\sl colorseq} is of the form 0, r0,g0,b0, {\sl frac1},r1,g1,b1, {\sl frac2},r2,g2,b2, \ldots 1,rn,gn,bn with $0 < \hbox{\sl frac1} < \hbox{\sl frac2} - \ldots 1$ -} \macrodef{shielded}{shielded}{(`{\sl two-terminal element}', + \ldots 1$ } +\macrodef{shadowed}{shadowed}{(box|circle|ellipse|line, + {\sl position spec, keys})} + {gen} + { Object with specified shadow. {\sl possspec} is e.g., + {\tt with .w at ...} or {\tt at} {\sl position}. + The {\sl keys} are + {\tt attrib=}{\sl object attributes}{\tt ;} + {\tt shadowthick=}{\sl expr}{\tt ;} (default {\tt linethick*)}5/4), + {\tt shadowcolor=}{\sl string}{\tt ;} (default {\tt "gray"}), + {\tt shadowangle=}{\sl expr}{\tt ;} (default $-45$) + for box only: {\tt rad=}{\sl expr}{\tt ;} + } +\macrodef{shielded}{shielded}{(`{\sl two-terminal element}', L|U, {\sl line attributes})} {cct} {shielding in a {\tt [ ]} box for two-terminal element. Arg2= blank @@ -2134,9 +2177,21 @@ brushht})} {log} {XOR and NXOR offset of input face} \Letter{X}% -\macrodef{xtal}{xtal}{(\linespec)} - {cct} - {quartz crystal\seesect{Twoterminal:}} +\macrodef{xtal}{xtal}{(\linespec,{\sl keys})} + {cct} + {Quartz crystal. The {\sl keys} are + {\tt type=N} (default) or {\tt R} (round); + type {\tt N} keys: + {\tt lgth=}{\sl expr} (body length); + {\tt wdth=}{\sl expr} (body width); + {\tt bxwd=}{\sl expr} (body inner box width); + {\tt box=} box attributes ({\tt shaded} $\ldots$); + type {\tt R} keys: + {\tt outerdiam=}{\sl expr}; + {\tt innerdiam=}{\sl expr}; + {\tt outer=} outer circle attributes ({\tt dotted} $\ldots$); + {\tt inner=} inner circle attributes ({\tt shaded} $\ldots$)% +\seesect{Twoterminal:}} \macrodef{xtract}{xtract}{({\sl string, substr1, substr2, $\ldots$})} {gen} {returns substrings if present} diff --git a/graphics/circuit_macros/dpictools.pic b/graphics/circuit_macros/dpictools.pic index 6cbc945345..d53fdd4c13 100644 --- a/graphics/circuit_macros/dpictools.pic +++ b/graphics/circuit_macros/dpictools.pic @@ -3,7 +3,7 @@ # m4 macro NeedDpicTools or the pic statement copy "HOMELIB_/dpictools.pic" # when HOMELIB_ is defined or, generically, copy "dpictools.pic" -# Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under # +# Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under # # the LaTeX Project Public Licence in file Licence.txt. The files of # # this distribution may be redistributed or modified provided that this # # copyright notice is included and provided that modifications are clearly # diff --git a/graphics/circuit_macros/examples/ASME_Y14-5.m4 b/graphics/circuit_macros/examples/ASME_Y14-5.m4 index fbcf8eb003..00b044b093 100644 --- a/graphics/circuit_macros/examples/ASME_Y14-5.m4 +++ b/graphics/circuit_macros/examples/ASME_Y14-5.m4 @@ -138,11 +138,11 @@ define(`cdashl',0.1*scale) define(`cgapl',0.03*scale) define(`ctrline',`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) define(`m4h',ifelse(`$2',,1*scale,`$2'))dnl - m4n = int(rp_len/2/(m4h))*2+1 - for i=1 to m4n do { - line to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0) + m4xn = int(rp_len/2/(m4h))*2+1 + for i=1 to m4xn do { + line to rvec_(rp_len/m4xn/2-cdashl/2-cgapl,0) move to rvec_(cgapl,0); line to rvec_(cdashl,0); move to rvec_(cgapl,0) - line to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0) } ') + line to rvec_(rp_len/m4xn/2-cdashl/2-cgapl,0) } ') `ctrarcr(pos,radius,startang,endang,len) Arc cr centerline' @@ -165,4 +165,6 @@ define(`ctrarcr',`dnl m5sa = m5sa+m5a } ') +define(`ASME_Y14-5_') + divert(0)dnl diff --git a/graphics/circuit_macros/examples/AntiqueClock.m4 b/graphics/circuit_macros/examples/AntiqueClock.m4 new file mode 100644 index 0000000000..c77950fe00 --- /dev/null +++ b/graphics/circuit_macros/examples/AntiqueClock.m4 @@ -0,0 +1,145 @@ +.PS +# AntiqueClock.m4 +gen_init +NeedDpicTools +# https://tex.stackexchange.com/questions/236923/generate-analog-clock-with-numbered-face-add-seconds-roman-numerals + +# `hms2deg(hr,min,sec) hr:min:sec to degrees +# blank arg1: degrees for minute hand +# blank arg1 and arg2: degrees for second hand' +define(`hms2deg',`ifelse(`$1',, + `ifelse(`$2',, + `(90-pmod(ifelse(`$3',,0,`$3'),60)/60*360)', + `(90-(pmod(`$2',60)/60 + pmod(ifelse(`$3',,0,`$3'),60)/60/60)*360)')', + `(90-(pmod(`$1',12) + pmod(ifelse(`$2',,0,`$2'),60)/60 + dnl + pmod(ifelse(`$3',,0,`$3'),60)/3600)/12*360)')') + +# `SecondHand(length,hr,min,sec)' +define(`SecondHand',`[ shsf = (`$1')/3.2 + C: Here + { L: rpoint_(to (Rect_(`$1',hms2deg(,,`$4')))) } + line thick 8*shsf to rvec_(`$1',0) + ]') + +# `AntiqueMinuteHand(length,hr,min,sec)' +define(`AntiqueMinuteHand',`[ mhsf = (`$1')/2.84 + L: rpoint_(to (Rect_(`$1',hms2deg(,`$3',`$4')))) + C: circle fill_(0) diam 0.47*mhsf at L.start + move to C + spline from rvec_(0,0.047*mhsf) \ + to rvec_(1.65*mhsf,0.11*mhsf) \ + then to rvec_(`$1',0.018*mhsf) \ + then to rvec_(`$1',-0.018*mhsf) \ + then to rvec_(1.65*mhsf,-0.11*mhsf) \ + then to rvec_(0,-0.047*mhsf) \ + shaded rgbstring(0,0,0) + ]') + +# `AntiqueHourHand(length,hr,min,sec)' +define(`AntiqueHourHand',`[ hhsf = (`$1')/2.2 + L: rpoint_(to (Rect_(`$1',hms2deg(`$2',`$3',`$4')))) + C: circle fill_(0) diam 0.6*hhsf at L.start + move to C + v = 0.25*hhsf + { line to rvec_(1.1*hhsf,0) thick 0.15/(1bp__)*hhsf } + { C1: circle rad v at rvec_(1.25*hhsf,0) fill_(0) } + d = `$1'-1.25*hhsf + q = 1bp__*hhsf + r1 = (d^2 + q^2 - v^2)/(v-q)/2 + h = r1+v + shade(0, + arc ccw from C1+vec_(d/h*v,(r1+q)/h*v) to \ + C1+vec_(d,q) rad r1 with .c at C1+vec_(d,r1+q) + arc ccw from C1+vec_(d,-q) to C1+vec_(d/h*v,-(r1+q)/h*v) rad r1 \ + with .c at C1+vec_(d,-r1-q)) + ]') + +define(`AntiqueClock',`[ # h,m,s,diam +# Clock size parameters + # outer radius + hour = ifelse(`$1',,3,`$1') + minute = ifelse(`$2',,41,`$2') + second = ifelse(`$3',,51,`$3') + ifelse(`$4',,`skale=0.5; r1=2',`r1=(`$4')/2; skale=r1/4') + r2 = r1-0.5*skale + r3 = r2-0.14*skale + r4 = r3 - 0.35*skale + r5 = r4 - 0.17*skale + r6 = r5 - 0.63*skale + r7 = r6 - 0.17*skale + shadethick = 1.0 + +C: circle thick 0.2 rad r1 + +define shadeline { + s = 1-($`'1)*2 + v = r*s + h = sqrt(r^2-v^2) + t = 1-abs(s) + line from (vrot_(-h,v,cost,sint)) to (vrot_(h,v,cost,sint)) \ + thick shadethick outlined rgbstring(t,t,t) + } + + r = r1 # Bezel outer + nlines = int(2*r/(shadethick pt__)*1.1) + cost = cosd(10); sint = sind(10); + ShadeObject(shadeline,nlines, 0, 0,0,0, + 0.5, 1,1,1, + 1, 0,0,0 ) at C + + r = r2 # Bezel inner + nlines = int(2*r/(shadethick pt__)*1.1) + cost = cosd(-10); sint = sind(-10); + ShadeObject(shadeline,nlines, 0, 0,0,0, + 0.25, 0.8,0.8,0.8, + 0.5, 1,1,1, + 0.75, 0.8,0.8,0.8, + 1, 0,0,0 ) at C + +# Clock face +Face: circle thick 0 fill_(1) rad r3 at C + circle rad r4 at C + circle rad r5 at C + circle rad r6 at C + circle rad r7 at C + +define rotext { +sprintf("`$'1 ifpstricks(\rput[C]{%g}(0,0){%g}, +ifpgf(\rotatebox{%g}{%g}))",`$'2,`$'3) } +# Outer numbers + command sprintf("\font\outerfont=cmss12 at %4.2fin",r3-r4) + for mn = -15 to 15 by 5 do { rotext(\outerfont,-mn/60*360,pmod(mn,60)) \ + at C+(Rect_((r3+r4)/2,90-mn/60*360)) } + for mn = 20 to 40 by 5 do { rotext(\outerfont,180-mn/60*360,mn) \ + at C+(Rect_((r3+r4)/2,90-mn/60*360)) } +# Outer tics + for mn = 1 to 60 do { t = 90-mn/60*360 + line from C+(Rect_(r5,t)) to C+(Rect_(r4,t)) } + +# Inner numbers + command sprintf("\font\innerfont=cmss12 at %4.2fin",r5-r6) + Loopover_(`mx',`t = (m4Lx-4)/12*360; + sprintf("\innerfont`'ifpstricks(`\rput[C]{%g}(0,0)', + `\rotatebox{%g}'){\scalebox{0.7}[1.0]{mx}}",-t) \ + at C+(Rect_((r5+r6)/2,90-t))', IX,X,XI,XII,I,II,III) + Loopover_(`mx',`t = (m4Lx+3)/12*360; + sprintf("\innerfont`'ifpstricks(`\rput[C]{%g}(0,0)', + `\rotatebox{%g}'){\scalebox{.7}[1.0]{mx}}",-t+180) \ + at C+(Rect_((r5+r6)/2,90-t))', IV,V,VI,VII,VIII) +# Inner tics + for mn = 5 to 60 by 5 do { t = 90-mn/60*360 + line from C+(Rect_(r7,t)) to C+(Rect_(r6,t)) } + +# Hands + AntiqueHourHand(r6,hour,minute,second) with .C at C + AntiqueMinuteHand(r5,hour,minute,second) with .C at C + SecondHand((r3+r4)/2,hour,minute,second) with .C at C + +# Center + dot(at C,0.1/4*r1,1) + ]') + + Clock1: AntiqueClock + Clock2: AntiqueClock(4,50,07,2) at Clock1.e+(1.5,0) + +.PE diff --git a/graphics/circuit_macros/examples/Capacitors.m4 b/graphics/circuit_macros/examples/Capacitors.m4 index d2586f1b9b..d96a6f8827 100644 --- a/graphics/circuit_macros/examples/Capacitors.m4 +++ b/graphics/circuit_macros/examples/Capacitors.m4 @@ -1,5 +1,5 @@ .PS -# `Capacitors.m4' +# Capacitors.m4 cct_init movewid = 2 pt__ @@ -23,16 +23,18 @@ vm = 0.28 move right_ hm {capacitor(,N); move ;"`{\tt capacitor(,N)}'" ljust} move right_ hm - {xtal ; move ;"`{\tt xtal}'" ljust} + {capacitor(,CP); move ;"`{\tt capacitor(,CP)}'" ljust} } move down 0.25; right_ { {capacitor(,dC); move ;"`{\tt capacitor(,dC)}'" ljust} move right_ hm {capacitor(,dF); move ;"`{\tt capacitor(,dF)}'" ljust} move right_ hm - {variable(`capacitor',NN,-30,dimen_/3) - move ;`"{\tt variable(}`{\tt capacitor',}"' ljust \ - `"{\enskip\tt NN,-30,dimen\_/3)}"' ljust - } + {variable(`capacitor',NN,-30,dimen_/3); move +# Stacking the strings normally does not work because the .pdf uses the +# length of the last line. + "`{\tt variable(}{\rm}{\tt capacitor}{\rm}{\tt,}'" ljust + "`{\enskip\tt NN,-30,dimen\_/3)}'" ljust at last ""+(0,-12pt__) + } } .PE diff --git a/graphics/circuit_macros/examples/Crow.m4 b/graphics/circuit_macros/examples/Crow.m4 index 91434c0c01..23f579a452 100644 --- a/graphics/circuit_macros/examples/Crow.m4 +++ b/graphics/circuit_macros/examples/Crow.m4 @@ -8,13 +8,14 @@ sinclude(tst.dim) # Custom macros -------------------------- # `crowline(linespec,wid,ht)' +# `Single-segment line with crowfoot end' define(`crowline', `line `$1' M4_E: last line.end crow_wd = ifelse(`$2',,`(arrowwid*8/5)',`$2') crow_ht = ifelse(`$3',,`(1.5*crow_wd)',`$3') M4_P: vperp(last line,crow_wd) - M4_X: crow_ht/lin_leng(last line) between M4_E and last line.start + M4_X: Along_(last line,crow_ht,R) ifdpic( `spline 0.4 from M4_E+M4_P to M4_X+M4_P then to M4_X-M4_P then to M4_E-M4_P', `spline from M4_E+(M4_P.x,M4_P.y) to M4_X+(M4_P.x,M4_P.y) \ diff --git a/graphics/circuit_macros/examples/Geometry.m4 b/graphics/circuit_macros/examples/Geometry.m4 index 0cbf4bb499..771f4a6b7c 100644 --- a/graphics/circuit_macros/examples/Geometry.m4 +++ b/graphics/circuit_macros/examples/Geometry.m4 @@ -10,7 +10,7 @@ Fig1: [ ls = 2/3 # local scale BC: line from B to C CA: line from C to A - PerpTo(A,BC,L); "L" at L below + perpto(A,BC,L); "L" at L below AL: line from A to L; RightAngle(A,L,C) angleLAC = atan2(C.x-L.x,A.y-L.y) @@ -18,10 +18,10 @@ Fig1: [ ls = 2/3 # local scale AW: line from A to Intersect_(S,BC) W: Here; "W" at W below rjust - PerpTo(C,AB,N); "N" at N above rjust + perpto(C,AB,N); "N" at N above rjust CN: line from C to N; RightAngle(C,N,B) - PerpTo(B,CA,M); "M" at M above + perpto(B,CA,M); "M" at M above CM: line from B to M; RightAngle(B,M,C) H: Intersect_(CN,AL); "H" at H +(4bp__,10bp__) @@ -67,4 +67,28 @@ Fig2: [ ls = 3/4 # local scale ArcAngle(R,Q,N,0.5); "$\alpha$" at last arc.start+(8bp__,-5bp__) ] with .w at Fig1.e+(-0.4,0) +Fig3: [ +# https://tex.stackexchange.com/questions/609452/help-drawing-a-more-sophisticated-right-triangle-with-tikz-or-something-else +gen_init + +define(`textsize',`\Large') + unit = 0.6 + C: Here; { "textsize C" at C rjust below } + B: C+(4*unit,0); { "textsize B" at B ljust below } + A: C+(0,3*unit); { "textsize A" at A rjust above } + H: PerpTo(C,A,B); { "textsize H" at H ljust above } + line from C to H then to B then to C shaded rgbstring(0.5,0.8,0.9) +# line from C to H then to B then to C shaded "CornflowerBlue" + line from C to H then to A then to C shaded rgbstring(0.8,0.9,0.7) +# line from C to H then to A then to C shaded "SpringGreen" + ArcAngle(C,A,B,unit*0.4) + ArcAngle(C,A,B,unit*0.5) + ArcAngle(A,B,C,unit*0.5,,"textsize $\theta$" rjust) + ArcAngle(B,C,H,unit*0.5); {"textsize $\theta$" at C+(unit*0.3,unit*0.17) } + ArcAngle(B,C,A,unit*0.6) + RightAngle(B,C,A,unit*0.17) + RightAngle(C,H,A,unit*0.17) + + ] with .nw at Fig1.sw+(0.2,-0.3) + .PE diff --git a/graphics/circuit_macros/examples/Inductors.m4 b/graphics/circuit_macros/examples/Inductors.m4 index f250a81135..d9db4df153 100644 --- a/graphics/circuit_macros/examples/Inductors.m4 +++ b/graphics/circuit_macros/examples/Inductors.m4 @@ -30,8 +30,9 @@ vm = 0.4 {ebox(,,,0) ; move ;"`{ebox(,{,},0)}'" ljust} move right_ hm -10bp__ {TI: tapped(`ebox(,,,0)',-,1/4,-dimen_/6,3/4,-dimen_/6) ; move ; - "`tapped(\char96{}ebox(,{,},0)\char39,'" ljust at Here+(10bp__,-5bp__) \ - "-,1/4,-dimen\_/6," ljust "3/4,-dimen\_/6)" ljust + "`tapped(\char96{}ebox(,{,},0)\char39,'" ljust at Here+(10bp__,3bp__) + "`-,1/4,-dimen\_/6,'" ljust at last ""+(0,-11pt__) + "`3/4,-dimen\_/6)'" ljust at last ""+(0,-11pt__) "\sl Tap1" at TI.Tap1 rjust below "\sl Tap2" at TI.Tap2 ljust below } } diff --git a/graphics/circuit_macros/examples/IntersectingPlanes.m4 b/graphics/circuit_macros/examples/IntersectingPlanes.m4 new file mode 100644 index 0000000000..3ed9ab3bc3 --- /dev/null +++ b/graphics/circuit_macros/examples/IntersectingPlanes.m4 @@ -0,0 +1,84 @@ +.PS +## IntersectingPlanes.m4 +## Projection of an object defined by 4-sided facets +threeD_init +NeedDpicTools + + setview( 10, 45) +# Define the object by its facets: +# size parameters + a = 3/2 + b = 0.4 +# depth + d = -1 +# line ends and intersections + A0: -a,-b + A1: a,-b + B0: Rot_(A0,120) + B1: Rot_(A1,120) + C0: Rot_(A0,240) + C1: Rot_(A1,240) + AB: intersect_(A0,A1,B0,B1) + BC: intersect_(B0,B1,C0,C1) + CA: intersect_(C0,C1,A0,A1) + + "A0" at project(0,A0.x,A0.y) rjust + "A1" at project(0,A1.x,A1.y) ljust + "B0" at project(0,B0.x,B0.y) ljust + "B1" at project(0,B1.x,B1.y) rjust + "C0" at project(0,C0.x,C0.y) ljust + "C1" at project(0,C1.x,C1.y) rjust +# facet location parameters +define(`facet',`$1.x,$1.y, $2.x,$2.y') +array2(ffc,1,facet(A0,CA)) +array2(ffc,2,facet(CA,A0)) +array2(ffc,3,facet(CA,AB)) +array2(ffc,4,facet(AB,CA)) +array2(ffc,5,facet(AB,A1)) +array2(ffc,6,facet(A1,AB)) + +array2(ffc,7,facet(AB,B0)) +array2(ffc,8,facet(B0,AB)) +array2(ffc,9,facet(BC,AB)) +array2(ffc,10,facet(AB,BC)) +array2(ffc,11,facet(B1,BC)) +array2(ffc,12,facet(BC,B1)) + +array2(ffc,13,facet(C0,BC)) +array2(ffc,14,facet(BC,C0)) +array2(ffc,15,facet(BC,CA)) +array2(ffc,16,facet(CA,BC)) +array2(ffc,17,facet(CA,C1)) +array2(ffc,18,facet(C1,CA)) +nfacets = 18 +# facet corners +define(`fSW',`0,ffc[($1,1)],ffc[($1,2)]') +define(`fNW',`d,ffc[($1,1)],ffc[($1,2)]') +define(`fSE',`0,ffc[($1,3)],ffc[($1,4)]') +define(`fNE',`d,ffc[($1,3)],ffc[($1,4)]') +# facet centre and normal +define(`Fcentre',`sprod3D(0.5,sum3D(fSW(i),fNE(i)))') +define(`Fnoarmal',`cross3D(diff3D(fSE($1),fSW($1)),diff3D(fNE($1),fSE($1)))') +# facet drawing routine +define(`drawfacet',` + Loopover_(`X', `X: project(m4xpand(f`'X)(`$1'));', SW,SE,NE,NW) + line from SW to SE then to NE then to NW then to SW shaded ifelse(`$3',, + "white", `rgbstring(`$3',ifelse(`$4',,`$3',`$4'),ifelse(`$5',,`$3',`$5'))') + ifelse(`$2',,,`sprintf("%g",$2) at 1/2 between NW and SE') ') + +# The rest is generic: sort visible facets by +# distance and plot (but with custom colors) + nvis = 0 + smax = 0 + for i=1 to nfacets do { + if dot3D(View3D,Fnoarmal(i)) >= 0 then { + nvis +=1 + s[nvis] = dot3D(View3D,Fcentre(i)) + smax = max(smax,s[nvis]) + ix[nvis] = i + } } + dpquicksort(s,1,nvis,ix) + + for i=1 to nvis do { drawfacet(ix[i],ix[i],sqrt(i/nvis),i/nvis) } + +.PE diff --git a/graphics/circuit_macros/examples/Makefile b/graphics/circuit_macros/examples/Makefile index 4dc00e86f7..8e32490d6d 100644 --- a/graphics/circuit_macros/examples/Makefile +++ b/graphics/circuit_macros/examples/Makefile @@ -99,6 +99,10 @@ PDFLTXSRC=printf "|documentclass[11pt]{standalone}\n\ |pagestyle{empty}|thispagestyle{empty}\n\ |begin{document}|noindent|input{"$*".tex}|end{document}\n" | $(BS) +# [dvipsnames]{xcolor} defines the colors near the end of: +# https://steeven9.github.io/USI-LaTeX/html/packages_hyperref_babel_xcolor3.html +# Better: use adjusted colors from http://latexcolor.com/ + LTXFILE=printf "|documentclass[11pt]{article}\n\ |usepackage[dvipsnames]{xcolor}\n\ |usepackage{times,boxdims,graphicx,pstricks}\n\ @@ -255,7 +259,7 @@ clobber: clean do (if test -d $$dir ; then cd $$dir; make clobber; fi) ; done rm -f *.warn rm -f examples.pdf - rm -rf index.html html basenames *.png* dist zips htmlfiles + rm -rf index.html html basenames *.png* dist zips htmlfiles svgfiles rm -rf $(TMP)/Cir* $(ECETMP)/Cir* $(ECEDIR) if test -f Incl.pdf ; then \ mv Incl.pdf Incl.pdx; rm -f *.pdf; mv Incl.pdx Incl.pdf ; fi diff --git a/graphics/circuit_macros/examples/Metamodel.m4 b/graphics/circuit_macros/examples/Metamodel.m4 new file mode 100644 index 0000000000..e5d1ba0b1c --- /dev/null +++ b/graphics/circuit_macros/examples/Metamodel.m4 @@ -0,0 +1,78 @@ +.PS +# Metamodel: +# https://tex.stackexchange.com/questions/615463/how-to-draw-meta-models-in-tikz +gen_init + + lineht = 0.4 + arrowht = arrowht*3/2; arrowwid = arrowwid*2 + fillv = 0.9 + define bx {box fill_(fillv) rad 5bp__ $1} + up_ + + Event: bx(ht boxht "Event") + sarrow(,type=D); {"{\tt<}contains{\tt>}" at last arrow rjust} + Trace: bx(ht boxht "Trace") + sarrow(,type=D); {"{\tt<}contains{\tt>}" at last arrow rjust} + Log: bx(ht boxwid "Log") + Att: bx(ht boxwid wid boxwid*5/4 "Attribute" dashed) \ + with .nw at Log.ne + (boxwid*2,0) + + fillv = 0.8 + ww = Log.ht + move to (Att.w,Att.n) - (0,ww/9) + { sarrow(to (Log.e,Here),type=D) + {"{\tt<}trace-global{\tt>}" at last arrow above} } + move down_ ww/3 + { sarrow(to (Log.e,Here),type=D) + {"{\tt<}event-global{\tt>}" at last arrow above} } + move down_ ww/3 + { sarrow(to (Log.e,Here),type=D) } + T: 0.8 between last arrow.start and last arrow.end + move down_ ww/9 + line dashed left ww/3 then down ww/2 then right ww/2 + sarrow(up ww*7/18, type=D;shaft=dashed) + "{\tt<}contains{\tt>}" at (last arrow.end,Att.s)-(ww/4,ww*7/18) below + + line from T to (T,Event); sarrow(to Event.e,type=D) + sarrow(from (T,Trace) to Trace.e,type=D) + + ellipsewid = boxwid*0.9 + ellipseht = ellipsewid/2 + move to (Att.e,Att.s)+(ww/6,-ww/8) + y = Here.x-Att.c.x-boxwid/2 + down_ + Loopover_(`Z',`Z: bx(ht boxht*3/4 "Z") + {sarrow(from Z.e+(y,0) to Z.e,type=D)} + {ifelse(Z,Boolean, + `move to last arrow.start; line to (Here,String) + line from Z.w to (Att,Z.w); sarrow(to Att.s,type=O)', + `line from Z.w to (Att,Z.w)')} + move down_ ww/16', + String,Date,Int,Float,Boolean) + + line from Int.e+(y,0) right_ ww/4; Value: ellipse fill_(fillv) "Value" + Key: ellipse fill_(fillv) "Key" with .w at Att.e+(y*2,0) + sarrow(from last ellipse.w to Att.e,type=D) + + Class: bx(ht boxht*3/4 "Classifier") \ + with .s at (0.5 between Log and Att,Att.n)+(0,boxht/2) + line from Class.w to (Log,Class); sarrow(to Log.n,type=D) + "{\tt<}defines{\tt>}" at (0.5 between Log and Class.w,Class) above + line from Att.n to (Att,Class); sarrow(to Class.e,type=D) + "{\tt<}defines{\tt>}" at (0.5 between Att and Class.e,Class) above + + Ext: bx(ht boxht*3/4 "Extension") with .e at (Att.e,Class+(0,boxht*3/2)) + move to (Att.e,Att.n)-(Att.wid/8,0) + sarrow(to (Here,Ext.s),type=D;shaft=dashed) + "{\tt<}defines{\tt>}" at (last arrow,Ext.s)-(0,y) rjust + line dashed from Ext.w to (Log,Ext) then to (Log,Class) + "{\tt<}declares{\tt>}" at (0.5 between Log and Class,Ext) below + + ellipse fill_(fillv) "name" at (Key,Ext) + sarrow(from last ellipse.w to Ext.e,type=D) + ellipse fill_(fillv) "prefix" with .n at last ellipse.s+(0,-ww/16) + line from last ellipse.w left y + URI: ellipse fill_(fillv) "URI" with .n at last ellipse.s+(0,-ww/16) + line from last ellipse.w left y then up Ext.y - URI.y + +.PE diff --git a/graphics/circuit_macros/examples/MoreTable.m4 b/graphics/circuit_macros/examples/MoreTable.m4 index bfc41113c1..ef8cd71824 100644 --- a/graphics/circuit_macros/examples/MoreTable.m4 +++ b/graphics/circuit_macros/examples/MoreTable.m4 @@ -5,6 +5,11 @@ cct_init movewid = 2 pt__ hm = 2.05 vm = 0.28 +{ right; {lamp ; move;"`{\tt lamp}'" ljust} + move right_ hm + {thermocouple ; move;"`{\tt thermocouple}'" ljust } +} + move down 0.25; right_ { {memristor ; move;"`{\tt memristor}'" ljust} move right_ hm {heater; move;"`{\tt heater}'" ljust} @@ -26,11 +31,9 @@ vm = 0.28 {arrowline ; move;"`{\tt arrowline}'" ljust} } move down 0.25; right_ -{ move down 0.10; right; {lamp ; move;"`{\tt lamp}'" ljust} +{ {xtal ; move ;"`{\tt xtal}'" ljust} move right_ hm - {thermocouple ; move;"`{\tt thermocouple}'" ljust } -# move up 0.10 right_ hm -# {arrester ; move ;"`{\tt arrester}'" ljust} + {xtal(,type=R;outerdiam=0.2) ; move ;"`{\tt xtal(,type=R)}'" ljust} } .PE diff --git a/graphics/circuit_macros/examples/Resistors.m4 b/graphics/circuit_macros/examples/Resistors.m4 index 6e79c91966..659f75ff65 100644 --- a/graphics/circuit_macros/examples/Resistors.m4 +++ b/graphics/circuit_macros/examples/Resistors.m4 @@ -9,22 +9,32 @@ vm = 0.28 move right_ hm {resistor(,,Q) ; move ;"`\tt resistor(,{,}Q) '" ljust} move right_ hm - {resistor(,,E) ; move - "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust} + {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust} } move down vm; right_ { {resistor(,,ES) ; move ;"`\tt resistor(,{,}ES) '" ljust} move right_ hm {resistor(,,H) ; move ;"`\tt resistor(,{,}H) '" ljust} move right_ hm - {ebox(,,,0.5) ; move ;"`{\tt ebox(,{,},0.5)}'" ljust} + {resistor(,,AC) ; move ;"`{\tt resistor(,{,}AC)}'" ljust} } move down vm; right_ -{ {resistor(,,V) ; move ;"`{\tt resistor(,{,}V)}'" ljust} +{ {resistor(,,B) ; move ;"`{\tt resistor(,{,}B)}'" ljust} + move right_ hm + {resistor(,,E) ; move + "`\shortstack[l]{\tt resistor(,{,}E)\\ {\tt $\equiv$ ebox}}'" ljust} move right_ hm {ebox(,0.5,0.3) ; move ;"`{\tt ebox(,0.5,0.3)}'" ljust} - move right_ hm+4bp__ - {resistor(,,B) ; move movewid-4bp__ ;"`{\tt resistor(,,B)}'" ljust} +} + move down vm; right_ +{ {ebox(,,,0.9) ; move ;"`{\tt ebox(,{,},0.9)}'" ljust} + move right_ hm + {ebox(,,,,shaded "green") ; move + "`{\tt ebox(,{,},{,}shaded \"green\")}'" ljust} +} + move down vm; right_ +{ {ebox(,wdth=0.2;box=dashed shaded "green";text="X") ; move + "`{\tt ebox(,wdth=0.2;box=dashed shaded \"green\";text=\"X\")}'" ljust} } .PE diff --git a/graphics/circuit_macros/examples/Rotbox.m4 b/graphics/circuit_macros/examples/Rotbox.m4 index 7b33d769e8..4480b8d8bd 100644 --- a/graphics/circuit_macros/examples/Rotbox.m4 +++ b/graphics/circuit_macros/examples/Rotbox.m4 @@ -5,7 +5,8 @@ gen_init Point_(-10) rotbox(boxwid/2,,thick 2) Point_(30) - rotbox(,,shaded "green" outlined "blue",r=0.1) at last []+vec_(boxwid,0) + rotbox(,,shaded "yellow" outlined "blue" thick 3,r=0.1) \ + at last []+vec_(boxwid,0) "r=0.1" at last [] move to last [].ne Point_(0) diff --git a/graphics/circuit_macros/examples/Shaky.m4 b/graphics/circuit_macros/examples/Shaky.m4 index 7bd5113a57..7eff994d91 100644 --- a/graphics/circuit_macros/examples/Shaky.m4 +++ b/graphics/circuit_macros/examples/Shaky.m4 @@ -5,27 +5,27 @@ NeedDpicTools divert(-1) `An attempt to draw shaky hand-drawn lines' - `shakyline(linespec,type,s=shake,[shakevals]) + `shakyline(linespec,type,shake=expr,[shakevals]) Draw a line with a tremor - arg3: s=shake parameter (default 1) + arg3: shake parameter (default 1) arg4=normal(0,1) perturbations used if given' define(`shakyline', `rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) - M4_start: last line.start - M4_end: last line.end - [ Start: M4_start - End: M4_end + L_start_: last line.start + L_end_: last line.end + [ Start: L_start_ + End: L_end_ llen = distance(Start,End) npts = round_(llen/linewid*4) - setkey_($3,s,1) - if "$4"=="" then { randn(d,npts-1,0,m4s*(llen/npts/8)) }\ - else { for i=1 to npts-1 do { d[i] = $4[i]*m4s*(llen/npts/8) }} + setkey_($3,shake,1) + if "$4"=="" then { randn(d,npts-1,0,m4shake*(llen/npts/8)) }\ + else { for i=1 to npts-1 do { d[i] = $4[i]*m4shake*(llen/npts/8) }} P[0]: Start for i=1 to npts-1 do { P[i]: i/npts between Start and End + (vec_(0,d[i])) } P[npts]: End spline $2 from P[0] to P[1] for i=2 to npts do { continue to P[i] } - ] with .Start at last line.start; move to last line.end') + ] with .Start at L_start_; move to L_end_') `shakyarc(arcspec,type,s=shake,[shakevals]) Draw an arc with a tremor @@ -33,12 +33,12 @@ define(`shakyline', arg4=normal(0,1) perturbations used if given' define(`shakyarc', `arc invis $1 - M4_start: last arc.start - M4_end: last arc.end - M4_C: last arc.c - [ Start: M4_start - End: M4_end - C: M4_C + A_start_: last arc.start + A_end_: last arc.end + A_C_: last arc.c + [ Start: A_start_ + End: A_end_ + C: A_C_ as = atan2(Start.y-C.y,Start.x-C.x) ae = atan2(End.y-C.y,End.x-C.x) ar = distance(Start,C) @@ -60,10 +60,10 @@ define(`shakyarc', arg4=normal(0,1) perturbations used if given' define(`shakyspline', `rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) - M4_start: last line.start - M4_end: last line.end - [ Start: M4_start - End: M4_end + SP_start_: last line.start + SP_end: last line.end + [ Start: SP_start_ + End: SP_end llen = distance(Start,End) npts = round_(llen/linewid*4) setkey_($3,s,1) @@ -115,8 +115,9 @@ divert(0) linethick = 2.5 round(,,colored "gray") nl = 10 - for i=1 to nl do { - shakyline(right 6/nl up 2*(2*pmod(i,2)-1),colored "gray",s=1) + for i=0 to nl do { + shakyline(right 6/nl up 2*(2*pmod(i,2)-1),colored "gray",shake=2-i/nl*2) + {sprintf("%g",2-i/nl*2) at 1/2 between L_start_ and L_end_ } round(,,colored "gray") } ] diff --git a/graphics/circuit_macros/examples/birds.m4 b/graphics/circuit_macros/examples/birds.m4 index 8d14ef1863..4b42ea35af 100644 --- a/graphics/circuit_macros/examples/birds.m4 +++ b/graphics/circuit_macros/examples/birds.m4 @@ -1,5 +1,7 @@ .PS +# Birds.m4 gen_init + scale = 50 linethick = 2*linethick diff --git a/graphics/circuit_macros/examples/control.m4 b/graphics/circuit_macros/examples/control.m4 index 400b8873ac..aa3de4bff9 100644 --- a/graphics/circuit_macros/examples/control.m4 +++ b/graphics/circuit_macros/examples/control.m4 @@ -15,15 +15,15 @@ S1: circle line right "$e(s)$" above { arrow right ; box ht bh wid bw "$K_p$" arrow right linewid-circlerad ; S2: circle } - { line up linewid ; arrow right ; box ht bh wid bw "$K_D s$" - line to (S2,Here) ; arrow to S2.n } - { line down linewid ; arrow right ; box ht bh wid bw "$K_I/s$" - line to (S2,Here) ; arrow to S2.s } + { arrow up linewid then right ; box ht bh wid bw "$K_D s$" + arrow to (S2,Here) then to S2.n } + { arrow down linewid then right ; box ht bh wid bw "$K_I/s$" + arrow to (S2,Here) then to S2.s } arrow right from S2.e "$u(s)$" above box "$G(s)$" arrow right ; "$y(s)$" above rjust at Here+(0,2pt__) - line down boxht*3/2 from last arrow.c then left last arrow.c.x-S1.x - arrow to S1.s + arrow down boxht*3/2 from last arrow.c then left last arrow.c.x-S1.x \ + then to S1.s "$-\;$" below rjust ] "(a) $PID$ control" below ljust at PID.sw+(0,-5pt__) @@ -190,7 +190,7 @@ E: circle box "stabilizer" "$K$" arrow "$\delta u$" above D: circle - line from Gh.e to (D,Gh.e) "$u_{\hbox{\scriptsize ref}}$" above + line from Gh.e to (D,Gh.e) "$u_{\hbox{\scriptsize ref}}$" above; corner arrow to D.n arrow from D.e right "$u$" above G: box "plant" "$G$" diff --git a/graphics/circuit_macros/examples/ex01.m4 b/graphics/circuit_macros/examples/ex01.m4 index e672fccc36..a566c4c2dd 100644 --- a/graphics/circuit_macros/examples/ex01.m4 +++ b/graphics/circuit_macros/examples/ex01.m4 @@ -17,13 +17,13 @@ Timer: [ define(`elen_',`linewid') Vs: dot down_ - variable(`resistor(,E); llabel(,\SI{1}{M})') - resistor(,E); llabel(,\SI{100}{\kilo{}}) + variable(`resistor(,,E); llabel(,\SI{1}{M})') + resistor(,,E); llabel(,\SI{100}{\kilo{}}) capacitor(,E); llabel(\SI{220}{\micro{}}) Zero: dot dot(at Vs+(elen_*4/3,0)) - resistor(,E); llabel(,\SI{33}{\kilo{}}) + resistor(,,E); llabel(,\SI{33}{\kilo{}}) line to (Here,Zero) chop 0 chop elen_ C2: capacitor; llabel(\SI{0.1}{\micro{}}) dot @@ -41,7 +41,7 @@ R: dot B: buzzer(,,C) with .In3 at Here line from B.In1 to (R,B.In1) reversed(`diode',to (Here,Vs),LE); "red" at last line.c+(elen_/2,0) - resistor(down_ elen_ from R,E); llabel(,\num{470}) + resistor(down_ elen_ from R,,E); llabel(,\num{470}) diode(to (Here,Zero),LE); {"green" at last line.c+(elen_*2/3,0)} line to Zero chop 0 chop -elen_ line up_ (Vs.y-Here.y)/3 diff --git a/graphics/circuit_macros/examples/examples.pdf b/graphics/circuit_macros/examples/examples.pdf index 300ab4abed..6d02c456cc 100644 Binary files a/graphics/circuit_macros/examples/examples.pdf and b/graphics/circuit_macros/examples/examples.pdf differ diff --git a/graphics/circuit_macros/examples/examples.tex b/graphics/circuit_macros/examples/examples.tex index 2b252a4e18..79979379bb 100644 --- a/graphics/circuit_macros/examples/examples.tex +++ b/graphics/circuit_macros/examples/examples.tex @@ -6,7 +6,7 @@ \usepackage{rotating} \usepackage{graphicx} \usepackage{boxdims} -\usepackage{upgreek} +%\usepackage{upgreek} \usepackage{siunitx} \usepackage{amssymb} @@ -35,7 +35,7 @@ This document duplicates a few diagrams from the manual Circuit\_macros.pdf. There are also a few files in the examples directory that are not included in this document. To process - {\sl file}.m4, for example, type "make {\sl file}.pdf." + {\sl file}.m4, for example, type "make {\sl file}.pdf". \input files \endinput @@ -54,9 +54,11 @@ debug2.m4 Escher.m4 Euro.m4 Floor.m4 +Geometry.m4 IC10107.m4 keyval.m4 Koch.m4 +Metamodel.m4 OpAmpFilter.m4 Orbits.m4 person.m4 diff --git a/graphics/circuit_macros/examples/files.tex b/graphics/circuit_macros/examples/files.tex index a33d0dc50d..5a04b20edc 100644 --- a/graphics/circuit_macros/examples/files.tex +++ b/graphics/circuit_macros/examples/files.tex @@ -8,7 +8,7 @@ \bfig{ \centerline{{\small\getpic{Resistors}}} - \caption{Resistors, showing some variations + \caption{Resistors, showing some variations and the ebox \src{Resistors.m4}.} } @@ -37,15 +37,15 @@ } \bfig{ - \centerline{\getpic{Sources}} - \caption{Sources and source-like elements - \src{Sources.m4}.} + \centerline{\getpic{Variable}} + \caption{Arrows and marks for showing variability + \src{Variable.m4}.} } \bfig{ - \centerline{\getpic{Variable}} - \caption{Arrows and marks indicating variability - \src{Variable.m4}.} + \centerline{\getpic{Sources}} + \caption{Sources and source-like elements + \src{Sources.m4}.} } \bfig{ @@ -84,18 +84,18 @@ \src{Antennas.m4}.} } -\bfig{ - \centerline{\getpic{Audio}} - \caption{Audio elements - \src{Audio.m4}.} - } - \bfig{ {\small\centerline{\getpic{Opamp}} } \caption{The opamp \src{Opamp.m4}.} } +\bfig{ + \centerline{\getpic{Audio}} + \caption{Audio elements + \src{Audio.m4}.} + } + \bfig{ {\small\centerline{\getpic{Xform}} } \caption{The transformer element, drawing direction down @@ -272,12 +272,6 @@ \src{ex18.m4}.} } -\bfig{ - \centerline{\getpic{MC}} - \caption{A three-phase switched AC-AC converter and a DC-DC converter - \src{MC.m4}.} - } - \bfig{ \centerline{\getpic{ex10}} \caption{Non-planar graph and bistable circuit @@ -291,6 +285,12 @@ \src{Three.m4}.} } +\bfig{ + \centerline{\getpic{MC}} + \caption{A three-phase switched AC-AC converter and a DC-DC converter + \src{MC.m4}.} + } + \bfig{ \centerline{\getpic{ex17}} \caption{A repetitive network created by Pic looping and @@ -478,7 +478,7 @@ The function tree is drawn, then a row or column of inputs, then the connections. The default result is on the left, a custom element at the top, and a tree of gates only is shown - on the right. THe lower examples illustrate the L, R, and V options.) + on the right. \src{Alogix.m4}.} } @@ -561,18 +561,18 @@ \src{ex09.m4}.} } -\bfig{ - \centerline{\getpic{Plate}} - \caption{Dimensioning with tolerances - \src{Plate.m4}.} - } - \bfig{ \centerline{\getpic{ex05}} \caption{Use of {\tt darrow} \src{ex05.m4}.} } +\bfig{ + \centerline{\getpic{Plate}} + \caption{Dimensioning with tolerances + \src{Plate.m4}.} + } + \bfig{ \centerline{\getpic{Loglog}} \caption{A graph drawn using the pic language @@ -599,7 +599,6 @@ determines plotting order \src{graysurf.m4}.} } -\clearpage \bfig{ \centerline{\getpic{shapes}} @@ -680,7 +679,7 @@ \bfig{ \centerline{\getpic{Counting}} \caption{An example of enumeration - \src{Counting.m4}.} + src{Counting.m4}.} } \bfig{ diff --git a/graphics/circuit_macros/examples/mf/cct.mf b/graphics/circuit_macros/examples/mf/cct.mf index dd0dcdfd11..16e77f4cbd 100644 --- a/graphics/circuit_macros/examples/mf/cct.mf +++ b/graphics/circuit_macros/examples/mf/cct.mf @@ -1,5 +1,5 @@ % cct.mf, generated by Mfpic, v1.10 2012/12/03, -% from TeX source "font" on 2021/06/02 at 22:43 +% from TeX source "font" on 2021/10/02 at 01:36 numeric mfpicversion; mfpicversion := 110; if unknown mode: mode := localfont; fi if unknown mag: mag := 1000/1000; fi diff --git a/graphics/circuit_macros/examples/squiggle.m4 b/graphics/circuit_macros/examples/squiggle.m4 index af5831f593..671ae2addd 100644 --- a/graphics/circuit_macros/examples/squiggle.m4 +++ b/graphics/circuit_macros/examples/squiggle.m4 @@ -1,4 +1,5 @@ .PS +# squiggle.m4 gen_init divert(-1) @@ -20,6 +21,6 @@ divert(0)dnl squiggle(up_ 1 right_ 2,,,outlined "red") squiggle(up 2 right_ 2,0.1,0.15,outlined "red" <-> wid 0.06 ht 0.05) -squiggle(right_ 1,,,dotted outlined "blue" wid 0.06 ht 0.05) +squiggle(right_ 1,,,thick 2 dotted outlined "blue" ) .PE diff --git a/graphics/circuit_macros/examples/svg/ByteSVG.m4 b/graphics/circuit_macros/examples/svg/ByteSVG.m4 index fcd6bdce60..ca059487e7 100644 --- a/graphics/circuit_macros/examples/svg/ByteSVG.m4 +++ b/graphics/circuit_macros/examples/svg/ByteSVG.m4 @@ -1,5 +1,5 @@ -% Byte.m4 .PS +# Byte.m4 gen_init(svg_font(sans-serif,11bp__)) boxht = 0.2 boxwid = 3.5 diff --git a/graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 b/graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 index 1942860d37..be6a8edd47 100644 --- a/graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 +++ b/graphics/circuit_macros/examples/svg/CapacitorsSVG.m4 @@ -1,5 +1,5 @@ .PS -# `Capacitors.m4' +# `CapacitorsSVG.m4' cct_init(svg_font(sans-serif,11pt__)) textwid = 1.5 movewid = 2 pt__ @@ -26,12 +26,17 @@ vm = 0.28 move right_ hm {capacitor(,N); move ; "`capacitor(,N) '" ljust} move right_ hm - {xtal ; move ; "`xtal '" ljust} + {capacitor(,CP); move ; "`capacitor(,CP) '" ljust} +# {xtal ; move ; "`xtal '" ljust} } move down 0.25; right_ { {capacitor(,dC); move ;"`capacitor(,dC) '" ljust} move right_ hm {capacitor(,dF); move ;"`capacitor(,dF) '" ljust} + move right_ hm + {variable(`capacitor',NN,-30,dimen_/3) + move ;"`variable('svg_grave`capacitor'svg_prime`,'" wid 97bp__ ljust \ + "` NN,-30,dimen_/3)'" ljust } } command "" # end font diff --git a/graphics/circuit_macros/examples/svg/ChipsSVG.m4 b/graphics/circuit_macros/examples/svg/ChipsSVG.m4 index 3d9ccb1edc..b85ce8d970 100644 --- a/graphics/circuit_macros/examples/svg/ChipsSVG.m4 +++ b/graphics/circuit_macros/examples/svg/ChipsSVG.m4 @@ -30,7 +30,7 @@ DIPs: [ { arrow <- from DIP0.Pin8 up 0.25 right 0.2 ; "svg_it(`Pin8')" above ljust } { "svg_tt(`DIP(32,direct=R;bodywid=0.5*scale)')" ljust \ - at DIP32.sw - (0,10bp__) } + at DIP32.sw - (20bp__,10bp__) } { arrow <- right 0.2 from DIP32.Pin1; "svg_it(`Pin1')" ljust } { spline <- right 0.2 then right 0.1 up 0.1 from DIP32.Pin32 "svg_it(`Pin32')" ljust } diff --git a/graphics/circuit_macros/examples/svg/EEPSVG.m4 b/graphics/circuit_macros/examples/svg/EEPSVG.m4 index 4f928f927d..277b704cd8 100644 --- a/graphics/circuit_macros/examples/svg/EEPSVG.m4 +++ b/graphics/circuit_macros/examples/svg/EEPSVG.m4 @@ -10,36 +10,38 @@ divert(-1) # already in libcct.m4. The contributions and suggestions of Benjamin # Vilmann are acknowledged with thanks. -# 1-terminal SLD elements: +# Notes for 1-terminal SLD elements: # Argument 1 is normally the linespec of the stem to set the element direction -# and length. See also: PtoL defined below. +# and length. See also: PtoL defined in libgen.m4. # For a 0-length stem (which has undefined direction): # arg1 can also be U, D, L, R (for up, down, left, right), # or a number to set the direction in degrees, optionally followed by # `at position' to set the position (Here by default). # Zero-length stem examples: sl_box(U), sl_box(45 at Here+(1,0)) # Argument 2 contains semicolon (;)-separated key-value attributes -# of the element head as applicable: e.g., name=Name; text="text"; lgth=expr -# A non-blank argument 3 is C for a default closed breaker in the stem, O for -# an open breaker, or key-value pairs to specify breaker details. -# The element body (head) can be named. It is overlaid with or contained in -# a [] block. - -# 2-terminal SLD elements: +# of the element head as applicable: e.g., name=Carol; text="Stop"; lgth=expr +# If argument 3 is blank then no breaker is drawn. A non-blank argument 3 +# is C for a default closed breaker in the stem, O for an open breaker, +# or key-value pairs to specify breaker details. +# The element body (head) can be named with name=. It is overlaid with +# or contained in a [] block. + +# Notes for 2-terminal SLD elements: # These obey the normal Circuit_macro two-terminal conventions. # They can be labelled using rlabel() or llabel() as well as directly. # Argument 2 contains key-value pairs to customize the element body, # e.g., name=Name; text="text"; wdth=expr; ... # Nonblank arguments 3 and 4 put a breaker in the input and output respectively. -# Attached breakers: +# Notes for attached breakers: # Nonblank arguments 3 and 4 of the two-terminal elements and argument 3 of # the 1-terminal elements specify a breaker in the input, output, and stem # respectivlely. An O creates a default-size open breaker, and C a closed # breaker, otherwise the argument contains key-value pairs to specify the # details of the box; e.g., box=dotted 2bp__ shaded "green" -# The SLD current transformer macro sl_ct is composite, within a [] block. +# Notes for composite elements within a [ ] block: +# The SLD current transformer macro sl_ct is composite. # Internal labels L (for inductor) and terminals Ts, Tc, and Te are defined. define(`sldlib_') @@ -195,24 +197,31 @@ define(`sl_eleminit_', input breaker keys, output breaker keys) keys: type=I|S - (type=I) scale=expr; (default 1.5) + (type=I) loopwid=expr; (default dimen_*3/10) cycles=n; (default 4) + core= A[ir]|M[n]|P[n]|K[n] + n=integer (default 2 lines) (type=S) body=shaded "color"; name=Body name; (breaker default names BrI, BrO)' define(`sl_transformer', - `setkeys_(`$2',name::N; type:I:N; cycles:4:N; body::N; scale:1.5:; )dnl + `setkeys_(`$2',name::N; type:I:N; cycles:4:N; core::N; body::N; + loopwid:3/20*dimen_; )dnl ifelse(`$3'`$4',, `ifinstr(m4type,S, `source(`$1',G,,,m4body)', `eleminit_(`$1'); m4atmp = rp_ang; m4slen = rp_len - define(`m4swd',`dimen_*3/16*m4scale')dnl + ifelse(ifinstr(m4core,M,T,m4core,P,T,m4core,K,T),T, + `define(`m4nL',ifelse(len(m4core),1,2,substr(m4core,1)))dnl + define(`m4swd',(m4loopwid + dimen_/12+(m4nL-1)*dimen_/16))',dnl + `define(`m4swd',(m4loopwid*3/2))')dnl { line to rvec_((m4slen-m4swd)/2,0) - {ifelse(m4name,,SL_box,m4name): [ linewid = linewid*m4scale - {L1: inductor(to vec_(0,-m4cycles*dimen_/8),,m4cycles)} + {ifelse(m4name,,SL_box,m4name): [#linewid = linewid*m4scale + {L1: inductor(to vec_(0,-m4cycles*m4loopwid),,m4cycles,m4core, + m4loopwid)} {point_(m4atmp) - L2: inductor(from vec_(dimen_*3/16,-m4cycles*dimen_/8) \ - to vec_(dimen_*3/16,0),,m4cycles)} + L2: inductor(from vec_(m4swd,-m4cycles*m4loopwid) \ + to vec_(m4swd,0),,m4cycles,,m4loopwid)} C2: last line.c; point_(m4atmp) ] with .L1.c at Here} line from rvec_(m4swd,0) to rvec_((m4slen+m4swd)/2,0) } line invis to rvec_(rp_len,0)') ', @@ -389,6 +398,17 @@ define(`sl_ct', # ####################################################################### +# The following is defined in Circuit_macros 9.5.4 or later: + + `setkeys_(string,keysequence) + Invoke setkey_ on arg1 and each term in a + sequence of terms. + keysequence is a ;-separated sequence + of terms of the form + identifier:default value:N ' +define(`setkeys_',`Loopover_(`M4sk',`setkey_(`$1',patsubst(M4sk,:,`,')) dnl', + patsubst(`$2',;,`,'))') + divert(0)dnl diff --git a/graphics/circuit_macros/examples/svg/GeometrySVG.m4 b/graphics/circuit_macros/examples/svg/GeometrySVG.m4 index bb6ff0bd2a..5dc1284d08 100644 --- a/graphics/circuit_macros/examples/svg/GeometrySVG.m4 +++ b/graphics/circuit_macros/examples/svg/GeometrySVG.m4 @@ -1,9 +1,10 @@ .PS # Geometry.m4 gen_init + maxpswid = 10 scale = 5/4 -G: [ +Fig1: [ A: Here; "A" at A above B: A+(-1,-3.5); "B" at B below rjust @@ -12,7 +13,7 @@ G: [ BC: line from B to C CA: line from C to A - PerpTo(A,BC,L); "L" at L below + perpto(A,BC,L); "L" at L below AL: line from A to L; RightAngle(A,L,C) angleLAC = atan2(C.x-L.x,A.y-L.y) @@ -20,10 +21,10 @@ G: [ AW: line from A to Intersect_(S,BC) W: Here; "W" at W below rjust - PerpTo(C,AB,N); "N" at N above rjust + perpto(C,AB,N); "N" at N above rjust CN: line from C to N; RightAngle(C,N,B) - PerpTo(B,CA,M); "M" at M above + perpto(B,CA,M); "M" at M above CM: line from B to M; RightAngle(B,M,C) H: Intersect_(CN,AL); "H" at H +(4bp__,10bp__) @@ -45,7 +46,8 @@ G: [ line dashed from X to Y chop -linewid/2 RightAngle(A,Z,Y) ] scaled 0.8 -Lyap: [ + +Fig2: [ #.PS # Lyap.m4 threeD_init @@ -205,6 +207,27 @@ arrow from F[n/2] to Project(0,0,2) "svg_it(v(X) = c)" at (Project(vp(100*dtor_,c)))+(2bp__,0) above ljust #.PE - ] scaled 1.5 with .sw at last [].se+(0.5,0) + ] scaled 1.5 with .w at last [].e+(0.5,0) + +Fig3: [ +# https://tex.stackexchange.com/questions/609452/help-drawing-a-more-sophisticated-right-triangle-with-tikz-or-something-else +gen_init + + unit = 0.8 + C: Here; { "C" at C rjust below } + B: C+(4*unit,0); { "B" at B ljust below } + A: C+(0,3*unit); { "A" at A rjust above } + H: PerpTo(C,A,B); { "H" at H ljust above } + line from C to H then to B then to C shaded rgbstring(0.5,0.8,0.9) + line from C to H then to A then to C shaded rgbstring(0.8,0.9,0.7) + ArcAngle(C,A,B,unit*0.4) + ArcAngle(C,A,B,unit*0.5) + ArcAngle(A,B,C,unit*0.5,,"svg_theta" rjust) + ArcAngle(B,C,H,unit*0.5); {"svg_theta" at C+(unit*0.3,unit*0.17) } + ArcAngle(B,C,A,unit*0.6) + RightAngle(B,C,A,unit*0.17) + RightAngle(C,H,A,unit*0.17) + + ] with .sw at Fig2.se+(0.2,0) .PE diff --git a/graphics/circuit_macros/examples/svg/MoreTableSVG.m4 b/graphics/circuit_macros/examples/svg/MoreTableSVG.m4 index e06efb5d5e..5966216c59 100644 --- a/graphics/circuit_macros/examples/svg/MoreTableSVG.m4 +++ b/graphics/circuit_macros/examples/svg/MoreTableSVG.m4 @@ -35,6 +35,8 @@ vm = 0.28 {thermocouple ; move;"`thermocouple '" ljust } # move up 0.10 right_ hm # {arrester ; move ;"`arrester '" ljust} + move right_ hm + {xtal ; move ;"`xtal '" ljust} } command "" # end font diff --git a/graphics/circuit_macros/examples/svg/ResistorsSVG.m4 b/graphics/circuit_macros/examples/svg/ResistorsSVG.m4 index 4fb0be47f0..4da2b4f344 100644 --- a/graphics/circuit_macros/examples/svg/ResistorsSVG.m4 +++ b/graphics/circuit_macros/examples/svg/ResistorsSVG.m4 @@ -8,26 +8,40 @@ vm = 0.28 hm = 2.05 vm = 0.28 -{ {resistor ; move ; svgLink(NportSVG.svg,"`resistor'" ljust)} +{ + {resistor ; move ; svgLink(NportSVG.svg,"`resistor'" ljust)} move right_ hm {resistor(,,Q) ; move ; "`resistor(,,Q) '" ljust} move right_ hm - {resistor(,,E) ; move - "`resistor(,,E)'" ljust " svg_equiv `ebox'" ljust} + {resistor(,,V) ; move ; "`resistor(,,V) '" ljust} } move down vm; right_ -{ {resistor(,,ES) ; move ; "`resistor(,,ES) '" ljust} +{ + {resistor(,,ES) ; move ; "`resistor(,,ES) '" ljust} move right_ hm {resistor(,,H) ; move ; "`resistor(,,H) '" ljust} move right_ hm - {ebox(,,,0.5) ; move ; "`ebox(,,,0.5) '" ljust} + {resistor(,,AC) ; move ; "`resistor(,,AC) '" ljust} } move down vm; right_ -{ {resistor(,,V) ; move ; "`resistor(,,V) '" ljust} +{ + {resistor(,,B) ; move ; "`resistor(,,B) '" ljust} + move right_ hm + {resistor(,,E) ; move + "`resistor(,,E)'" ljust " svg_equiv `ebox'" ljust} move right_ hm {ebox(,0.5,0.3) ; move ;"`ebox(,0.5,0.3) '" ljust} - move right_ hm+4bp__ - {resistor(,,B) ; move movewid-4bp__ ; "`resistor(,,B) '" ljust} +} + move down vm; right_ +{ + {ebox(,,,0.6) ; move ; "`ebox(,,,0.6) '" ljust} + move right_ hm + {ebox(,,,,shaded "green") ; move ;"`ebox(,,,,shaded \"green\") '" ljust} +} + move down vm; right_ +{ + {ebox(,wdth=0.2;box=dashed shaded "green";text="X") ; move + "`ebox(,wdth=0.2;box=dashed shaded \"green\";text=\"X\")'" ljust} } command "" # end font diff --git a/graphics/circuit_macros/examples/svg/RotboxSVG.m4 b/graphics/circuit_macros/examples/svg/RotboxSVG.m4 index 3d4fbde82b..cb65d317fc 100644 --- a/graphics/circuit_macros/examples/svg/RotboxSVG.m4 +++ b/graphics/circuit_macros/examples/svg/RotboxSVG.m4 @@ -1,5 +1,5 @@ -% Rotbox.m4 .PS +# RotboxSVG.m4 gen_init #nclude(dpictools.pic) @@ -7,7 +7,8 @@ gen_init Point_(-10) rotbox(boxwid/2,,thick 2) Point_(30) - rotbox(,,shaded "green" outlined "blue",r=0.1) at last []+vec_(boxwid,0) + rotbox(,,shaded "yellow" outlined "blue" thick 3,r=0.1) \ + at last []+vec_(boxwid,0) "r=0.1" at last [] move to last [].ne Point_(0) diff --git a/graphics/circuit_macros/examples/svg/SLD.m4 b/graphics/circuit_macros/examples/svg/SLD.m4 new file mode 100644 index 0000000000..96f04f7235 --- /dev/null +++ b/graphics/circuit_macros/examples/svg/SLD.m4 @@ -0,0 +1,389 @@ +divert(-1) + +# This section defines *DRAFT* SLD elements with or without attached +# circuit breakers. Many other elements applicable to SLD drawings are +# already in libcct.m4. The contributions and suggestions of Benjamin +# Vilmann are acknowledged with thanks. + +# Notes for 1-terminal SLD elements: +# Argument 1 is normally the linespec of the stem to set the element direction +# and length. See also: PtoL defined in libgen.m4. +# For a 0-length stem (which has undefined direction): +# arg1 can also be U, D, L, R (for up, down, left, right), +# or a number to set the direction in degrees, optionally followed by +# `at position' to set the position (Here by default). +# Zero-length stem examples: sl_box(U), sl_box(45 at Here+(1,0)) +# Argument 2 contains semicolon (;)-separated key-value attributes +# of the element head as applicable: e.g., name=Carol; text="Stop"; lgth=expr +# If argument 3 is blank then no breaker is drawn. A non-blank argument 3 +# is C for a default closed breaker in the stem, O for an open breaker, +# or key-value pairs to specify breaker details. +# The element body (head) can be named with name=. It is overlaid with +# or contained in a [] block. + +# Notes for 2-terminal SLD elements: +# These obey the normal Circuit_macro two-terminal conventions. +# They can be labelled using rlabel() or llabel() as well as directly. +# Argument 2 contains key-value pairs to customize the element body, +# e.g., name=Name; text="text"; wdth=expr; ... +# Nonblank arguments 3 and 4 put a breaker in the input and output respectively. + +# Notes for attached breakers: +# Nonblank arguments 3 and 4 of the two-terminal elements and argument 3 of +# the 1-terminal elements specify a breaker in the input, output, and stem +# respectivlely. An O creates a default-size open breaker, and C a closed +# breaker, otherwise the argument contains key-value pairs to specify the +# details of the box; e.g., box=dotted 2bp__ shaded "green" + +# Notes for composite elements within a [ ] block: +# The SLD current transformer macro sl_ct is composite. +# Internal labels L (for inductor) and terminals Ts, Tc, and Te are defined. + +define(`sldlib_') +ifdef(`libcct_',,`include(libcct.m4)divert(-1)') + +# Default size parameters. These can be redefined in a diagram. + +define(`brksiz_',`dimen_*3/16') # Default inline box breaker size +define(`drosiz_',`dimen_/4') # Default sl_drawout (chevron) size + +# One-terminal elements ################################################### + + `sl_disk( stem linespec, keys, breaker ) + keys: name=Name; + text="text"; + diam=expr; + circle=circle attributes; eg diam expr' + `default breaker name Bd' +define(`sl_disk', + `sl_eleminit_(`$1') + setkeys_(`$2',`name::N; circle::N; text::N; diam:dimen_*2/3')dnl + ifelse(`$3',, + `ifelse(m4name,,,m4name:) circle diam m4diam \ + at last line.end + vec_(m4diam/2,0) m4circle m4text + [ box invis wid_ m4diam ht_ m4diam ] at last circle + line from last line.end to last line.start', + `m4br_one(`sl_disk',`$1',`$2',m4brk_(`$3',Bd))') ') + + `sl_box( stem linespec, keys, breaker ) + keys: name=Name; lgth=expr; wdth=expr; + text="text"; + box= box attributes; (e.g. shade "red")' + `default breaker name Bb' +define(`sl_box', + `sl_eleminit_(`$1') + setkeys_(`$2',`name::N; wdth:dimen_*2/3; lgth:dimen_*2/3; box::N; text::N')dnl + ifelse(`$3',, + `line from last line.end to last line.start + { ifelse(m4name,,,m4name:) [S:Here; lbox(m4lgth,m4wdth,m4box)] \ + with .S at last line.start } + ifelse(m4text,,,`{m4text at last []}')', + `m4br_one(`sl_box',`$1',`$2',m4brk_(`$3',Bb))') ') + + `sl_grid( stem linespec, keys, breaker ) + keys: name=Name; lgth=expr; wdth=expr;' + `default breaker name Bgr' +define(`sl_grid', + `sl_eleminit_(`$1') + setkeys_(`$2',`name::N; wdth:dimen_*4/5; lgth:dimen_*2/3; box::N; text::N')dnl + ifelse(`$3',, + `line from last line.end to last line.start + { ifelse(m4name,,,m4name:) [S:Here + { ifelse(m4name,,,m4name:) lbox(m4lgth,m4wdth) } + { line to rvec_(m4lgth/2, m4wdth/2) + line to rvec_(m4lgth/2,-m4wdth/2) + line to rvec_(-m4lgth/2,-m4wdth/2) + line to rvec_(-m4wdth/2, m4wdth/2) } + { line from rvec_(0,m4wdth/2) to rvec_(m4lgth,-m4wdth/2) } + line from rvec_(0,-m4wdth/2) to rvec_(m4lgth,m4wdth/2) + ] with .S at last line.start } ', + `m4br_one(`sl_grid',`$1',`$2',m4brk_(`$3',Bgr))') ') + + `sl_load( stem linespec, keys, breaker ) + keys: name=Name; lgth=expr; wdth=expr; + head= arrowhead attributes;' + `default breaker name Bl' +define(`sl_load', + `sl_eleminit_(`$1') + setkeys_(`$2',`name::N; wdth:dimen_*0.32; lgth:dimen_*0.45; head::N')dnl + ifelse(`$3',, + `line from last line.end to last line.start + { ifelse(m4name,,,m4name:) [S:Here; line to rvec_(0,m4wdth/2) \ + then to rvec_(m4lgth,0) then to rvec_(0,-m4wdth/2) \ + then to Here m4head ] with .S at last line.start } ', + `m4br_one(`sl_load',`$1',`$2',m4brk_(`$3',Bl))') ') + + `sl_meterbox( stem linespec, keys, breaker ) + keys: sl_box attributes' + `default breaker name Bm' +define(`sl_meterbox', + `sl_eleminit_(`$1') + setkeys_(`$2',`name::N; wdth:dimen_*2/3; lgth:dimen_*2/3; box::N; text::N')dnl + ifelse(`$3',, + `line from last line.end to last line.start + {ifelse(m4name,,,m4name:) [S:Here; + { B: rotbox( m4lgth, m4wdth, m4box ) with .W at S } + a = rp_ang*rtod_ + if (abs(a-90) < 45) || (abs(a-180) < 45) || (abs(a+180) < 45) then { + C: rvec_(m4lgth*2/5,0) + line from rvec_(m4lgth*4/5,m4wdth/2) to rvec_(m4lgth*4/5,-m4wdth/2) } \ + else { C: rvec_(m4lgth*3/5,0) + line from rvec_(m4lgth/5,m4wdth/2) to rvec_(m4lgth/5,-m4wdth/2) } + ifelse(m4text,,,`m4text at C') + ] with .S at last line.start}', + `m4br_one(`sl_meterbox',`$1',`$2',m4brk_(`$3',Bm))') ') + + `sl_generator( stem linespec, keys, breaker )' + `default breaker name Bd' +define(`sl_generator',`sl_disk($@) + { ACsymbol(at last circle,,,R) + m4lcd = last circle.diam + [ box invis wid_ m4lcd ht_ m4lcd ] at last circle } ') + + `sl_syncmeter( stem linespec, keys, breaker )' + `default breaker name Bd' +define(`sl_syncmeter',`sl_disk($@) + { Syncsymb(at last circle) + m4lcd = last circle.diam + [ box invis wid_ m4lcd ht_ m4lcd ] at last circle } ') + + `sl_lamp( stem linespec, keys, breaker )' + `default breaker name Bd' +define(`sl_lamp',`sl_disk($@) + { line from last circle.ne to last circle.sw + line from last circle.nw to last circle.se + m4lcd = last circle.diam + [ box invis wid_ m4lcd ht_ m4lcd ] at last circle } ') + +# One-terminal utilities ################################################## + + `Syncsymb(at position, rad) + Symbol for sync meter' +define(`Syncsymb',`[ define(`m4ssrad',`ifelse(`$2',,(dimen_/4),`($2)')')dnl + Origin: Here + {arc <-> ht arrowht/2 wid arrowwid*2/3 \ + from Rect_(m4ssrad,30) to Rect_(m4ssrad,150) with .c at Here} + line from (0,m4ssrad) to (0,-m4ssrad/2) + `$3' ] with .Origin ifelse(`$1',,`at Here',`$1')') + + `m4br_one( `name', stem linespec, body keys, + breaker keys )' + `Draw the breaker in the stem then the element' +define(`m4br_one', + `M4_S: last line.start + setkey_(`$4',lgth,brksiz_)dnl + line from M4_S to last line.end+vec_(-(m4lgth)*5/2,0) + sl_breaker(to rvec_(m4lgth,0),`$4') + $1(to rvec_((m4lgth)*3/2,0),`$3') + move to M4_S ') + + `sl_eleminit_(linespec or (for zero length) + U|D|L|R|number [at location])' +define(`sl_eleminit_', + `ifelse(regexp(`$1',^ *[UDLR0123456789]),-1, + `eleminit_(`$1',dimen_)', + `pushdef(`M4pos',`ifinstr(`$1',` at ',`patsubst(`$1',^.* at *)')')dnl + ifelse(M4pos,,,`move to M4pos;') setdir_(patsubst(`$1',` at.*')) + line invis from Here to Here popdef(`M4pos')')') + +# Two-terminal elements ################################################### + + `sl_transformer(linespec,keys, + input breaker keys, output breaker keys) + keys: + type=I|S + (type=I) scale=expr; (default 1.5) + cycles=n; (default 4) + (type=S) body=shaded "color"; + name=Body name; + (breaker default names BrI, BrO)' +define(`sl_transformer', + `setkeys_(`$2',name::N; type:I:N; cycles:4:N; body::N; scale:1.5:; )dnl + ifelse(`$3'`$4',, + `ifinstr(m4type,S, + `source(`$1',G,,,m4body)', + `eleminit_(`$1'); m4atmp = rp_ang; m4slen = rp_len + define(`m4swd',`dimen_*3/16*m4scale')dnl + { line to rvec_((m4slen-m4swd)/2,0) + {ifelse(m4name,,SL_box,m4name): [ linewid = linewid*m4scale + {L1: inductor(to vec_(0,-m4cycles*dimen_/8),,m4cycles)} + {point_(m4atmp) + L2: inductor(from vec_(dimen_*3/16,-m4cycles*dimen_/8) \ + to vec_(dimen_*3/16,0),,m4cycles)} + C2: last line.c; point_(m4atmp) ] with .L1.c at Here} + line from rvec_(m4swd,0) to rvec_((m4slen+m4swd)/2,0) } + line invis to rvec_(rp_len,0)') ', + `m4br_two(`sl_transformer',`$1',`$2',m4brk_(`$3',BrI),m4brk_(`$4',BrO), + ifelse(`$3',,,I)`'ifelse(`$4',,,O))') ') + + `Two-terminal box' + `sl_ttbox(linespec,keys,breaker keys,breaker keys) + keys= lgth=expr; wdth=expr; box=attributes; + supp=additional rotbox commands; name=Body name; + text="text"; + (breaker default names BrI, BrO)' +define(`sl_ttbox', + `setkeys_(`$2',`lgth:dimen_*3/4; wdth:dimen_*3/4; + name::N; box::N; text::N; supp::N')dnl + ifelse(`$3'`$4',, + `eleminit_(`$1') + {line to rvec_((rp_len-m4lgth)/2,0) + {ifelse(m4name,,,m4name:)rotbox(m4lgth,m4wdth,m4box,,m4supp) \ + with .W at Here } + {ifelse(m4text,,,`{m4text at rvec_(m4lgth/2,0)}') } + line from rvec_(m4lgth,0) to rvec_((rp_len+m4lgth)/2,0)} + line invis to rvec_(rp_len,0) ', + `m4br_two(`sl_ttbox',`$1',`$2',m4brk_(`$3',BrI),m4brk_(`$4',BrO), + ifelse(`$3',,,I)`'ifelse(`$4',,,O))') ') + +define(`m4brk_',`ifelse(`$1',,, + `ifelse(`$1',C,,`$1',O,box=fill 0,`$1')`'ifelse(`$2',,,;name=`$2')')') + + `sl_rectifier(ttbox args)' +define(`sl_rectifier', + `sl_ttbox(`$@') + { line from last [].Line.ne to last [].Line.sw + AC: ACsymbol(at last [].C+(-m4lgth/6, m4wdth/4),,,R) + DC: DCsymbol(at 2nd last [].C+( m4lgth/6,-m4wdth/4),,,R) } ') + + `sl_inverter(ttbox args)' +define(`sl_inverter', + `sl_ttbox(`$@') + { line from last [].Line.ne to last [].Line.sw + DC: DCsymbol(at last [].C+(-m4lgth/6, m4wdth/4),,,R) + AC: ACsymbol(at 2nd last [].C+( m4lgth/6,-m4wdth/4),,,R) } ') + + `sl_breaker(linespec, type=[A|C][D]; ttbox keys) + C is for curved breaker + D is for sl_drawout' +define(`sl_breaker', + `setkeys_(`$2',`lgth:brksiz_; wdth:brksiz_; name::N; type::N')dnl + ifinstr(m4type,C, + `ifinstr(m4type,D, + `m4ch_two(`cbreaker',`$1')', + `ifelse(m4name,,,m4name:) cbreaker(`$1')')', + `ifinstr(m4type,D, + `m4ch_two(`sl_ttbox',`$1',lgth=m4lgth;wdth=m4wdth;`$2';name=Br)', + `sl_ttbox(`$1',lgth=m4lgth;wdth=m4wdth;`$2')') ') ') + + `sl_reactor(linespec,keys,breaker keys,breaker keys) + keys= + diam=expr, + (Default breaker names BrI and BrO)' +define(`sl_reactor', + `setkeys_(`$2',`diam:sourcerad_*4/3; type::N')dnl + ifelse(`$3'`$4',, + `eleminit_(`$1') + { line to rvec_(rp_len/2,0) then to rvec_(rp_len/2,-m4diam/2); round + arc rad m4diam/2 cw from Here to rvec_(m4diam/2,m4diam/2) \ + with .c at rvec_(0,m4diam/2); round + line to rvec_(rp_len/2-m4diam/2,0) } + {[ box invis ht m4diam wid m4diam ] at rvec_(rp_len/2,0)} + line invis to rvec_(rp_len,0) ', + `m4br_two(`sl_reactor', `$1', lgth=m4diam*2;`$2', + m4brk_(`$3',BrI),m4brk_(`$4',BrO),ifelse(`$3',,,I)`'ifelse(`$4',,,O))')') + + `sl_busbar( linespec, nports, keys ) + Labels P1, P2 ... Pnports are defined on the line. + keys: line=line attributes; + port=D; (dotted ports) + The bus extends beyond the first and last points + by dimen_/5 which can be redefined as + line=chop -(expr)' +define(`sl_busbar', + `define(`m4npoints',`ifelse(`$2',,2,`$2')')dnl + setkeys_(`$3',`line:thick 1.6 chop -dimen_/5:N; port::N')dnl + [ tmp_ang = rp_ang + eleminit_(`$1',(m4npoints-1)*dimen_) + Start: last line.start; End: last line.end + for_(1,m4npoints,1, + `P`'m4x: (m4x-1)/(m4npoints-1) between Start and End dnl + ifinstr(m4port,D,` ;dot(at P`'m4x)')') + Line: line from Start to End m4line + Start: last line.start; End: last line.end + point_(tmp_ang) ] ') + + `sl_drawout(linespec, keys, R) + Drawout (i.e. plugin) chevron element; + keys: type=T; (truncated leads) + lgth=expr; (body size) + wdth=expr; + name=Name; (body name) + line= line attributes (e.g. thick 2) + arg3=R reverse direction' +define(`sl_drawout', + `setkeys_(`$2',`lgth:drosiz_; wdth:drosiz_; type::N; name::N; line::N')dnl + eleminit_(`$1',ifelse(m4type,T,m4lgth)) + ifelse(`$3',R,`{M4ds: Here; move to last line.end; rp_ang = rp_ang+pi_') + {line to rvec_(rp_len/2,0) + ifelse(m4name,,,m4name:) [ + S: Here; {line from rvec_(-m4lgth/2,m4wdth/2) to Here then + to rvec_(-m4lgth/2,-m4wdth/2) m4line } + E: rvec_(m4lgth/2,0); line from rvec_(0,m4wdth/2) to E then + to rvec_(0,-m4wdth/2) m4line ] with .S at Here + ifelse(m4type,T,, + line from last [].E to last [].E+vec_((rp_len-m4lgth)/2,0))} + ifelse(`$3',R,`rp_ang = rp_ang-pi_; move to M4ds}') + line invis to rvec_(rp_len,0) ') + +# Two-terminal utilities ################################################## + + `Breakers in the input and output lines:' + `m4br_two(`2-term element macroname in quotes', + linespec, body keys, + input breaker keys, + output breaker keys, + I|O|IO)' + `(Default breaker names are BrI and BrO)' +define(`m4br_two', + `define(`m4il',`ifinstr(`$6',I,`setkey_(`$4',lgth,brksiz_) m4lgth',0)')dnl + define(`m4ol',`ifinstr(`$6',O,`setkey_(`$5',lgth,brksiz_) m4lgth',0)')dnl + define(`m4bl',`setkey_(`$3',lgth,dimen_*4/3) m4lgth')dnl + eleminit_(`$2',dimen_*3) + M4start: Here; M4end: last line.end + M4cc: last line.c+vec_(((m4il*3/2)-(m4ol*3/2)),0) + M4ii: M4cc+vec_(-min((m4bl/2+m4il/2),distance(M4start,M4cc)-m4il),0) + line from M4start to ifinstr(`$6',I, + `M4ii+vec_(-m4il,0); sl_breaker(to M4ii,`$4';name=BrI)',M4ii) + M4oi: M4cc+vec_(min((m4bl/2+m4ol/2),distance(M4end,M4cc)-m4ol),0) + $1(from M4ii to M4oi,`$3') + ifinstr(`$6',O,`sl_breaker(to M4oi+vec_(m4ol,0),`$5';name=BrO)') + line to M4end + line invis from M4start to M4end ') + + `Chevrons in the input and output lines:' + `m4ch_two(`2-term element macroname in quotes', + linespec, body keys, + input breaker keys, + output breaker keys, + I|O|IO)' +define(`m4ch_two', + `define(`m4bl',`setkey_(`$3',lgth,dimen_*3/8) m4lgth')dnl + eleminit_(`$2',dimen_*3) + M4start: Here; M4end: last line.end + M4elem: $1(to rvec_(m4bl+2*drosiz_,0) with .c at last line.c,`$3') + sl_drawout(from last line.start-vec_(drosiz_,0) to last line.start,type=T,R) + line from last line.start to M4start + sl_drawout(from M4elem.end to M4elem.end+vec_(drosiz_,0),type=T) + line to M4end + line invis from M4start to M4end') + +# Composite elements ################################################### + + `sl_ct( at position, stem length, U|D|L|R|expr, + scale=expr) (default scale is 1.5)' +define(`sl_ct', + `[ setdir_(`$3'); setkey_(`$4',scale,1.5); linewid = linewid*m4scale + L: inductor(to vec_(2*dimen_/8,0),,2) + stemlen = ifelse(`$2',,dimen_/5,`$2') + line from L.start to L.start+vec_(0,-stemlen) + Ts: Here + line from L.end to L.end+vec_(0,-stemlen) + Te: Here + line from L.c to L.c+vec_(0,-stemlen) + Tc: Here + resetdir_ ] with .L.c at ifelse(`$1',,Here,patsubst(`$1',^ *at *)) ') + +# ####################################################################### + +divert(0)dnl diff --git a/graphics/circuit_macros/examples/svg/SchottkySVG.m4 b/graphics/circuit_macros/examples/svg/SchottkySVG.m4 index 68a7037eb5..51e21bc291 100644 --- a/graphics/circuit_macros/examples/svg/SchottkySVG.m4 +++ b/graphics/circuit_macros/examples/svg/SchottkySVG.m4 @@ -1,5 +1,5 @@ -% SchottkySVG.m4 .PS +# SchottkySVG.m4 # 4-input positive NAND: the Schottky option for transistors (TI TTL data book) cct_init(svg_font(sans-serif,11bp__,1bp__)) diff --git a/graphics/circuit_macros/examples/svg/ex01SVG.m4 b/graphics/circuit_macros/examples/svg/ex01SVG.m4 index b8787d1539..dd22dd8494 100644 --- a/graphics/circuit_macros/examples/svg/ex01SVG.m4 +++ b/graphics/circuit_macros/examples/svg/ex01SVG.m4 @@ -16,13 +16,13 @@ Timer: [ define(`elen_',`linewid') Vs: dot down_ - variable(`resistor(,E); llabel(,svg_norm(1 M`'svg_ohm))'); - resistor(,E); llabel(,svg_norm(100 k`'svg_ohm)) + variable(`resistor(,,E); llabel(,svg_norm(1 M`'svg_ohm))'); + resistor(,,E); llabel(,svg_norm(100 k`'svg_ohm)) capacitor(,E); llabel(svg_norm(220 svg_micro`'F)) Zero: dot dot(at Vs+(elen_*4/3,0)) - resistor(,E); llabel(,svg_norm(33 k`'svg_ohm)) + resistor(,,E); llabel(,svg_norm(33 k`'svg_ohm)) line to (Here,Zero) chop 0 chop elen_ C2: capacitor; llabel(svg_norm(0.1 svg_micro`'F)) dot @@ -40,7 +40,7 @@ R: dot B: buzzer(,,C) with .In3 at Here line from B.In1 to (R,B.In1) reversed(`diode',to (Here,Vs),LE); "red" at last line.c+(elen_/2,0) - resistor(down_ elen_ from R,E); llabel(,svg_norm(470 svg_ohm)) + resistor(down_ elen_ from R,,E); llabel(,svg_norm(470 svg_ohm)) diode(to (Here,Zero),LE); {"green" wid 0.4 at last line.c+(elen_*2/3,0)} line to Zero chop 0 chop -elen_ line up_ (Vs.y-Here.y)/3 diff --git a/graphics/circuit_macros/examples/svg/examplesSVG.htmx b/graphics/circuit_macros/examples/svg/examplesSVG.htmx index 22ab9f9c42..ec9847b32e 100644 --- a/graphics/circuit_macros/examples/svg/examplesSVG.htmx +++ b/graphics/circuit_macros/examples/svg/examplesSVG.htmx @@ -51,9 +51,9 @@ ifinstr(`$3',y,,`
')') --------------------------------------------------------------------- --> - - -
+
+

SVG Circuit_macros examples, Version XXX


@@ -193,7 +193,6 @@ There are a number of other issues: and https://www.toptal.com/designers/htmlarrows/math/ --> -
m4tt svg_alpha changecom(,)&`#'945;changecom(`#') @@ -253,6 +252,7 @@ There are a number of other issues: m4tt svg_rparen changecom(,)&`#'41;changecom(`#') m4tt svg_circ changecom(,)&`#'710;changecom(`#') m4tt svg_deg changecom(,)&`#'176;changecom(`#') + m4tt svg_grave changecom(,)&`#'96;changecom(`#')
@@ -262,7 +262,6 @@ There are a number of other issues:
m4tt svg_thinsp |changecom(,)&`#'8201;changecom(`#')|
-
  • Inkscape: It may be efficient to define elements by macro and to @@ -301,7 +300,7 @@ There are a number of other issues:
    cfig(ResistorsSVG, - Resistors, showing some variations) + Resistors, showing some variations and the ebox) cfig(CapacitorsSVG, Capacitors) @@ -309,9 +308,6 @@ cfig(CapacitorsSVG, cfig(InductorsSVG, Inductors) -cfig(MoreTableSVG, - Some other two-terminal elements) - cfig(DiodesSVG, Diodes: a m4tt`'K in the second argument draws an open arrowhead) @@ -319,34 +315,37 @@ cfig(DiodesSVG, cfig(EmarrowsSVG, Radiation arrows) +cfig(VariableSVG, + Arrows and marks for showing variability) + cfig(SourcesSVG, Sources and source-like elements) -cfig(VariableSVG, - Arrows and marks indicating variability) - cfig(AmpTableSVG, Macros m4tt`'amp`,' delay`,' and m4tt`'integrator) cfig(FusesSVG, Macros m4tt`'fuse and m4tt`'cbreaker) -cfig(SwitchesSVG, - The switch macros; m4tt`'switch(`,'`,'`,'L|B|D) is a wrapper - for m4tt`'lswitch`,' m4tt`'bswitch`,' and m4tt`'dswitch) +cfig(MoreTableSVG, + Additional two-terminal elements) cfig(GroundsSVG, Ground symbols) +cfig(SwitchesSVG, + The switch macros; m4tt`'switch(`,'`,'`,'L|B|D) is a wrapper + for m4tt`'lswitch`,' m4tt`'bswitch`,' and m4tt`'dswitch) + cfig(AntennasSVG, Antenna symbols) -cfig(AudioSVG, - Audio elements) - cfig(OpampSVG, The opamp) +cfig(AudioSVG, + Audio elements) + cfig(XformSVG, The transformer element`,' drawing direction down) @@ -438,9 +437,6 @@ cfig(ex18SVG, (illustrating m4tt`'opamp`,' diode`,' resistor`,' ground`,' and labels)) -cfig(MCSVG, - A three-phase switched AC-AC converter and a DC-DC converter) - cfig(ex10SVG, Non-planar graph and bistable circuit (illustrating the m4tt`'crossover macro and colored elements)) @@ -448,6 +444,9 @@ cfig(ex10SVG, cfig(ThreeSVG, Three-phase oscillator) +cfig(MCSVG, + A three-phase switched AC-AC converter and a DC-DC converter) + cfig(ex17SVG, A repetitive network created by Pic looping and a skewed circuit used to test the macro m4tt`'parallel_) @@ -506,18 +505,18 @@ cfig(lcctSVG, "An Approach to Drawing Circuit Diagrams for Text Books`,'" Tugboat (12)1`,' March 1991`,' pp. 66-69) -cfig(UNOSVG, - An Arduino UNO circuit adapted and redrawn) - - cfig(TubediagsSVG, Electron-tube diagrams: a few bottom-view base diagrams`,' a generic triode test circuit`,' and a 25-watt audio amplifier adapted from F. Langford-Smith`,' Radiotron Designers Handbook`,' fourth edition`,' Harrison`,' NJ: Radio Corporation of America`,' 1952) +cfig(UNOSVG, + An Arduino UNO circuit adapted and redrawn) + + cfig(sfgSVG, Signal-flow graphs) @@ -533,7 +532,7 @@ cfig(DecoderSVG, cfig(ex21SVG, Some flip-flops) -cfig(MultiplexerSVG, +cfig(MultiplexerSVGfor showing Multiplexer) cfig(DemultiplexerSVG, @@ -555,7 +554,7 @@ cfig(AlogixSVG, The function tree is drawn`,' then a row or column of inputs`,' then the connections. The default result is on the left`,' a custom element at the top`,' and a tree of gates only is shown - on the right. THe lower examples illustrate the L`,' R`,' and V options.) + on the right.) cfig(ABlogixSVG, The m4tt`'Autologix macro can draw inputs on the left but @@ -617,21 +616,23 @@ cfig(ex09SVG, specifies the arc to be dimensioned and the second argument is the outward radial offset of the dimension arrow arc.) -cfig(PlateSVG, - Dimensioning with tolerances according to ASME Y14.5) +cfig(ex05SVG, Use of m4tt`'darrow and m4tt`'Darc) -cfig(ex05SVG, +cfig(PlateSVG, + Dimensioning with tolerances according to ASME Y14.5) Use of m4tt`'darrow and m4tt`'Darc) cfig(LoglogSVG, A graph drawn using the pic language) cfig(GeometrySVG, - A plane geometry example`,' and an illustration of a Lyapunov function) + Plane geometry examples and an illustration of a Lyapunov function) + cfig(randomSVG, Testing random numbers) diff --git a/graphics/circuit_macros/examples/svg/tstSVG.htmx b/graphics/circuit_macros/examples/svg/tstSVG.htmx index 65425998fc..ccb14e00b8 100644 --- a/graphics/circuit_macros/examples/svg/tstSVG.htmx +++ b/graphics/circuit_macros/examples/svg/tstSVG.htmx @@ -5,63 +5,131 @@ SVG Examples: Circuit_macros Version XXX + + + - -

    SVG Circuit_macros examples, Version XXX

    -
    + + + - + + +

    +ifelse(`$2',,,` +$1.m4: +`$2' changecom(,)&`#'8194;changecom(`#')') -
    -$1.m4

    -
    ') +ifinstr(`$3',y,,`
    ')') -define(`m4tt',`') +--------------------------------------------------------------------- --> - + + + +
    +

    SVG Circuit_macros examples, Version XXX

    +
    + +

    + This file shows diagrams in .svg format; + png + versions are also available. + The PDF equivalent can be found in examples.pdf of the distribution. +

    + +

    +The diagrams shown below have been adapted from the Circuit_macros +examples in order to test the svg output of dpic. Generating svg line +art is straightforward, but TeX, LaTeX, and related word +processors do not produce svg. Either less-sophisticated text formatting +must be employed or an + + intermediate format +such as pdf can be +produced, followed by an additional processing step to convert to svg. +Two possibilities for the latter are + dvisvgm +and + pdf2svg although +there may be font-related issues for some diagrams. +
    +Many circuit and similar diagrams intended for the web do not +require sophisticated labels, however; the examples shown below might +be representative. +

    -These diagrams have been adapted from the Circuit_macros examples in -order to test the experimental svg output of dpic. -Generating the line art is relatively straightforward, but -the labeling is not created by a text processor and must, therefore, be -more basic. + Click on the link to view the source of each diagram.

    +

    +There are a number of other issues:

      +
    • Embedding .svg files in html documents with the <embed> or + <object> tag seems to be a perennial issue. +
    • This file has been tested mainly by using Firefox. +
    • The Adobe reader apparently requires a line of the form +
      <embed src="figure.svg" width="x" height="y" type="image/svg+xml" + /> + This means that the html file has to contain dimension + information for each figure, whereas Firefox can + determine the figure size + from the <svg ... object. Currently, dpic includes a comment line + giving reasonable dimensions in pixels but this has to be insterted into + the <embed or <object line. A makefile does it easily but + otherwise this could be tedious. +
    • The default font face is not specified in all of these diagrams but is + inherited from the enclosing document, so the appearance of labels can + differ depending on the browser. Some of these diagrams set the font at + the beginning of the diagram source. +
    • The <svg tag may require modification + from the default used for this test. Dpic might be modified to + allow the generation of custom headers but that has not been done. +
    • Diagrams such as these contain text labels + that have to be treated differently from the LaTeX-compatible versions. + Apparently there is no direct way to know the bounding box of arbitrary svg + text. + + Consequently, text placement is approximate and may require + manual adjustment. + Rather than patch the original source files for svg production, edited copies + have been used. The configuration file svg.m4 read by m4 + prior to libcct.m4 contains the following macros defined for svg. + Others could be defined to exercise some of the media capabilties of svg. + They are subject to change:
      • m4tt`'svg_font(font-face,nominal size[:dptextratio],textoffset, dpic commands`'m4tt): + Change font face, size, textratio and dpic textoffset parameters. Change font face and dpic m4tt`'textht, m4tt`'dptextratio, and m4tt`'textoffset parameters. If arg4 is blank, the font is changed and @@ -95,10 +163,10 @@ more basic. for setting larger or smaller text size, default 100
      • m4tt svg_sub(text, size percent, y displ, x displ`'m4tt): subscript -
      • m4tt svg_sup(text, size percent, y displ, x displ`'m4tt): - superscript
      • m4tt svg_ul(text`'m4tt): underlined text
      • m4tt svg_ol(text`'m4tt): overlined text +
      • m4tt svg_sup(text, size percent, y displ, x displ`'m4tt): + superscript
      • m4tt svg_hat(character`'m4tt): circumflex-accented character
      • m4tt svg_frac(numerator[:wid], denominator[:wid]`'m4tt): basic fraction, wid in drawing units @@ -119,81 +187,104 @@ more basic.
      • m4tt svgLinkString as above but for strings attached to objects
      • Greek and other symbols: - + +
        - - - - - - +
        m4tt svg_alpha changecom(,)&`#'945;changecom(`#') - m4tt svg_beta changecom(,)&`#'946;changecom(`#') - m4tt svg_Gamma changecom(,)&`#'915;changecom(`#') - m4tt svg_gamma changecom(,)&`#'947;changecom(`#') - m4tt svg_Delta changecom(,)&`#'916;changecom(`#') - m4tt svg_delta changecom(,)&`#'948;changecom(`#') + m4tt svg_alpha changecom(,)&`#'945;changecom(`#') + m4tt svg_beta changecom(,)&`#'946;changecom(`#') + m4tt svg_Gamma changecom(,)&`#'915;changecom(`#') + m4tt svg_gamma changecom(,)&`#'947;changecom(`#') + m4tt svg_Delta changecom(,)&`#'916;changecom(`#') + m4tt svg_delta changecom(,)&`#'948;changecom(`#') m4tt svg_epsilon changecom(,)&`#'949;changecom(`#') - m4tt svg_zeta changecom(,)&`#'950;changecom(`#') + m4tt svg_zeta changecom(,)&`#'950;changecom(`#') +
        m4tt svg_eta changecom(,)&`#'951;changecom(`#') - m4tt svg_Theta changecom(,)&`#'920;changecom(`#') - m4tt svg_theta changecom(,)&`#'952;changecom(`#') - m4tt svg_iota changecom(,)&`#'953;changecom(`#') - m4tt svg_kappa changecom(,)&`#'954;changecom(`#') - m4tt svg_Lambda changecom(,)&`#'923;changecom(`#') - m4tt svg_lambda changecom(,)&`#'955;changecom(`#') - m4tt svg_mu changecom(,)&`#'956;changecom(`#') + m4tt svg_eta changecom(,)&`#'951;changecom(`#') + m4tt svg_Theta changecom(,)&`#'920;changecom(`#') + m4tt svg_theta changecom(,)&`#'952;changecom(`#') + m4tt svg_iota changecom(,)&`#'953;changecom(`#') + m4tt svg_kappa changecom(,)&`#'954;changecom(`#') + m4tt svg_Lambda changecom(,)&`#'923;changecom(`#') + m4tt svg_lambda changecom(,)&`#'955;changecom(`#') + m4tt svg_mu changecom(,)&`#'956;changecom(`#') +
        m4tt svg_nu changecom(,)&`#'957;changecom(`#') - m4tt svg_Xi changecom(,)&`#'926;changecom(`#') - m4tt svg_xi changecom(,)&`#'958;changecom(`#') - m4tt svg_Pi changecom(,)&`#'928;changecom(`#') - m4tt svg_pi changecom(,)&`#'960;changecom(`#') - m4tt svg_rho changecom(,)&`#'961;changecom(`#') - m4tt svg_Sigma changecom(,)&`#'931;changecom(`#') - m4tt svg_sigma changecom(,)&`#'963;changecom(`#') + m4tt svg_nu changecom(,)&`#'957;changecom(`#') + m4tt svg_Xi changecom(,)&`#'926;changecom(`#') + m4tt svg_xi changecom(,)&`#'958;changecom(`#') + m4tt svg_Pi changecom(,)&`#'928;changecom(`#') + m4tt svg_pi changecom(,)&`#'960;changecom(`#') + m4tt svg_rho changecom(,)&`#'961;changecom(`#') + m4tt svg_Sigma changecom(,)&`#'931;changecom(`#') + m4tt svg_sigma changecom(,)&`#'963;changecom(`#') +
        m4tt svg_tau changecom(,)&`#'964;changecom(`#') + m4tt svg_tau changecom(,)&`#'964;changecom(`#') m4tt svg_upsilon changecom(,)&`#'965;changecom(`#') - m4tt svg_Phi changecom(,)&`#'934;changecom(`#') - m4tt svg_phi changecom(,)&`#'966;changecom(`#') - m4tt svg_chi changecom(,)&`#'967;changecom(`#') - m4tt svg_Psi changecom(,)&`#'936;changecom(`#') - m4tt svg_psi changecom(,)&`#'968;changecom(`#') - m4tt svg_Omega changecom(,)&`#'937;changecom(`#') + m4tt svg_Phi changecom(,)&`#'934;changecom(`#') + m4tt svg_phi changecom(,)&`#'966;changecom(`#') + m4tt svg_chi changecom(,)&`#'967;changecom(`#') + m4tt svg_Psi changecom(,)&`#'936;changecom(`#') + m4tt svg_psi changecom(,)&`#'968;changecom(`#') + m4tt svg_Omega changecom(,)&`#'937;changecom(`#') +
        m4tt svg_omega changecom(,)&`#'969;changecom(`#') - m4tt svg_micro changecom(,)&`#'956;changecom(`#') - m4tt svg_ohm changecom(,)&`#'937;changecom(`#') - m4tt svg_lt changecom(,)&`#'60;changecom(`#') - m4tt svg_gt changecom(,)&`#'62;changecom(`#') - m4tt svg_leq changecom(,)&`#'8804;changecom(`#') - m4tt svg_geq changecom(,)&`#'8805;changecom(`#') - m4tt svg_prime changecom(,)&`#'8242;changecom(`#') + m4tt svg_omega changecom(,)&`#'969;changecom(`#') + m4tt svg_micro changecom(,)&`#'956;changecom(`#') + m4tt svg_ohm changecom(,)&`#'937;changecom(`#') + m4tt svg_lt changecom(,)&`#'60;changecom(`#') + m4tt svg_gt changecom(,)&`#'62;changecom(`#') + m4tt svg_leq changecom(,)&`#'8804;changecom(`#') + m4tt svg_geq changecom(,)&`#'8805;changecom(`#') + m4tt svg_prime changecom(,)&`#'8242;changecom(`#') +
        m4tt svg_backsl changecom(,)&`#'92;changecom(`#') - m4tt svg_pound changecom(,)&`#'35;changecom(`#') - m4tt svg_comma changecom(,)&`#'44;changecom(`#') - m4tt svg_lparen changecom(,)&`#'40;changecom(`#') - m4tt svg_rparen changecom(,)&`#'41;changecom(`#') - m4tt svg_emsp |changecom(,)&`#'8195;changecom(`#')| - m4tt svg_ensp |changecom(,)&`#'8194;changecom(`#')| - m4tt svg_thinsp |changecom(,)&`#'8201;changecom(`#')| + m4tt svg_backsl changecom(,)&`#'92;changecom(`#') + m4tt svg_pound changecom(,)&`#'35;changecom(`#') + m4tt svg_comma changecom(,)&`#'44;changecom(`#') + m4tt svg_lparen changecom(,)&`#'40;changecom(`#') + m4tt svg_rparen changecom(,)&`#'41;changecom(`#') + m4tt svg_circ changecom(,)&`#'710;changecom(`#') + m4tt svg_deg changecom(,)&`#'176;changecom(`#') + m4tt svg_grave changecom(,)&`#'96;changecom(`#') +
        + -
        m4tt svg_circ |changecom(,)&`#'710;changecom(`#')| - m4tt svg_deg |changecom(,)&`#'176;changecom(`#')| + m4tt svg_emsp |changecom(,)&`#'8195;changecom(`#')| + m4tt svg_ensp |changecom(,)&`#'8194;changecom(`#')| + m4tt svg_thinsp |changecom(,)&`#'8201;changecom(`#')| +
    • Inkscape: It may be efficient to define elements by macro and to - place them using a WYSIWYG graphics editor. A draft page intended + place them using a wysiwyg graphics editor. A draft page intended for Inkscape is included. A reasonable variety of elements is defined - but should be customized for particular applications. + but many more could be added and they should be customized for + particular applications. Adjustments may also have to be made to + obtain the proper snap-to actions.
    • Link experiments: Click on the resistor or source of quickSVG to go to external files in new windows. Click on "n-port" in NportSVG to replace the diagram and then "back" to return. -
    • Some of the assumptions used to create this draft may be naive. Comments - are welcome. +
    • Some of the assumptions used to create this draft may be + na&`#'239;ve. + Comments are welcome.
    +
    cfig(XXXXX) +
    diff --git a/graphics/circuit_macros/examples/xfig/xfiglib.fig b/graphics/circuit_macros/examples/xfig/xfiglib.fig index 081aef7471..521b4d0307 100644 --- a/graphics/circuit_macros/examples/xfig/xfiglib.fig +++ b/graphics/circuit_macros/examples/xfig/xfiglib.fig @@ -6,7 +6,7 @@ Letter 100.00 Single -2 -# dpic version 2021.05.15 option -x for Fig 3.2 +# dpic version 2021.08.01 option -x for Fig 3.2 1200 2 6 0 0 3975 5025 6 0 0 3975 5025 @@ -135,12 +135,14 @@ Single 6 3300 75 3450 675 2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2 3375 675 3375 425 +6 3300 325 3450 425 2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2 3425 425 3325 425 2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 6 3375 400 3300 400 3300 350 3450 350 3450 400 3375 400 2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2 3425 325 3325 325 +-6 2 1 0 1 0 -1 0 -1 -1 0 0 0 0 0 0 2 3375 325 3375 75 -6 diff --git a/graphics/circuit_macros/gpic.m4 b/graphics/circuit_macros/gpic.m4 index 41a5d3d394..d04f0bde25 100644 --- a/graphics/circuit_macros/gpic.m4 +++ b/graphics/circuit_macros/gpic.m4 @@ -1,7 +1,7 @@ divert(-1) gpic.m4 Initialization for gpic. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/lib3D.m4 b/graphics/circuit_macros/lib3D.m4 index 38ccc99d23..7cf33f6c04 100644 --- a/graphics/circuit_macros/lib3D.m4 +++ b/graphics/circuit_macros/lib3D.m4 @@ -3,7 +3,7 @@ lib3D.m4 Macros for rotation, projection, and other operations on argument triples representing 3D vectors or colors. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/libcct.m4 b/graphics/circuit_macros/libcct.m4 index ed3356f4b0..d607c524fe 100644 --- a/graphics/circuit_macros/libcct.m4 +++ b/graphics/circuit_macros/libcct.m4 @@ -1,7 +1,7 @@ divert(-1) libcct.m4 -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -82,6 +82,7 @@ DEBUGGING: The statement Arg2 chars: [d]F or blank: flat plates; d=hatched fill [d]C = polarized, curved plate; d=variable + CP = constant phase E = polarized rectangular plates K = filled rectangular plates M = rectangular plates @@ -110,6 +111,16 @@ define(`capacitor', {line from rvec_(0,-m4cht/2) \ to rvec_(0,m4cht/2)} line to rvec_(rp_len/2-m4cwd/2,0) ') + sc_draw(`dna_',CP, + `define(`m4cht',`ifelse(`$4',,`dimen_/3',`($4)')')dnl + define(`m4cwd',`ifelse(`$5',,`m4cht*0.8',`($5)')')dnl + line to rvec_(rp_len/2,0) + {line from rvec_(-m4cwd/2,m4cht/2) to Here \ + then to rvec_(-m4cwd/2,-m4cht/2) } + {line from rvec_(0,m4cht/2) to rvec_(m4cwd/2,0) \ + then to rvec_(0,-m4cht/2) } + line from rvec_(m4cwd/2,0) to rvec_(rp_len/2,0) + ') sc_draw(`dna_',C, `define(`m4cht',`ifelse(`$4',,`dimen_/4',`($4)')')dnl define(`m4cwd',`ifelse(`$5',,`m4cht*0.4',`($5)')')dnl @@ -117,7 +128,7 @@ define(`capacitor', line to rvec_(rp_len/2-m4cwd/2,0) {line from rvec_(0,-m4cht/2) \ to rvec_(0,m4cht/2)} - {arc cw ifelse(m4a,d,-> wid lthick*4 ht lthick*4) \ + {arc cw ifelse(m4a,d,-> wid lthick*4 ht lthick*5) \ from rvec_(m4cwd,-m4cht/2) \ to rvec_(m4cwd,m4cht/2) \ with .c at rvec_(m4cwd+sqrt((m4cr)^2-(m4cht/2)^2),0) } @@ -194,29 +205,34 @@ define(`capacitor', `resistor( linespec, cycles, chars, cycle wid) cycles: default 3 - chars : E=ebox - ES=ebox with slash - Q=offset - H=squared - N=IEEE (default) - B=not burnable - V=varistor variant - R=to right of drawing direction + chars : AC: complex element + E: ebox + ES: ebox with slash + Q: offset + H: squared + N: IEEE (default) + B: not burnable + V: varistor variant + R: to right of drawing direction arg4: cycle width (default dimen_/6)' define(`resistor', `define(`m4h',`ifelse(`$4',,`dimen_/6',`($4)')/4')dnl ifinstr( - `$2',E, + `$2',E, # This is obsolete but kept for now `ebox(`$1',shift(shift($@)))', `$3',ES, - `ebox(`$1',shift(shift(shift($@)))) - {line from last line.c+vec_(m4wd*0.3,m4ht/2) \ - to last line.c+vec_(-m4wd*0.3,-m4ht/2)} + `ebox(`$1') + {line from last line.c+vec_( m4lgth*0.3, m4wdth/2) \ + to last line.c+vec_(-m4lgth*0.3,-m4wdth/2)} line invis from 2nd last line.start to 2nd last line.end', `$3',E, - `ebox(`$1',shift(shift(shift($@))))', + `ebox(`$1')', `$3',V, `M4_varistor($@)', + `$3',AC, + `ebox(`$1') + { ACsymbol(at last [],m4h*3.5,m4h*2,R) + [] wid 2nd last [].wid ht 2nd last [].ht at 2nd last [] }', `define(`dna_',ifelse(`$3',,N,`$3',R,N,`$3'))dnl eleminit_(`$1') sc_draw(`dna_',N, @@ -360,10 +376,11 @@ define(`FTcap',`[ define(`FTctyp',`ifelse(`$1',,A,`$1')')dnl Name1, Name2, ... if specified ahead = blank or one of . - <- -> <-> ' define(`addtaps',` -ifelse(`$2',,`undefine(`m4tap_x')popdef(`m4type')popdef(`m4name')', +ifelse(`$2',,`undefine(`m4tap_x')popdef(`m4type',`m4name')', `ifdef(`m4tap_x',`define(`m4tap_x',incr(m4tap_x))', `define(`m4tap_x',1) M4tap_w: last [].w_; M4tap_e: last [].e_ - setkey_(`$1',type,`$1',N)setkey_(`$1',name,Tap,N)dnl + setkeys_(`$1',type::N; name:Tap:N)dnl + ifelse(m4type,,`ifinstr(`$1',=,,`define(`m4type',`$1')')')dnl M4tap_xy: (last [].wid_,last [].ht_)') {define(`m4tapl',`ifelse(`$3',,`dimen_/3',`$3')')dnl move to (`$2' between M4tap_w and M4tap_e) + vec_(0,sign(m4tapl)*M4tap_xy.y/2) @@ -443,7 +460,8 @@ define(`inductor',`eleminit_(`$1') define(`m4n',`ifelse(`$3',,4,`$3')')dnl ifelse(`$2',W, `define(`m4wd',((2*m4n-2)*m4c2t+2)*m4hlw)', `$2',L, `define(`m4wd',(m4n+1)*m4hlw)', - `define(`m4ht',`ifelse(`$2',,`dimen_/16',`$2')')define(`m4wd',m4n*m4ht*2)') + `define(`m4ht',`ifelse(`$5',,`dimen_/16',(`$5')/2)')dnl + define(`m4wd',m4n*m4ht*2)')dnl { line to rvec_((rp_len-m4wd)/2,0) ifelse(`$2',W,`m4Ibody', `$2',L,`m4Lbody', `m4ibody') with .S at Here line from last [].E to last [].E+vec_((rp_len-m4wd)/2,0) } @@ -563,23 +581,42 @@ define(`delay',`eleminit_(`$1') { [box invis ht_ m4ht wid_ m4wd ] at rvec_(rp_len/2,0)} line to rvec_(rp_len,0) invis ') - `crystal xtal( linespec )' -define(`xtal',`eleminit_(`$1') - define(`m4ht',`dimen_/4')define(`m4wd',`m4ht*2/3')define(`m4cs',`m4ht/3')dnl + `xtal( linespec, keys ) (2-terminal crystal) + keys: + type=N (default) or R (round); + type N keys: + lgth=expr; (body length) + wdth=expr; (body width) + bxwd=expr; (body inner box width) + box= box attributes; (shaded ...) + type R keys: + outerdiam=expr; + innerdiam=expr; + outer= outer circle attributes; (dotted ...) + inner= inner circle attributes; (shaded ...)' +define(`xtal',`eleminit_(`$1') setkey_(`$2',type,N,N) + ifelse(m4type,R,`setkeys_(`$2',`outerdiam:dimen_/3; innerdiam:m4outerdiam*0.4; + outer::N; inner::N') define(`m4wd',m4outerdiam) ', + `setkeys_(`$2',`wdth:dimen_/4; lgth:m4wdth*2/3; bxwd:m4lgth/2; box::N;')dnl + define(`m4wd',m4lgth) ') { line to rvec_(rp_len/2-m4wd/2,0) - {line from rvec_(0,-m4ht/3) \ - to rvec_(0,m4ht/3)} - { move to rvec_(m4wd/2-m4cs/2,0) - line to rvec_(0,m4ht/2) \ - then to rvec_(m4cs,m4ht/2) \ - then to rvec_(m4cs,-m4ht/2) \ - then to rvec_(0,-m4ht/2) \ - then to Here } - move to rvec_(m4wd,0) - {line from rvec_(0,-m4ht/3) \ - to rvec_(0,m4ht/3)} - line to rvec_(rp_len/2-m4wd/2,0) } - {[box invis ht_ m4ht wid_ m4wd ] at rvec_(rp_len/2,0)} + {[ Orig: Here; ifelse(m4type,R, + `{circle diam m4outerdiam at rvec_(m4outerdiam/2,0) m4outer} + {circle diam m4innerdiam at rvec_(m4outerdiam/2,0) m4inner} + popdef(`m4type',`m4outerdiam',`m4innerdiam',`m4outer',`m4inner') ', + `{line from rvec_(0,-m4wdth/3) \ + to rvec_(0,m4wdth/3)} + { move to rvec_(m4lgth/2-m4bxwd/2,0) + line to rvec_(0,m4wdth/2) \ + then to rvec_(m4bxwd,m4wdth/2) \ + then to rvec_(m4bxwd,-m4wdth/2) \ + then to rvec_(0,-m4wdth/2) \ + then to Here m4box } + move to rvec_(m4lgth,0) + {line from rvec_(0,-m4wdth/3) \ + to rvec_(0,m4wdth/3)} + popdef(`m4type',`m4wdth',`m4lgth',`m4bxwd',`m4box')') ] with .Orig at Here} + line from rvec_(m4wd,0) to rvec_(rp_len/2+m4wd/2,0) } line to rvec_(rp_len,0) invis ') `source( linespec, @@ -827,17 +864,31 @@ define(`battery',`ifelse(`$3',R, {[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)} line to rvec_(rp_len,0) invis ')') - `ebox(linespec, length, ht, greyvalue) - Box element; length and ht are relative to + `ebox(linespec, length, ht, greyvalue, + box attributes) + Length and ht (of the elemet) are relative to the direction of linespec' + Alternative: + `ebox(linespec, keys) + keys: + lgth=expr; wdth=expr; + text="centered text"; + box=box attributes, e.g. shaded "green"' define(`ebox',`eleminit_(`$1') - define(`m4wd',ifelse(`$2',,`dimen_/2',`($2)'))dnl - define(`m4ht',ifelse(`$3',,`dimen_/5',`($3)'))dnl - {line to rvec_(max(0,rp_len/2-m4wd/2),0) - ifelse(`$4',,`lbox(m4wd,m4ht)',`m4fshade(`$4',lbox(m4wd,m4ht))') - line to rvec_(max(0,rp_len/2-m4wd/2),0)} - {[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)} - line to rvec_(rp_len,0) invis ') + {ifinstr(`$2',=, + `setkeys_(`$2',`lgth:dimen_/2; wdth:dimen_/5; text::N; box::N;') + line to rvec_(max(0,rp_len/2-m4lgth/2),0); M4ebC: rvec_(m4lgth/2,0) + lbox(m4lgth,m4wdth,m4box) + ifelse(m4text,,,`{m4text at M4ebC};')', + `define(`m4lgth',`ifelse(`$2',,dimen_/2,`$2')')dnl + define(`m4wdth',`ifelse(`$3',,dimen_/5,`$3')')dnl + line to rvec_(max(0,rp_len/2-m4lgth/2),0) + ifelse(`$4',,`lbox(m4lgth,m4wdth,`$5')', + `m4fshade(`$4',lbox(m4lgth,m4wdth,`$5'))')') + line to rvec_(max(0,rp_len/2-m4lgth/2),0)} + {[ box invis ht_ m4wdth wid_ m4lgth ] at rvec_(rp_len/2,0)} + ifinstr(`$2',=,`popdef(`m4lgth',`m4wdth',`m4text',`m4box')')dnl + line to rvec_(rp_len,0) invis ') `fuse( linespec, chars, wid, ht ) chars dA|B|C|D|S|SB|HB|HC or dA (=D)' @@ -3413,7 +3464,7 @@ define(`Ysymbol',`[ sq3 = sqrt(3) then to vec_(vscal_(m4size,1/sq3,-1)) } ifelse(m4type,,,`line right_ m4size*3/2; corner pushdef(`dimen_',m4size*4) ground popdef(`dimen_') ') - `$4'; resetdir_ ] ifelse(`$1',,`at Here',`$1')') + `$4'; resetdir_ popdef(`m4size',`m4type') ] ifelse(`$1',,`at Here',`$1')') `DCsymbol(at position, len, ht, U|D|L|R|degrees) Arg4: drawing direction (default: current direction)' diff --git a/graphics/circuit_macros/libgen.m4 b/graphics/circuit_macros/libgen.m4 index ee5b954f4e..d9ed56f066 100644 --- a/graphics/circuit_macros/libgen.m4 +++ b/graphics/circuit_macros/libgen.m4 @@ -2,7 +2,7 @@ divert(-1) libgen.m4 Base macros for dpic and gpic diagrams -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -44,9 +44,8 @@ dnl define(`HOMELIB_',`D:\Dwight\lib') `NeedDpicTools( path ) If path is empty then HOMELIB_ is used e.g. NeedDpicTools or NeedDpicTools(/home/lib/)' -define(`NeedDpicTools',`if "dpictools" != "1" then { - ifelse(`$1',,`copy "HOMELIB_`'dpictools.pic"',`copy "`$1'dpictools.pic"') - define(`dfitpoints__') define(`dfitcurve__')}') +define(`NeedDpicTools',`if "dpictools" != "1" then { copy dnl +ifelse(`$1',,`"HOMELIB_`'dpictools.pic"',`"`$1'dpictools.pic"') }') Processor shortcuts define(`ifdpic',`ifelse(m4picprocessor,dpic,`$1',`$2')') @@ -185,7 +184,7 @@ define(`SIdefaults', define(`latexcommand',`command "ifmpost(verbatimtex) `$1' ifmpost(etex)"') define(`m4announceprocessor',`dnl Do not change the format of the next line: -`#' `$1' Version 9.6: ifelse(m4picprocessor,gpic,`Gpic', +`#' `$1' Version 9.7: ifelse(m4picprocessor,gpic,`Gpic', m4postprocessor,pstricks,`PSTricks', m4postprocessor,pgf,`TikZ PGF', m4postprocessor,mfpic,`Mfpic', @@ -755,10 +754,10 @@ define(`m4inx',`define(`m4x',ifdef(`m4x',`incr(m4x)',1))m4x') `Drawing conveniences:' - `PtoL( position, U|D|L|R|deg, lgth ) + `PtoL( Pos, U|D|L|R|deg, lgth ) Generate a linespec from polar - info. Evaluates to `from position to - position+(Rect_(lgth,angle))' with lgth + info. Evaluates to `from Pos to + Pos+(Rect_(lgth,angle))' with lgth default dimen_ and angle from arg2' define(`PtoL',`pushdef(`M4pos',ifelse(`$1',,Here,`$1'))dnl ifinstr(ifelse(`$2',,R,`$2'),R,`pushdef(`m4c',1)pushdef(`m4s',0)', @@ -809,8 +808,9 @@ define(`m4Delch', `setkey_(string,key,default,[N]) string contains semicolon-separated terms of the form key=val - If string contains key=val; then - pushdef(`m4key',(val)) otherwise use default. + If string contains abc=expr; then + pushdef(`m4abc',(expr)) otherwise + pushdef(`m4abc',(default)). Nonblank arg4 omits the parentheses.' define(`setkey_', `pushdef(`m4xt',index(`$1',`$2'=))ifelse(m4xt,-1, @@ -820,7 +820,7 @@ define(`setkey_', `pushdef(key_prefix`'$2,ifelse(`$4',,(m4sktmp),m4sktmp))', `pushdef(key_prefix`'$2,ifelse(`$4',,(substr(m4sktmp,0,index(m4sktmp,;))), substr(m4sktmp,0,index(m4sktmp,;))))')')dnl - popdef(`m4xt')') +popdef(`m4xt')') define(`key_prefix',`m4') # Could be locally redefined @@ -913,15 +913,48 @@ define(`cross',`[{line from Here+(0,neg_(crosswd_)) to Here+(0,crosswd_)} define(`boxcoord', `(`$2' between `$1'.w and `$1'.e,`$3' between `$1'.s and `$1'.n)') - `shadebox(box boxspec,shadewid)' Shaded box -define(`shadebox',` $1 - m4t1 = linethick - define(`m4h',`ifelse(`$2',,m4t1*5/4,`($2)')')dnl - define(`m4v',`(m4h+m4t1)/2 bp__')dnl + + `shadebox(box boxspec,shadewid (pt))' Shaded box +define(`shadebox',`ifelse(`$1',,box,`$1') + define(`m4h',`ifelse(`$2',,linethick*5/4,`($2)')')dnl + define(`m4v',`(m4h+linethick)/2 bp__')dnl {line thickness m4h outlined "gray" from last box.sw+(m4v,neg_(m4v)) \ to last box.se+(m4v,neg_(m4v)) then to last box.ne+(m4v,neg_(m4v))} {move to last box.se+(m4v,neg_(m4v))+(m4h/2 bp__,neg_(m4h)/2 bp__)} ') + `Shadowed object:' + `shadowed(box|circle|ellipse|line,posspec,keys) + posspec: at position or e.g., with .n at ... + keys: attrib=object attributes; + rad=expr; [for box only] + shadowthick=expr; + shadowcolor=string; + shadowangle=expr; + e.g., shadowed(ellipse,,shadowthick=lthick*4;\ + attrib=shaded "yellow" dashed "Ellipse") + or + shadowed(box shaded "yellow" rad 0.1 "Text", + shadowthick=3bp__;shadowcolor="lightgray")' +define(`shadowed',`define(`m4object',`ifelse(`$1',,box,`$1')')dnl + setkeys_(`$3',attrib::N; rad:; + shadowthick:lthick*5/4; shadowcolor:"gray":N; shadowangle:-45 )dnl + ifelse(m4object,box,`box m4attrib ifelse(m4rad,,,`rad m4rad invis') `$2' + if last box.thick < 0 then { m4shv = (m4shadowthick+lthick)/2 } \ + else { m4shv=(m4shadowthick+last box.thick bp__)/2 } + ifelse(m4rad,,`{ line thick m4shadowthick/(1bp__) outlined m4shadowcolor \ + from last box.sw+(m4shv,-m4shv) to last box.se+(m4shv,-m4shv) \ + then to last box.ne+(m4shv,-m4shv) } ', + `M4C: last box.c + { box m4attrib thick m4shadowthick/(1bp__) outlined m4shadowcolor \ + rad m4rad solid at M4C+(Rect_(m4shv,m4shadowangle)) } + box fill_(1) rad m4rad m4attrib at M4C ') ', + `m4object m4attrib invis `$2' + M4C: last m4object.c + if last m4object.thick < 0 then { m4shv = (m4shadowthick+lthick)/2 } \ + else { m4shv=(m4shadowthick+last m4object.thick bp__)/2 } + { m4object m4attrib thick m4shadowthick/(1bp__) outlined m4shadowcolor \ + solid at M4C+(Rect_(m4shv,m4shadowangle)) } + m4object ifelse(m4object,line,,fill_(1)) m4attrib at M4C ') ') `hatchbox(boxspec,hashsep,hatchspec,ang)' `manhattan box with hatching at ang degrees' @@ -963,9 +996,9 @@ define(`hatchbox',`[ a = pmod((ifelse(`$4',,45,`$4')+90),180)-90 box wid B.wid ht B.ht at B `$1' `$5' ]' ) - `lbox(wid,ht,type) + `lbox(wid,ht,attributes) box oriented in current direction; - arg3= eg dotted' + arg3= eg dashed shaded "red"' define(`lbox',`pushdef(`m4bwd',ifelse(`$1',,boxwid,(`$1')))dnl pushdef(`m4bht',ifelse(`$2',,boxht,(`$2')))dnl line from rvec_(m4bwd,0) \ @@ -1063,8 +1096,8 @@ define(`ellipsearc',`[ C: (0,0) `if ea_earc < sa_earc then { ea_earc += twopi_ }', `if ea_earc > sa_earc then { ea_earc -= twopi_ }') n = max(4,floor(abs((ea_earc-sa_earc)/(10*dtor_)))+1) - for i=0 to n do { aa = sa_earc+i/n*(ea_earc-sa_earc) - P[i]: (vrot_(a_earc*cos(aa),b_earc*sin(aa),m4ca,m4sa)) } + for i=0 to n do { aa_earc = sa_earc+i/n*(ea_earc-sa_earc) + P[i]: (vrot_(a_earc*cos(aa_earc),b_earc*sin(aa_earc),m4ca,m4sa)) } Start: P[0] End: P[n] fitcurve(P,n,`$7') ]') @@ -1308,16 +1341,43 @@ m4postprocessor,svg, `ifdef(`r_',`rgbfill(r_,g_,b_,`$2')', `shade(ifelse(`$1',,0,`$1'),`$2')')')') ') + `sarrow(linespec,keys) + Single-segment single-headed special arrow + keys= type=O[pen] (default) + D[iamond] + C[rowfoot] + P[lain] + wdth=expr (default arrowwid) + lgth=expr (default arrowht) + shaft= attributes (dashed etc) + head= attributes (shaded etc)' +define(`sarrow',`arrow invis `$1' ; M4_E: Here + setkeys_(`$2',type:O:N;head::N;shaft::N;wdth:arrowwid;lgth:arrowht) + line from last arrow.start to last arrow.end chop 0 chop m4lgth m4shaft + M4_X: Here; M4_P: Vperp(M4_E,M4_X,m4wdth/2) + ifinstr(m4type,O, + `line from M4_E to M4_X+(M4_P.x,M4_P.y) then to M4_X-(M4_P.x,M4_P.y) \ + then to M4_E ifelse(m4head,,fill_(1),m4head)', + m4type,D, + `line from M4_X to (0.5 between M4_E and M4_X)+(M4_P.x,M4_P.y) \ + then to M4_E then to (0.5 between M4_E and M4_X)-(M4_P.x,M4_P.y) \ + then to M4_X ifelse(m4head,,fill_(1),m4head)', + m4type,P, + `line to M4_E m4head + line from M4_X+(M4_P.x,M4_P.y) to M4_E then to M4_X-(M4_P.x,M4_P.y) m4head', + m4type,C, + `line to M4_E m4head + ifdpic(`spline 0.4 from M4_E+M4_P to M4_X+M4_P then to M4_X-M4_P \ + then to M4_E-M4_P', + `spline from M4_E+(M4_P.x,M4_P.y) to M4_X+(M4_P.x,M4_P.y) \ + then to M4_X-(M4_P.x,M4_P.y) then to M4_E-(M4_P.x,M4_P.y)') m4head') + move to M4_E') `open_arrow(linespec, ht, wid, head attribs) - arrow with outlined head' -define(`open_arrow',`arrow invis `$1' - m4oatx = Here.x - last arrow.start.x; m4oaty = Here.y - last arrow.start.y - m4oatr = (ifelse(`$3',,arrowwid,`$3'))/vlength(m4oatx,m4oaty)/2 - line from last arrow.start to Here chop 0 chop ifelse(`$2',,arrowht,`$2') - line from last arrow.end to Here+(-m4oaty*m4oatr,m4oatx*m4oatr) \ - then to Here-(-m4oaty*m4oatr,m4oatx*m4oatr) \ - then to last arrow.end `$4'') + arrow with outlined head, like sarrow(,type=O)' +define(`open_arrow',`sarrow(`$1', + type=O;ifelse(`$2',,,lgth=`$2';)ifelse(`$3',,,wdth=`$3';)head=`$4')') + `elchop(E,A) chop for ellipses evaluates to "chop r" where r is the distance @@ -1492,9 +1552,15 @@ define(`m4AngleLen',`ifelse(`$4',,linewid/5,`$4')') move to RightA_N - M4CN0*m4AngleLen line to Here + M4AB0*m4AngleLen then to RightA_N + M4AB0*m4AngleLen `$5' ') - `PerpTo(Pos,Line,Point) - The point on Line of the perpendicular to Pos' + `PerpTo(Pos1,Pos2,Pos3) + The point between Pos2 and Pos3 of intersection + of the perpendicular to Pos1' define(`PerpTo', +`intersect_(`$1',(`$1'-(Vperp(`$2',`$3'))),`$2',`$3') ') + + `perpto(Pos,Line,Point) + The point on Line of the perpendicular to Pos' +define(`perpto', `PerpTo_T: move from `$1' to `$1'-(vperp(`$2')) ifelse(`$3',,PerpTo_P,`$3'): Intersect_(PerpTo_T,`$2') ') @@ -1579,35 +1645,14 @@ define(`m4scale_',`define(`m4SC',`ifelse(`$2',,I,`substr(`$2',0,1)')')dnl sprintf("%g",i) ht 8 bp__ at last line.start below }') linethick_(m4ltht) ') - + `These two macros use dpictools.pic versions' `fitpoints(V,n,m,P,mP)' Compute the controls in P[mP], P[mP+1]... for the spline passing throught points V[m]...V[n] Defines dpic macro dfitpoints() with the same arguments' -ifdpic(` -define(`fitpoints',`defdfitpoints +define(`fitpoints',`NeedDpicTools dfitpoints($@)') -define(`defdfitpoints',`ifdef(`dfitpoints__',,`define(`dfitpoints__')dnl -patsubst(`## pic fit curve macros -define dfitpoints { - if "|3"=="" then { m_dfit=0 } else { m_dfit=|3 } - if "|5"=="" then { mP_dfit=0 } else { mP_dfit=|5 } - n_dfit = |2; np_dfit = n_dfit-m_dfit - |4[mP_dfit]: |1[m_dfit] - for i_dfit=m_dfit+1 to n_dfit-1 do { - |4[mP_dfit+i_dfit-m_dfit]: |1[i_dfit]*(4/3) } - |4[mP_dfit+np_dfit]: |1[n_dfit] - |4[mP_dfit+1]: |4[mP_dfit+1]-|4[mP_dfit+0]/6 # forward substitution - d_dfit[1] = 1 - for i_dfit = 2 to np_dfit-1 do { |4[mP_dfit+i_dfit]: \ - |4[mP_dfit+i_dfit]-|4[mP_dfit+i_dfit-1]/d_dfit[i_dfit-1]/6 - d_dfit[i_dfit] = 1-1/d_dfit[i_dfit-1]/36 } - for i_dfit= np_dfit-1 to 1 by -1 do { # backward substitution - |4[mP_dfit+i_dfit]: \ - (|4[mP_dfit+i_dfit]-|4[mP_dfit+i_dfit+1]/6)/d_dfit[i_dfit] } - }',|,$) ') ') ') - `fitcurve(V,n,linetype,m (default 0)) Draw a spline through V[m],...V[n] linetype=eg dotted. Works only with dpic. @@ -1618,31 +1663,8 @@ define dfitpoints { P[n] = V[n] Defines dpic macro dfitcurve() with the same arguments' -ifdpic(` -define(`fitcurve',`ifdef(`dfitcurve__',,`define(`dfitcurve__')dnl -defdfitpoints -patsubst(`define case_dfit { exec sprintf("|%g",floor(|1+0.5)+1); } -define dfitcurve { if "|4"=="" then { m_dfit=0 } else { m_dfit=|4 } - n_dfit = |2; np_dfit = n_dfit-m_dfit - M4P_[0]: |1[m_dfit] - case_dfit( min(max(np_dfit,-1),3)+1, - spline 0.551784 |3 from M4P_[0] to M4P_[0], - spline 0.551784 |3 from M4P_[0] to |1[n_dfit], - M4P_[3]: |1[n_dfit]; Q_dfit: (M4P_[3]-M4P_[0])/4 - M4P_[1]: |1[m_dfit+1]-Q_dfit; M4P_[2]: |1[m_dfit+1]+Q_dfit - spline 0.551784 |3 from M4P_[0] to M4P_[1] then to M4P_[2] then to M4P_[3], - fitpoints(|1,|2,|4,M4P_,0) - # draw using computed control points - spline 0.551784 |3 from M4P_[0] to 11/32 between M4P_[0] and M4P_[1] \ - then to 5/32 between M4P_[1] and M4P_[2] - for i_dfit=2 to np_dfit-2 do { continue to M4P_[i_dfit] } - continue to 27/32 between M4P_[np_dfit-2] and M4P_[np_dfit-1] \ - then to 21/32 between M4P_[np_dfit-1] and M4P_[np_dfit] \ - then to M4P_[np_dfit]) } -` ## end fit curve defs'',|,$) ') - dfitcurve($@) ') -') - +define(`fitcurve',`NeedDpicTools + dfitcurve($@)') `Sinusoids and lollipop signals Cosine( amplitude, freq, time, phase )' define(`Cosine',`(`$1')*cos((`$2')*(`$3')ifelse((`$4'),(),,`+(`$4')'))') diff --git a/graphics/circuit_macros/liblog.m4 b/graphics/circuit_macros/liblog.m4 index 95a6bf0ea1..8f6dad8714 100644 --- a/graphics/circuit_macros/liblog.m4 +++ b/graphics/circuit_macros/liblog.m4 @@ -1,7 +1,7 @@ divert(-1) liblog.m4 Logic gates -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/mfpic.m4 b/graphics/circuit_macros/mfpic.m4 index 2bdd9e4c8e..28f22ccfea 100644 --- a/graphics/circuit_macros/mfpic.m4 +++ b/graphics/circuit_macros/mfpic.m4 @@ -1,7 +1,7 @@ divert(-1) mfpic.m4 Initialization for mfpic. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/mpost.m4 b/graphics/circuit_macros/mpost.m4 index 94b80828e6..3cd7821d4e 100644 --- a/graphics/circuit_macros/mpost.m4 +++ b/graphics/circuit_macros/mpost.m4 @@ -1,7 +1,7 @@ divert(-1) mpost.m4 Initialization for metapost. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/pgf.m4 b/graphics/circuit_macros/pgf.m4 index 04fc615f96..2d2db80972 100644 --- a/graphics/circuit_macros/pgf.m4 +++ b/graphics/circuit_macros/pgf.m4 @@ -1,7 +1,7 @@ divert(-1) pgf.m4 Initialization for Tikz-pgf. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/postscript.m4 b/graphics/circuit_macros/postscript.m4 index 7946ec30da..d1fddeb9fa 100644 --- a/graphics/circuit_macros/postscript.m4 +++ b/graphics/circuit_macros/postscript.m4 @@ -1,7 +1,7 @@ divert(-1) postscript.m4 Initialization for Postscript output. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/psfrag.m4 b/graphics/circuit_macros/psfrag.m4 index 3e3df16545..0e38743431 100644 --- a/graphics/circuit_macros/psfrag.m4 +++ b/graphics/circuit_macros/psfrag.m4 @@ -2,7 +2,7 @@ divert(-1) psfrag.m4 Initialization for dpic -f processing: Postscript with psfrag strings -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/pstricks.m4 b/graphics/circuit_macros/pstricks.m4 index 28acb8fe6c..b3c0631b3a 100644 --- a/graphics/circuit_macros/pstricks.m4 +++ b/graphics/circuit_macros/pstricks.m4 @@ -1,7 +1,7 @@ divert(-1) pstricks.m4 Initialization for PSTricks. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/circuit_macros/svg.m4 b/graphics/circuit_macros/svg.m4 index e686074a6b..ad0f6540d4 100644 --- a/graphics/circuit_macros/svg.m4 +++ b/graphics/circuit_macros/svg.m4 @@ -1,7 +1,7 @@ divert(-1) svg.m4 Initialization for SVG output. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -198,6 +198,7 @@ define(`svg_gt',`svg_symbol(&`#'62;)') define(`svg_leq',`svg_symbol(&`#'8804;)') define(`svg_geq',`svg_symbol(&`#'8805;)') define(`svg_prime',`svg_symbol(&`#'8242;)') +define(`svg_grave',`svg_symbol(&`#'96;)') define(`svg_ensp',`svg_symbol(&`#'8194;)') define(`svg_emsp',`svg_symbol(&`#'8195;)') define(`svg_thinsp',`svg_symbol(&`#'8201;)') diff --git a/graphics/circuit_macros/xfig.m4 b/graphics/circuit_macros/xfig.m4 index f8966d999b..8d3d24ed73 100644 --- a/graphics/circuit_macros/xfig.m4 +++ b/graphics/circuit_macros/xfig.m4 @@ -1,7 +1,7 @@ divert(-1) xfig.m4 Initialization for xfig. -* Circuit_macros Version 9.6, copyright (c) 2021 J. D. Aplevich under * +* Circuit_macros Version 9.7, copyright (c) 2021 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS b/graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS index 3e8d5ad7b2..d2fb137fd9 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/NEWS @@ -1,5 +1,9 @@ pedigree NEWS: History of user interface changes +Changes in v2.0, 2021/10/02 + +* Moved from SELFAUTOPARENT to TEXMFROOT for better packaging + Changes in v0.4, 2012/03/15 * Added TeXLive compatibility @@ -18,4 +22,4 @@ Changes in v0.3, 2007/07/31 * INCOMPATIBLE CHANGE: requires pst-pdgr v0.3 or later. -This file is in public domain \ No newline at end of file +This file is in public domain diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 index e1f63a36a8..cd99c37490 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree 3" -.TH Pedigree 3 "2007-07-09" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,35 +149,26 @@ use Pedigree; .IX Header "DESCRIPTION" This is the main package for pedigree construction. It calls other libraries in the Pedigree:: family -.Sp -.RS 4 -\&\fBMakeNode\fR(\fI\f(CI$params\fI\fR); -.Sp +.IP "\fBMakeNode\fR(\fI\f(CI$params\fI\fR);" 4 +.IX Item "MakeNode($params);" Construct a new node from the given parameters. Check what kind of node should we construct. -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), -\&\fIPedigree::AbortionNode\fR\|(3), -\&\fIPedigree::Area\fR\|(3), -\&\fIPedigree::ChildlessNode\fR\|(3), -\&\fIPedigree::Language\fR\|(3), -\&\fIPedigree::MarriageNode\fR\|(3), -\&\fIPedigree::Node\fR\|(3), -\&\fIPedigree::Parser\fR\|(3), -\&\fIPedigree::PersonNode\fR\|(3), -\&\fIPedigree::TwinsNode\fR\|(3), +\&\fBpedigree\fR\|(1), +\&\fBPedigree::AbortionNode\fR\|(3), +\&\fBPedigree::Area\fR\|(3), +\&\fBPedigree::ChildlessNode\fR\|(3), +\&\fBPedigree::Language\fR\|(3), +\&\fBPedigree::MarriageNode\fR\|(3), +\&\fBPedigree::Node\fR\|(3), +\&\fBPedigree::Parser\fR\|(3), +\&\fBPedigree::PersonNode\fR\|(3), +\&\fBPedigree::TwinsNode\fR\|(3), .SH "AUTHOR" .IX Header "AUTHOR" -Boris Veytsman, Leila Akhmadeeva, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 18:" 4 -.IX Item "Around line 18:" -You can't have =items (as at line 46) unless the first thing after the =over is an =item +Boris Veytsman, Leila Akhmadeeva, 2007\-2021 diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm index c92a027b86..4237a0bd35 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree.pm @@ -15,8 +15,6 @@ $node = Pedigree->MakeNode($params); This is the main package for pedigree construction. It calls other libraries in the Pedigree:: family -=over 4 - =cut @@ -43,6 +41,8 @@ use strict; =pod +=over 4 + =item B(I<$params>); Construct a new node from the given parameters. Check what kind of node @@ -103,7 +103,7 @@ Pedigree::TwinsNode(3), =head1 AUTHOR -Boris Veytsman, Leila Akhmadeeva, 2007 +Boris Veytsman, Leila Akhmadeeva, 2007-2021 diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 index 1d1569d08d..e3b6469509 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::AbortionNode 3" -.TH Pedigree::AbortionNode 3 "2007-07-22" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::AbortionNode 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -145,33 +154,22 @@ use Pedigree::AbortionNode; .IX Header "DESCRIPTION" This package contains data about an abortion. Abortion is like a person, but it cannot have kids, and it is drawn differently -.Sp -.RS 4 -\&\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, -\&\fI\f(CI@fieldsfornode\fI\fR); -.Sp +.IP "\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR);" 4 +.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);" Output the command to draw this node. The parameters are distances between the nodes (in cm) and fields for abovetext. -.Sp -\&\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR); -.Sp +.IP "\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR);" 4 +.IX Item "PrintLegend($lang, @fields);" Print the legend for the given node, including \fI\f(CI@fields\fI\fR in the given language \fI\f(CI$lang\fI\fR, and excluding the fields, that have no meaning for this node. -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 23:" 4 -.IX Item "Around line 23:" -You can't have =items (as at line 46) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm index df56988c16..9f18768d2d 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/AbortionNode.pm @@ -20,7 +20,6 @@ $node->PrintLegend(I<$land>, I<@fields>); This package contains data about an abortion. Abortion is like a person, but it cannot have kids, and it is drawn differently -=over 4 =cut @@ -43,6 +42,8 @@ our @ISA=('Pedigree::PersonNode'); =pod +=over 4 + =item B(I<$xdist>, I<$ydist>, I<$belowtextfont>, I<$abovetextfont>, I<@fieldsfornode>); diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 index c200cbbf0f..42b8d88c72 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::Area 3" -.TH Pedigree::Area 3 "2007-07-08" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::Area 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -137,11 +146,11 @@ use Pedigree::Area; .PP \&\f(CW$area\fR = new Pedigree::Area($node); .PP -\&\f(CW$Ymin\fR=$area\->\fIGetYmin()\fR; +\&\f(CW$Ymin\fR=$area\->\fBGetYmin()\fR; .PP \&\f(CW$area\fR\->SetYmin($Ymin); .PP -\&\f(CW$Ymax\fR=$area\->\fIGetYmax()\fR; +\&\f(CW$Ymax\fR=$area\->\fBGetYmax()\fR; .PP \&\f(CW$area\fR\->SetYmax($Ymax); .PP @@ -157,12 +166,12 @@ use Pedigree::Area; .PP \&\f(CW$area\fR\->AddLeft($otherarea); .PP -\&\f(CW$rootnode\fR=$area\->\fIGetRootNode()\fR; +\&\f(CW$rootnode\fR=$area\->\fBGetRootNode()\fR; .PP \&\f(CW$area\fR\->MoveLowerLayers($x); .SH "DESCRIPTION" .IX Header "DESCRIPTION" -The algorithm of \fIpedigree\fR\|(1) uses the notion of area: a part of +The algorithm of \fBpedigree\fR\|(1) uses the notion of area: a part of a picture taken by a tree or a clump. This package implements this notion. .PP @@ -173,79 +182,58 @@ All distances are calculated as relative to the coordinates of the The units are distances between the nodes in X and Y direction. The Y axis is \fIdownward\fR: the earlier generations have smaller Y coordinates. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI$rootnode\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI$rootnode\fI\fR);" 4 +.IX Item "new($rootnode);" Construct a new area around the given rootnode -.Sp -\&\fBGetYmin\fR(); -.Sp +.IP "\fBGetYmin\fR();" 4 +.IX Item "GetYmin();" Get the lower bound of the area. -.Sp -\&\fBSetYmin\fR(\fI\f(CI$y\fI\fR); -.Sp +.IP "\fBSetYmin\fR(\fI\f(CI$y\fI\fR);" 4 +.IX Item "SetYmin($y);" Set the lower bound of the area. -.Sp -\&\fBGetYmax\fR(); -.Sp +.IP "\fBGetYmax\fR();" 4 +.IX Item "GetYmax();" Get the upper bound of the area. -.Sp -\&\fBSetYmax\fR(\fI\f(CI$y\fI\fR); -.Sp +.IP "\fBSetYmax\fR(\fI\f(CI$y\fI\fR);" 4 +.IX Item "SetYmax($y);" Set the upper bound of the area. -.Sp -\&\fBGetXmin\fR(\fI\f(CI$y\fI\fR); -.Sp +.IP "\fBGetXmin\fR(\fI\f(CI$y\fI\fR);" 4 +.IX Item "GetXmin($y);" Get the minimal X coordinate of the area on the level Y. -.Sp -\&\fBSetXmin\fR(\fI\f(CI$y\fI, \f(CI$x\fI\fR); -.Sp +.IP "\fBSetXmin\fR(\fI\f(CI$y\fI, \f(CI$x\fI\fR);" 4 +.IX Item "SetXmin($y, $x);" Set the minimal X coordinate of the area on the level Y. -.Sp -\&\fBGetXmax\fR(\fI\f(CI$y\fI\fR); -.Sp +.IP "\fBGetXmax\fR(\fI\f(CI$y\fI\fR);" 4 +.IX Item "GetXmax($y);" Get the maximal X coordinate of the area the the level Y. -.Sp -\&\fBSetXmax\fR(\fI\f(CI$y\fI, \f(CI$x\fI\fR); -.Sp +.IP "\fBSetXmax\fR(\fI\f(CI$y\fI, \f(CI$x\fI\fR);" 4 +.IX Item "SetXmax($y, $x);" Set the maximal X coordinate of the area the the level Y. -.Sp -\&\fBAddRight\fR(\fI\f(CI$otherarea\fI\fR); -.Sp +.IP "\fBAddRight\fR(\fI\f(CI$otherarea\fI\fR);" 4 +.IX Item "AddRight($otherarea);" Add the new area \fI\f(CI$otherarea\fI\fR to the given area at the right. The \&\*(L"other area\*(R" should have a root node that is relative to our root node. The relative Y of the other root node is used, the relative X is set. -.Sp -\&\fBAddLeft\fR(\fI\f(CI$otherarea\fI\fR); -.Sp +.IP "\fBAddLeft\fR(\fI\f(CI$otherarea\fI\fR);" 4 +.IX Item "AddLeft($otherarea);" Add the new area \fI\f(CI$otherarea\fI\fR to the given area at the left. The \&\*(L"other area\*(R" should have a root node that is relative to our root node. The relative Y of the other root node is used, the relative X is set. -.Sp -\&\fBGetRootNode\fR(); -.Sp +.IP "\fBGetRootNode\fR();" 4 +.IX Item "GetRootNode();" Return the root node of the area. -.Sp -\&\fBMoveLowerLayers\fR(\fI\f(CI$x\fI\fR); -.Sp +.IP "\fBMoveLowerLayers\fR(\fI\f(CI$x\fI\fR);" 4 +.IX Item "MoveLowerLayers($x);" Shift the lower layers (>0) of the area in the X direction by \fI\f(CI$x\fI\fR -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2006, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 51:" 4 -.IX Item "Around line 51:" -You can't have =items (as at line 69) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm index 12cda99deb..d62cc7b1b7 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Area.pm @@ -48,7 +48,6 @@ The units are distances between the nodes in X and Y direction. The Y axis is I: the earlier generations have smaller Y coordinates. -=over 4 =cut @@ -66,6 +65,8 @@ use strict; =pod +=over 4 + =item B(I<$rootnode>); Construct a new area around the given rootnode diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 index 0051778ed5..d0fc263a2b 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::ChildlessNode 3" -.TH Pedigree::ChildlessNode 3 "2007-07-22" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::ChildlessNode 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -145,37 +154,25 @@ use Pedigree::ChildlessNode; .IX Header "DESCRIPTION" This package contains data about a \*(L"childlessness\*(R" node. This node is not numbered in pedigree. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI%params\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI%params\fI\fR);" 4 +.IX Item "new(%params);" Construct a new node from the given parameters. -.Sp -\&\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, -\&\fI\f(CI@fieldsfornode\fI\fR); -.Sp +.IP "\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR);" 4 +.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);" Output the command to draw this node. The parameters are distances between the nodes (in cm) and fields for abovetext (not used here). We only print the Comment field below the node, and draw this node higher than other nodes. -.Sp -\&\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR); -.Sp +.IP "\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR);" 4 +.IX Item "PrintLegend($lang, @fields);" This subroutine does nothing since childlessness has no legend. -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 24:" 4 -.IX Item "Around line 24:" -You can't have =items (as at line 45) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm index db4b1c985b..c932d97809 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/ChildlessNode.pm @@ -21,8 +21,6 @@ $node->PrintLegend(I<$land>, I<@fields>); This package contains data about a "childlessness" node. This node is not numbered in pedigree. -=over 4 - =cut @@ -42,6 +40,9 @@ our @ISA=('Pedigree::PersonNode'); =pod +=over 4 + + =item B(I<%params>); Construct a new node from the given parameters. diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 index 2b3059bd7b..80efdf24ad 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::Language 3" -.TH Pedigree::Language 3 "2007-10-21" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::Language 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -137,17 +146,17 @@ use Pedigree::Language; .PP \&\f(CW$lang\fR = new Pedigree::Language(\fI\f(CI$language\fI\fR[, \fI\f(CI$encoding\fI\fR]); .PP -\&\f(CW$lang\fR\->\fIHeader()\fR; +\&\f(CW$lang\fR\->\fBHeader()\fR; .PP -\&\f(CW$lang\fR\->\fILanguage()\fR; +\&\f(CW$lang\fR\->\fBLanguage()\fR; .PP -\&\f(CW$lang\fR\->\fIEncoding()\fR; +\&\f(CW$lang\fR\->\fBEncoding()\fR; .PP -\&\f(CW$lang\fR\->\fIGetFieldNames()\fR; +\&\f(CW$lang\fR\->\fBGetFieldNames()\fR; .PP -\&\f(CW$lang\fR\->\fIGetValues()\fR; +\&\f(CW$lang\fR\->\fBGetValues()\fR; .PP -\&\f(CW$lang\fR\->\fIGetSpecialNames()\fR; +\&\f(CW$lang\fR\->\fBGetSpecialNames()\fR; .PP \&\f(CW$lang\fR\->PrintField(\fI\f(CI$field\fI\fR, $<$value>); .SH "DESCRIPTION" @@ -155,58 +164,42 @@ use Pedigree::Language; This package defines the language-dependent parts of the pedigree library. The idea is to gather everything about language here, so adding a new language should be (presumably) be easy. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI$language\fI\fR[, \fI\f(CI$encoding\fI\fR]); -.Sp +.IP "\fBnew\fR(\fI\f(CI$language\fI\fR[, \fI\f(CI$encoding\fI\fR]);" 4 +.IX Item "new($language[, $encoding]);" Construct the new interpreter from the given language and encoding names. -.Sp -\&\fBHeader\fR () -.Sp +.IP "\fBHeader\fR ()" 4 +.IX Item "Header ()" Print the language-related lines of the document preamble -.Sp -\&\fBLanguage\fR () -.Sp +.IP "\fBLanguage\fR ()" 4 +.IX Item "Language ()" Print the current language -.Sp -\&\fBEncoding\fR () -.Sp +.IP "\fBEncoding\fR ()" 4 +.IX Item "Encoding ()" Print the current encoding -.Sp -\&\fBGetFieldNames\fR(); -.Sp +.IP "\fBGetFieldNames\fR();" 4 +.IX Item "GetFieldNames();" Outputs a reference to a hash \&\*(L"field_name_in_this_language\*(R"=>\*(L"field_name_in_English\*(R" -.Sp -\&\fBGetValues\fR(); -.Sp +.IP "\fBGetValues\fR();" 4 +.IX Item "GetValues();" Outputs a reference to a hash \&\*(L"field_value_in_this_language\*(R"=>\*(L"field_value_in_English\*(R" -.Sp -\&\fBGetSpecialNames\fR(); -.Sp +.IP "\fBGetSpecialNames\fR();" 4 +.IX Item "GetSpecialNames();" Some values for the 'Name' field start with \f(CW\*(C`#\*(C'\fR. They are special. This subroutine outputs a reference to a hash \&\*(L"special_name_in_this_language\*(R"=>\*(L"special_name\*(R" -.Sp -\&\fBPrintField\fR(\fI\f(CI$field\fI\fR, \fI\f(CI$value\fI\fR); -.Sp +.IP "\fBPrintField\fR(\fI\f(CI$field\fI\fR, \fI\f(CI$value\fI\fR);" 4 +.IX Item "PrintField($field, $value);" Formats the value \fI\f(CI$value\fI\fR of the given field \fI\f(CI$field\fI\fR according to the rules of the given language. -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2006, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 34:" 4 -.IX Item "Around line 34:" -You can't have =items (as at line 57) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm index bcae95d307..79494d617c 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Language.pm @@ -31,7 +31,6 @@ This package defines the language-dependent parts of the pedigree library. The idea is to gather everything about language here, so adding a new language should be (presumably) be easy. -=over 4 =cut @@ -53,6 +52,7 @@ use strict; =pod +=over 4 =item B(I<$language>[, I<$encoding>]); diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Makefile b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Makefile index 5afbb317dd..992a612161 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Makefile +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Makefile @@ -1,6 +1,6 @@ # # Makefile for pedigree -# $Id: Makefile,v 2.4 2007-07-09 22:49:33 boris Exp $ +# $Id: Makefile,v 2.4 2007/07/09 22:49:33 boris Exp $ # # This file is in public domain # diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 index 780588f4c1..98ed3ea79f 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::MarriageNode 3" -.TH Pedigree::MarriageNode 3 "2007-07-15" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::MarriageNode 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -137,79 +146,62 @@ use Pedigree::MarriageNode; .PP \&\f(CW$node\fR = new Pedigree::MarriageNode(\fI\f(CI%params\fI\fR); .PP -\&\f(CW$FSpouse\fR = \f(CW$node\fR\->\fIFSpouse()\fR; +\&\f(CW$FSpouse\fR = \f(CW$node\fR\->\fBFSpouse()\fR; .PP -\&\f(CW$MSpouse\fR = \f(CW$node\fR\->\fIMSpouse()\fR; +\&\f(CW$MSpouse\fR = \f(CW$node\fR\->\fBMSpouse()\fR; .PP -\&\f(CW$consang\fR = \f(CW$self\fR\->\fIisConsanguinic()\fR; +\&\f(CW$consang\fR = \f(CW$self\fR\->\fBisConsanguinic()\fR; .PP -\&\f(CW$area\fR = \f(CW$node\fR\->\fISetArea()\fR; +\&\f(CW$area\fR = \f(CW$node\fR\->\fBSetArea()\fR; .PP \&\f(CW$node\fR\->CalcAbsCoord(\fI\f(CI$x\fI\fR, \fI\f(CI$y\fI\fR); .PP \&\f(CW$node\fR\->DrawNode(\fI\f(CI$xidst\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \&\fI\f(CI@fieldsfornode\fI\fR); .PP -\&\f(CW$node\fR\->\fIDrawConnections()\fR; +\&\f(CW$node\fR\->\fBDrawConnections()\fR; .SH "DESCRIPTION" .IX Header "DESCRIPTION" This package contains data about a marriage. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI%params\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI%params\fI\fR);" 4 +.IX Item "new(%params);" Construct a new node from the given parameters. -.Sp -\&\fBFSpouse\fR(); -.Sp +.IP "\fBFSpouse\fR();" 4 +.IX Item "FSpouse();" Get female spouse of a node. -.Sp -\&\fBMSpouse\fR(); -.Sp +.IP "\fBMSpouse\fR();" 4 +.IX Item "MSpouse();" Get female spouse of a node. -.Sp -\&\fBisConsanguinic\fR(); -.Sp +.IP "\fBisConsanguinic\fR();" 4 +.IX Item "isConsanguinic();" Check whether the node is consanguinic -.Sp -\&\fBSetArea\fR(); -.Sp +.IP "\fBSetArea\fR();" 4 +.IX Item "SetArea();" Calculate relative coordinates for all nodes, that are descendants of the given node \fIand\fR the spouses that form the marriage. We create a -\&\fIPedigree::Area\fR\|(3) around the given node and recursively apply the +\&\fBPedigree::Area\fR\|(3) around the given node and recursively apply the function to all descendants. The subroutine returns the reference to the created area. -.Sp -\&\fBCalcAbsCoor\fR(\fI\f(CI$x\fI\fR, $); -.Sp +.IP "\fBCalcAbsCoor\fR(\fI\f(CI$x\fI\fR, $);" 4 +.IX Item "CalcAbsCoor($x, $);" Set the absolute coordinates of the given node, if the absolute coordinates of the parent node are (\fI\f(CI$x\fI\fR, \fI\f(CI$y\fI\fR), and recursively do this for all descendants of this node, and right and left clumps. -.Sp -\&\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, -\&\fI\f(CI@fieldsfornode\fI\fR); -.Sp +.IP "\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR);" 4 +.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);" Output the command to draw this node. The parameters are distances between the nodes (in cm). -.Sp -\&\fBDrawConnections\fR(); -.Sp +.IP "\fBDrawConnections\fR();" 4 +.IX Item "DrawConnections();" Draw the connections from the given node to its descendants and the spouses -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2006, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 33:" 4 -.IX Item "Around line 33:" -You can't have =items (as at line 55) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm index 39e20bf58f..9061fd949a 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/MarriageNode.pm @@ -30,7 +30,6 @@ $node->DrawConnections(); This package contains data about a marriage. -=over 4 =cut @@ -52,6 +51,8 @@ our @ISA=('Pedigree::Node'); =pod +=over 4 + =item B(I<%params>); Construct a new node from the given parameters. diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 index 0c6dba5c79..e4a9d16877 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::Node 3" -.TH Pedigree::Node 3 "2009-01-05" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::Node 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -137,35 +146,35 @@ use Pedigree::Node; .PP \&\f(CW$node\fR = new Pedigree::Node(\fI\f(CI%params\fI\fR); .PP -\&\f(CW$node\fR\->\fICheckAllParents()\fR; +\&\f(CW$node\fR\->\fBCheckAllParents()\fR; .PP -\&\f(CW$Id\fR = \f(CW$node\fR\->\fIId()\fR; +\&\f(CW$Id\fR = \f(CW$node\fR\->\fBId()\fR; .PP \&\f(CW$node\fR\->SetSortOrder(\-1|0|1); .PP -\&\f(CW$result\fR = \f(CW$node\fR\->\fISortOrder()\fR; +\&\f(CW$result\fR = \f(CW$node\fR\->\fBSortOrder()\fR; .PP -\&\f(CW$is_numbered\fR=$node\->\fIisNumbered()\fR; +\&\f(CW$is_numbered\fR=$node\->\fBisNumbered()\fR; .PP -\&\f(CW$type\fR = \f(CW$node\fR\->\fIType()\fR; +\&\f(CW$type\fR = \f(CW$node\fR\->\fBType()\fR; .PP -\&\f(CW$Kids\fR = \f(CW$node\fR\->\fIKids()\fR; +\&\f(CW$Kids\fR = \f(CW$node\fR\->\fBKids()\fR; .PP -\&\f(CW$node\fR\->\fIGetAndSortKids()\fR; +\&\f(CW$node\fR\->\fBGetAndSortKids()\fR; .PP ($root, \f(CW$newgen\fR) = \f(CW$node\fR\->FindRoot(\fI\f(CI$generation\fI\fR, [\fI\f(CI$sort_order\fI\fR]); .PP -\&\f(CW$x\fR = \f(CW$node\fR\->\fIGetRelX()\fR; +\&\f(CW$x\fR = \f(CW$node\fR\->\fBGetRelX()\fR; .PP -\&\f(CW$y\fR = \f(CW$node\fR\->\fIGetRelY()\fR; +\&\f(CW$y\fR = \f(CW$node\fR\->\fBGetRelY()\fR; .PP \&\f(CW$node\fR\->SetRelX(\fI\f(CI$x\fI\fR); .PP \&\f(CW$node\fR\->SetRelX(\fI\f(CI$y\fI\fR); .PP -\&\f(CW$x\fR = \f(CW$node\fR\->\fIGetAbsX()\fR; +\&\f(CW$x\fR = \f(CW$node\fR\->\fBGetAbsX()\fR; .PP -\&\f(CW$y\fR = \f(CW$node\fR\->\fIGetAbsY()\fR; +\&\f(CW$y\fR = \f(CW$node\fR\->\fBGetAbsY()\fR; .PP \&\f(CW$node\fR\->SetIndexX(\fI\f(CI$n\fI\fR); .PP @@ -173,15 +182,15 @@ use Pedigree::Node; .PP \&\f(CW$node\fR\->SetAbsY(\fI\f(CI$y\fI\fR); .PP -\&\f(CW$n\fR = \f(CW$node\fR\->\fIGetIndexX()\fR; +\&\f(CW$n\fR = \f(CW$node\fR\->\fBGetIndexX()\fR; .PP -\&\f(CW$area\fR = \f(CW$node\fR\->\fISetArea()\fR; +\&\f(CW$area\fR = \f(CW$node\fR\->\fBSetArea()\fR; .PP -\&\f(CW$delta\fR = \f(CW$node\fR\->\fICenterKids()\fR; +\&\f(CW$delta\fR = \f(CW$node\fR\->\fBCenterKids()\fR; .PP \&\f(CW$node\fR\->CalcAbsCoord(\fI\f(CI$x\fI\fR, \fI\f(CI$y\fI\fR); .PP -\&\f(CW$node\fR\->\fIAddConsanguinicMarriages()\fR; +\&\f(CW$node\fR\->\fBAddConsanguinicMarriages()\fR; .PP \&\f(CW$node\fR\->AddTwins($ydist); .PP @@ -190,7 +199,7 @@ use Pedigree::Node; \&\f(CW$node\fR\->DrawAll(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR); .PP -\&\f(CW$node\fR\->\fIDrawConnections()\fR; +\&\f(CW$node\fR\->\fBDrawConnections()\fR; .PP \&\f(CW$node\fR\->PrintAllLegends(\fI\f(CI$land\fI\fR, \fI\f(CI@fields\fI\fR); .PP @@ -198,182 +207,143 @@ use Pedigree::Node; .SH "DESCRIPTION" .IX Header "DESCRIPTION" This is the basic package that defines nodes for pedigrees. -\&\fIPedigree::PersonNode\fR\|(3) and \fIPedigree::MarriageNode\fR\|(3) inherit from +\&\fBPedigree::PersonNode\fR\|(3) and \fBPedigree::MarriageNode\fR\|(3) inherit from this package. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI%params\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI%params\fI\fR);" 4 +.IX Item "new(%params);" Construct a new node from the given parameters. If a node with the give Id exists, add new information to the node. -.Sp -\&\fBCheckAllParents\fR(); -.Sp +.IP "\fBCheckAllParents\fR();" 4 +.IX Item "CheckAllParents();" Check whether mothers and fathers of all nodes exist -.Sp -\&\fBId\fR(); -.Sp +.IP "\fBId\fR();" 4 +.IX Item "Id();" Get Id of a node. Note that there is no way to set an Id of a node that was already created. -.Sp -\&\fBSetSortOrder\fR(\fI\-1|0|1\fR); -.Sp +.IP "\fBSetSortOrder\fR(\fI\-1|0|1\fR);" 4 +.IX Item "SetSortOrder(-1|0|1);" Normally the sibs nodes are sorted by age. However, if the nodes or their descendants are connected by a marriage line, we must sort them in the special way: all way to the left or all way to the right. The procedure \fBSetSortOrder\fR sets this flag for the node or deletes it depending on the argument. -.Sp -\&\fBSortOrder\fR(); -.Sp +.IP "\fBSortOrder\fR();" 4 +.IX Item "SortOrder();" Normally the sibs nodes are sorted by age. However, if the nodes or their descendants are connected by a marriage line, we must sort them in the special way: all way to the left or all way to the right. The procedure \fBSortOrder\fR checks this flag. -.Sp -\&\fBisNumbered\fR(); -.Sp +.IP "\fBisNumbered\fR();" 4 +.IX Item "isNumbered();" Check whether the node should be numbered in pedigree -.Sp -\&\fBType\fR() -.Sp +.IP "\fBType\fR()" 4 +.IX Item "Type()" Return node type. -.Sp -\&\fBKids\fR(); -.Sp +.IP "\fBKids\fR();" 4 +.IX Item "Kids();" Get the reference to the array of kids -.Sp -\&\fBGetAndSortKids\fR(); -.Sp +.IP "\fBGetAndSortKids\fR();" 4 +.IX Item "GetAndSortKids();" Apply sort the array of kids for the given node -.Sp -\&\fBFindRoot\fR(\fI\f(CI$generation\fI\fR, [\fI\f(CI$sort_order\fI\fR]); -.Sp +.IP "\fBFindRoot\fR(\fI\f(CI$generation\fI\fR, [\fI\f(CI$sort_order\fI\fR]);" 4 +.IX Item "FindRoot($generation, [$sort_order]);" Finds the root of the tree to which the current node belongs. Takes the current generation number and returns the root and its generation number. Here generation numbers go \*(L"backwards\*(R": the older generations have higher numbers. The found node is assigned sort order \&\fI\f(CI$sort_order\fI\fR. -.Sp -\&\fBGetRelX\fR(); -.Sp +.IP "\fBGetRelX\fR();" 4 +.IX Item "GetRelX();" Find the relative x coordinate of the node. The coordinate is relative to the precedessor or to the marriage node, which connects this node to the proband -.Sp -\&\fBGetRelY\fR(); -.Sp +.IP "\fBGetRelY\fR();" 4 +.IX Item "GetRelY();" Find the relative Y coordinate of the node. The coordinate is relative to the precedessor or to the marriage node, which connects this node to the proband. Note that the Y axis is down. -.Sp -\&\fBSetRelX\fR(\fI\f(CI$x\fI\fR); -.Sp +.IP "\fBSetRelX\fR(\fI\f(CI$x\fI\fR);" 4 +.IX Item "SetRelX($x);" Set the relative x coordinate of the node. The coordinate is relative to the precedessor or to the marriage node, which connects this node to the proband. -.Sp -\&\fBSetRelY\fR(\fI\f(CI$y\fI\fR); -.Sp +.IP "\fBSetRelY\fR(\fI\f(CI$y\fI\fR);" 4 +.IX Item "SetRelY($y);" Set the relative y coordinate of the node. The coordinate is relative to the precedessor or to the marriage node, which connects this node to the proband. Note that the Y axis is down. -.Sp -\&\fBGetAbsX\fR(); -.Sp +.IP "\fBGetAbsX\fR();" 4 +.IX Item "GetAbsX();" Find the absolute x coordinate of the node. -.Sp -\&\fBGetAbsY\fR(); -.Sp +.IP "\fBGetAbsY\fR();" 4 +.IX Item "GetAbsY();" Find the absolute Y coordinate of the node. -.Sp -\&\fBGetIndexX\fR(); -.Sp +.IP "\fBGetIndexX\fR();" 4 +.IX Item "GetIndexX();" Find the number of the node in the given generation. -.Sp -\&\fBSetAbsX\fR(\fI\f(CI$x\fI\fR); -.Sp +.IP "\fBSetAbsX\fR(\fI\f(CI$x\fI\fR);" 4 +.IX Item "SetAbsX($x);" Set the absolute x coordinate of the node. -.Sp -\&\fBSetAbsY\fR(\fI\f(CI$y\fI\fR); -.Sp +.IP "\fBSetAbsY\fR(\fI\f(CI$y\fI\fR);" 4 +.IX Item "SetAbsY($y);" Set the absolute y coordinate of the node. -.Sp -\&\fBSetIndexX\fR(\fI\f(CI$n\fI\fR); -.Sp +.IP "\fBSetIndexX\fR(\fI\f(CI$n\fI\fR);" 4 +.IX Item "SetIndexX($n);" Set the number of the node in the given generation. -.Sp -\&\fBSetArea\fR(); -.Sp +.IP "\fBSetArea\fR();" 4 +.IX Item "SetArea();" Calculate relative coordinates for all nodes, that are descendants of -the given node. We create a \fIPedigree::Area\fR\|(3) around the given node +the given node. We create a \fBPedigree::Area\fR\|(3) around the given node and recursively apply the function to all descendants. The subroutine returns the reference to the created area. -.Sp -\&\fBCenterKids\fR(); -.Sp +.IP "\fBCenterKids\fR();" 4 +.IX Item "CenterKids();" Move the relative coordinates of all the kids of the given node so the given node is centered in relation to the kids. Returns -the shift to be applied to the \fIPedigree::Area\fR\|(3). -.Sp -\&\fBCalcAbsCoor\fR(\fI\f(CI$x\fI\fR, $); -.Sp +the shift to be applied to the \fBPedigree::Area\fR\|(3). +.IP "\fBCalcAbsCoor\fR(\fI\f(CI$x\fI\fR, $);" 4 +.IX Item "CalcAbsCoor($x, $);" Set the absolute coordinates of the given node, if the absolute coordinates of the parent node are (\fI\f(CI$x\fI\fR, \fI\f(CI$y\fI\fR), and recursively do this for all descendants of this node. Additionally set up \&\fB\f(CB%node_by_gen\fB\fR. -.Sp -\&\fBAddConsanguinicMarriages\fR(); -.Sp +.IP "\fBAddConsanguinicMarriages\fR();" 4 +.IX Item "AddConsanguinicMarriages();" Check the pedigree and add consanguinic marriages to it. Note that this procedure must be called \fBafter\fR SetAbsCoor, so the coordinates of all nodes are set. -.Sp -\&\fBAddTwins\fR(\fI\f(CI$ydist\fI\fR); -.Sp +.IP "\fBAddTwins\fR(\fI\f(CI$ydist\fI\fR);" 4 +.IX Item "AddTwins($ydist);" Check the pedigree and add twin nodes. Note that this procedure must be called \fBafter\fR SetAbsCoor and AddConsanguinicMarriages. -.Sp -\&\fBSetFrame\fR(\fI\f(CI$xidst\fI\fR, \fI\f(CI$ydist\fI\fR); -.Sp +.IP "\fBSetFrame\fR(\fI\f(CI$xidst\fI\fR, \fI\f(CI$ydist\fI\fR);" 4 +.IX Item "SetFrame($xidst, $ydist);" Calculate the frame: coordinates of the lower left and upper right corners of the picture (in ps units). As a side effect, add generation numbers to each person node and calculate the X index of each node. -.Sp -\&\fBDrawConnections\fR(); -.Sp +.IP "\fBDrawConnections\fR();" 4 +.IX Item "DrawConnections();" Draw the connections from the given node to its descendants -.Sp -\&\fBDrawAll\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, - \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR); -.Sp +.IP "\fBDrawAll\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR);" 4 +.IX Item "DrawAll($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);" Draw all nodes and connections in the form suitable for pspicture -.Sp -\&\fBPrintAllLegends\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR); -.Sp +.IP "\fBPrintAllLegends\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR);" 4 +.IX Item "PrintAllLegends($lang, @fields);" Print legend for all the nodes. The first parameter is the language, the other is the fields to be included in the legend. -.Sp -\&\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR); -.Sp +.IP "\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR);" 4 +.IX Item "PrintLegend($lang, @fields);" This subroutine does nothing: a generic node has no legend. It -is overriden by \fIPedigree::PersonNode\fR\|(3) and \fIPedigree::AbortionNode\fR\|(3). -.RE +is overriden by \fBPedigree::PersonNode\fR\|(3) and \fBPedigree::AbortionNode\fR\|(3). .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2006, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 80:" 4 -.IX Item "Around line 80:" -You can't have =items (as at line 136) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm index 445f92abaf..bf4b2a61cc 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Node.pm @@ -77,8 +77,6 @@ This is the basic package that defines nodes for pedigrees. Pedigree::PersonNode(3) and Pedigree::MarriageNode(3) inherit from this package. -=over 4 - =cut #################################################################### @@ -133,6 +131,9 @@ our @twin_sets; =pod +=over 4 + + =item B(I<%params>); Construct a new node from the given parameters. If a node with diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 index 65e9d7b716..3b2ba88438 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::Parser 3" -.TH Pedigree::Parser 3 "2007-07-16" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::Parser 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -142,30 +151,20 @@ use Pedigree::Parser; .IX Header "DESCRIPTION" This package parses input for the pedigree library and is used to define nodes. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI$inputline\fI\fR, \fI\f(CI$lang\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI$inputline\fI\fR, \fI\f(CI$lang\fI\fR);" 4 +.IX Item "new($inputline, $lang);" Construct a new parser from the pipe-separated line at input -.Sp -\&\fBParse\fR(\fI\f(CI$inputline\fI\fR); -.Sp +.IP "\fBParse\fR(\fI\f(CI$inputline\fI\fR);" 4 +.IX Item "Parse($inputline);" Take a line of comma-separated values; return a reference to a hash of parsed values -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2006, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 21:" 4 -.IX Item "Around line 21:" -You can't have =items (as at line 59) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm index 7978064f47..53814777e1 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/Parser.pm @@ -18,7 +18,6 @@ $parser->Parse($inputline); This package parses input for the pedigree library and is used to define nodes. -=over 4 =cut @@ -56,6 +55,8 @@ my %fields_to_convert = ( =pod +=over 4 + =item B(I<$inputline>, I<$lang>); Construct a new parser from the pipe-separated line at input diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 index 8876211f53..f3a9401300 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::PersonNode 3" -.TH Pedigree::PersonNode 3 "2007-07-22" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::PersonNode 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -137,20 +146,20 @@ use Pedigree::PersonNode; .PP \&\f(CW$node\fR = new Pedigree::PersonNode(\fI\f(CI%params\fI\fR); .PP -\&\f(CW$Id\fR = \f(CW$node\fR\->\fIMotherId()\fR; -\&\f(CW$Id\fR = \f(CW$node\fR\->\fIFatherId()\fR; +\&\f(CW$Id\fR = \f(CW$node\fR\->\fBMotherId()\fR; +\&\f(CW$Id\fR = \f(CW$node\fR\->\fBFatherId()\fR; .PP -\&\f(CW$isProband\fR = \f(CW$node\fR\->\fIisProband()\fR; +\&\f(CW$isProband\fR = \f(CW$node\fR\->\fBisProband()\fR; .PP -\&\f(CW$sex\fR = \f(CW$node\fR\->\fISex()\fR; +\&\f(CW$sex\fR = \f(CW$node\fR\->\fBSex()\fR; .PP -\&\f(CW$DoB\fR = \f(CW$node\fR\->\fIDoB()\fR; +\&\f(CW$DoB\fR = \f(CW$node\fR\->\fBDoB()\fR; .PP -\&\f(CW$DoD\fR = \f(CW$node\fR\->\fIDoD()\fR; +\&\f(CW$DoD\fR = \f(CW$node\fR\->\fBDoD()\fR; .PP -\&\f(CW$cond\fR = \f(CW$node\fR\->\fICondition()\fR; +\&\f(CW$cond\fR = \f(CW$node\fR\->\fBCondition()\fR; .PP -\&\f(CW$GenName\fR = \f(CW$node\fR\->\fIGetGenName()\fR; +\&\f(CW$GenName\fR = \f(CW$node\fR\->\fBGetGenName()\fR; .PP \&\f(CW$node\fR\->SetGenName(\fI\f(CI$name\fI\fR); .PP @@ -161,72 +170,51 @@ use Pedigree::PersonNode; .SH "DESCRIPTION" .IX Header "DESCRIPTION" This package contains data about a person. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI%params\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI%params\fI\fR);" 4 +.IX Item "new(%params);" Construct a new node from the given parameters. -.Sp -\&\fBMotherId\fR(); -.Sp +.IP "\fBMotherId\fR();" 4 +.IX Item "MotherId();" Return Mother Id. -.Sp -\&\fBFatherId\fR(); -.Sp +.IP "\fBFatherId\fR();" 4 +.IX Item "FatherId();" Return Father Id. -.Sp -\&\fBisProband\fR(); -.Sp +.IP "\fBisProband\fR();" 4 +.IX Item "isProband();" Return 1 if the pesron is a Proband and zero otherwise -.Sp -\&\fBSex\fR(); -.Sp +.IP "\fBSex\fR();" 4 +.IX Item "Sex();" Get the sex of the node -.Sp -\&\fBDoB\fR(); -.Sp +.IP "\fBDoB\fR();" 4 +.IX Item "DoB();" Get the DoB of the node -.Sp -\&\fBDoD\fR(); -.Sp +.IP "\fBDoD\fR();" 4 +.IX Item "DoD();" Get the DoB of the node -.Sp -\&\fBCondition\fR(); -.Sp +.IP "\fBCondition\fR();" 4 +.IX Item "Condition();" Returns node conditon. -.Sp -\&\fBGetGenName\fR(); -.Sp +.IP "\fBGetGenName\fR();" 4 +.IX Item "GetGenName();" Find the generation name for the node -.Sp -\&\fBSetGenName\fR(\fI\f(CI$name\fI\fR); -.Sp +.IP "\fBSetGenName\fR(\fI\f(CI$name\fI\fR);" 4 +.IX Item "SetGenName($name);" Set the generation name of the node -.Sp -\&\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, -\&\fI\f(CI@fieldsfornode\fI\fR); -.Sp +.IP "\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR);" 4 +.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);" Output the command to draw this node. The parameters are distances between the nodes (in cm) and fields for abovetext. -.Sp -\&\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR); -.Sp +.IP "\fBPrintLegend\fR(\fI\f(CI$lang\fI\fR, \fI\f(CI@fields\fI\fR);" 4 +.IX Item "PrintLegend($lang, @fields);" Print the legend for the given node, including \fI\f(CI@fields\fI\fR in the given language \fI\f(CI$lang\fI\fR. -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2006, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 39:" 4 -.IX Item "Around line 39:" -You can't have =items (as at line 58) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm index 6d341cb715..bd98dda06b 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/PersonNode.pm @@ -36,8 +36,6 @@ $node->PrintLegend(I<$land>, I<@fields>); This package contains data about a person. -=over 4 - =cut #################################################################### @@ -55,6 +53,8 @@ our @ISA=('Pedigree::Node'); =pod +=over 4 + =item B(I<%params>); Construct a new node from the given parameters. diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 index 731818a28f..21e8b9ad07 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.3 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "Pedigree::TwinsNode 3" -.TH Pedigree::TwinsNode 3 "2007-07-15" "perl v5.10.0" "User Contributed Perl Documentation" +.TH Pedigree::TwinsNode 3 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -140,41 +149,29 @@ use Pedigree::TwinsNode; \&\f(CW$node\fR\->DrawNode(\fI\f(CI$xidst\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \&\fI\f(CI@fieldsfornode\fI\fR); .PP -\&\f(CW$node\fR\->\fIDrawConnections()\fR; +\&\f(CW$node\fR\->\fBDrawConnections()\fR; .SH "DESCRIPTION" .IX Header "DESCRIPTION" This package contains data about a twins node. Twins node is a special node between the parent and the twins. -.Sp -.RS 4 -\&\fBnew\fR(\fI\f(CI%params\fI\fR); -.Sp +.IP "\fBnew\fR(\fI\f(CI%params\fI\fR);" 4 +.IX Item "new(%params);" Construct a new node from the given parameters. -.Sp -\&\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, -\&\fI\f(CI@fieldsfornode\fI\fR); -.Sp +.IP "\fBDrawNode\fR(\fI\f(CI$xdist\fI\fR, \fI\f(CI$ydist\fI\fR, \fI\f(CI$belowtextfont\fI\fR, \fI\f(CI$abovetextfont\fI\fR, \fI\f(CI@fieldsfornode\fI\fR);" 4 +.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);" Output the command to draw this node. The parameters are distances between the nodes (in psunits). -.Sp -\&\fBDrawConnections\fR(); -.Sp +.IP "\fBDrawConnections\fR();" 4 +.IX Item "DrawConnections();" Draw the connections from the given node to its descendants and the parent -.RE .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The calling program should define \fB\f(CB$main::DEBUG\fB\fR and set it to 0 or 1. .SH "SEE ALSO" .IX Header "SEE ALSO" -\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3) +\&\fBpedigree\fR\|(1), \fBPedigree\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Boris Veytsman, Leila Akhmadeeva, 2007 -.SH "POD ERRORS" -.IX Header "POD ERRORS" -Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 25:" 4 -.IX Item "Around line 25:" -You can't have =items (as at line 47) unless the first thing after the =over is an =item diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm index c8557230bd..85f8454b76 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/Pedigree/TwinsNode.pm @@ -22,7 +22,6 @@ $node->DrawConnections(); This package contains data about a twins node. Twins node is a special node between the parent and the twins. -=over 4 =cut @@ -44,6 +43,8 @@ our @ISA=('Pedigree::Node'); =pod +=over 4 + =item B(I<%params>); Construct a new node from the given parameters. diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/README b/graphics/pstricks/contrib/pedigree/pedigree-perl/README index 506b12063e..d783c5640a 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/README +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/README @@ -1,6 +1,6 @@ A Program for Generation TeX Pedigrees From CSV Files Boris Veytsman & Leila Akhmadeeva - Version 1.0, April 2012 + Version 2.0, October 2021 This program generates TeX commands to typeset pedigrees - either TeX fragments of full LaTeX files. It has support for multilanguage @@ -23,7 +23,7 @@ For manual installation: 3. Optionally install man pages & documentation. -Copyright 2006-2012, Boris Veytsman , Leila Akhmadeeva +Copyright 2006-2021, Boris Veytsman , Leila Akhmadeeva This work may be distributed and/or modified under the conditions of the GNU Public License, either version 2 of this license or (at your diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile index 864566de3b..0a340c7e87 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/Makefile @@ -3,7 +3,7 @@ # # This file is in public domain # -# $Id: Makefile,v 2.10 2007-07-29 19:52:53 boris Exp $ +# $Id: Makefile,v 2.11 2021/10/02 20:52:39 boris Exp $ # TEXFILES = pedigree.tex @@ -28,7 +28,7 @@ all: $(PDFS) %.pdf: %.ps - ps2pdf -sAutoRotatePages=None $< + ps2pdf -sAutoRotatePages=None -dALLOWPSTRANSPARENCY $< %.ps: %.dvi dvips -Ppdf -o $@ $< diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex index c6d33951c2..7625f00660 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/abortions.tex @@ -1,10 +1,10 @@ {% \psset{descarmA=0.8}% \begin{pspicture}(-4,-4)(4,2) -\rput(0, 0){\pstPerson[female, affected, belowtext={\small I:1}, abovetext={\scriptsize Ann}]{A0}} \rput(2, -2){\pstPerson[male, affected, belowtext={\small II:3}, proband, abovetext={\scriptsize John}]{B3}} \rput(-2, -2){\pstAbortion[affected, belowtext={\small II:1}, abovetext={\scriptsize female}]{B1}} \rput(0, -2){\pstAbortion[normal, belowtext={\small II:2}, sab, abovetext={\scriptsize male}]{B2}} +\rput(0, 0){\pstPerson[female, affected, belowtext={\small I:1}, abovetext={\scriptsize Ann}]{A0}} \pstDescent{A0}{B1} \pstDescent{A0}{B2} \pstDescent{A0}{B3} diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex index 5d812a19c2..9f765d54cd 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english.tex @@ -1,20 +1,20 @@ {% \psset{descarmA=0.8}% \begin{pspicture}(-8,-4)(6,4) +\rput(-2, 2){\pstPerson[female, asymptomatic, belowtext={\small I:2}, deceased, abovetext={\scriptsize Joan Smith}]{GM1}} +\rput(2, 2){\pnode{GF2_m_GM2}} \rput(-6, 2){\pstPerson[male, normal, belowtext={\small I:1}, deceased, abovetext={\scriptsize Joseph Smith}]{GF1}} -\rput(0, 2){\pstPerson[male, normal, belowtext={\small I:3}, abovetext={\scriptsize Jim Brown}]{GF2}} \rput(4, 2){\pstPerson[female, normal, belowtext={\small I:4}, abovetext={\scriptsize Lisa Brown}]{GM2}} -\rput(2, 2){\pnode{GF2_m_GM2}} \rput(-4, 2){\pnode{GF1_m_GM1}} -\rput(-2, 2){\pstPerson[female, asymptomatic, belowtext={\small I:2}, deceased, abovetext={\scriptsize Joan Smith}]{GM1}} -\rput(0, 0){\pnode{F1_m_M1}} -\rput(-5, 0){\pstPerson[female, obligatory, belowtext={\small II:1}, abovetext={\scriptsize Ann Gold}]{A1}} -\rput(2, 0){\pstPerson[female, normal, belowtext={\small II:3}, abovetext={\scriptsize Mary Smith}]{M1}} -\rput(-3, 0){\pstPerson[male, affected, belowtext={\small II:2}, abovetext={\scriptsize Bill Smith}]{F1}} -\rput(0, -2){\pstPerson[female, affected, belowtext={\small III:3}, abovetext={\scriptsize Rebecca Smith}]{S1}} +\rput(0, 2){\pstPerson[male, normal, belowtext={\small I:3}, abovetext={\scriptsize Jim Brown}]{GF2}} +\rput(-5, -2){\pstPerson[female, affected, belowtext={\small III:1}, abovetext={\scriptsize Jenny Smith}]{C1}} \rput(2, -2){\pstPerson[male, normal, belowtext={\small III:4}, abovetext={\scriptsize Alexander Smith}]{S2}} +\rput(0, -2){\pstPerson[female, affected, belowtext={\small III:3}, abovetext={\scriptsize Rebecca Smith}]{S1}} \rput(-2, -2){\pstPerson[male, affected, belowtext={\small III:2}, proband, abovetext={\scriptsize John Smith}]{P}} -\rput(-5, -2){\pstPerson[female, affected, belowtext={\small III:1}, abovetext={\scriptsize Jenny Smith}]{C1}} +\rput(2, 0){\pstPerson[female, normal, belowtext={\small II:3}, abovetext={\scriptsize Mary Smith}]{M1}} +\rput(-3, 0){\pstPerson[male, affected, belowtext={\small II:2}, abovetext={\scriptsize Bill Smith}]{F1}} +\rput(0, 0){\pnode{F1_m_M1}} +\rput(-5, 0){\pstPerson[female, obligatory, belowtext={\small II:1}, abovetext={\scriptsize Ann Gold}]{A1}} \pstDescent{GF2_m_GM2}{M1} \ncline[]{GF2_m_GM2}{GM2} \ncline[]{GF2_m_GM2}{GF2} diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex index a652cdbb04..5a349c8c63 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/english1.tex @@ -1,32 +1,32 @@ {% \psset{descarmA=0.9}% \begin{pspicture}(-6,-3.6)(4.5,3.6) +\rput(-1.5, -1.8){\pstPerson[male, affected, belowtext={\small III:2}, proband]{P}} +\rput(-3.75, -1.8){\pstPerson[female, affected, belowtext={\small III:1}]{C1}} +\rput(1.5, -1.8){\pstPerson[male, normal, belowtext={\small III:4}]{S2}} +\rput(0, -1.8){\pstPerson[female, affected, belowtext={\small III:3}]{S1}} +\rput(-2.25, 0){\pstPerson[male, affected, belowtext={\small II:2}]{F1}} +\rput(1.5, 0){\pstPerson[female, normal, belowtext={\small II:3}]{M1}} +\rput(-3.75, 0){\pstPerson[female, obligatory, belowtext={\small II:1}]{A1}} +\rput(0, 0){\pnode{F1_m_M1}} +\rput(-3, 1.8){\pnode{GF1_m_GM1}} +\rput(1.5, 1.8){\pnode{GF2_m_GM2}} +\rput(3, 1.8){\pstPerson[female, normal, belowtext={\small I:4}]{GM2}} \rput(-4.5, 1.8){\pstPerson[male, normal, belowtext={\small I:1}, deceased]{GF1}} \rput(0, 1.8){\pstPerson[male, normal, belowtext={\small I:3}]{GF2}} -\rput(3, 1.8){\pstPerson[female, normal, belowtext={\small I:4}]{GM2}} -\rput(1.5, 1.8){\pnode{GF2_m_GM2}} -\rput(-3, 1.8){\pnode{GF1_m_GM1}} \rput(-1.5, 1.8){\pstPerson[female, asymptomatic, belowtext={\small I:2}, deceased]{GM1}} -\rput(0, 0){\pnode{F1_m_M1}} -\rput(-3.75, 0){\pstPerson[female, obligatory, belowtext={\small II:1}]{A1}} -\rput(1.5, 0){\pstPerson[female, normal, belowtext={\small II:3}]{M1}} -\rput(-2.25, 0){\pstPerson[male, affected, belowtext={\small II:2}]{F1}} -\rput(0, -1.8){\pstPerson[female, affected, belowtext={\small III:3}]{S1}} -\rput(1.5, -1.8){\pstPerson[male, normal, belowtext={\small III:4}]{S2}} -\rput(-1.5, -1.8){\pstPerson[male, affected, belowtext={\small III:2}, proband]{P}} -\rput(-3.75, -1.8){\pstPerson[female, affected, belowtext={\small III:1}]{C1}} -\pstDescent{GF2_m_GM2}{M1} -\ncline[]{GF2_m_GM2}{GM2} -\ncline[]{GF2_m_GM2}{GF2} -\pstDescent{GF1_m_GM1}{A1} -\pstDescent{GF1_m_GM1}{F1} -\ncline[]{GF1_m_GM1}{GM1} -\ncline[]{GF1_m_GM1}{GF1} +\pstDescent{A1}{C1} \pstDescent{F1_m_M1}{P} \pstDescent{F1_m_M1}{S1} \pstDescent{F1_m_M1}{S2} \ncline[]{F1_m_M1}{M1} \ncline[]{F1_m_M1}{F1} -\pstDescent{A1}{C1} +\pstDescent{GF1_m_GM1}{A1} +\pstDescent{GF1_m_GM1}{F1} +\ncline[]{GF1_m_GM1}{GM1} +\ncline[]{GF1_m_GM1}{GF1} +\pstDescent{GF2_m_GM2}{M1} +\ncline[]{GF2_m_GM2}{GM2} +\ncline[]{GF2_m_GM2}{GF2} \end{pspicture}% } diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf index 9683fa29c8..379af7e799 100644 Binary files a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf and b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.pdf differ diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.ps b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.ps deleted file mode 100644 index b23c498b68..0000000000 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/pedigree.ps +++ /dev/null @@ -1,27305 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software -%%Title: pedigree.dvi -%%CreationDate: Sat Apr 14 12:51:54 2012 -%%Pages: 32 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMR17 CMTT12 CMR12 CMBX9 CMR9 CMTT9 CMR10 CMBX12 CMBX10 -%%+ CMTT10 CMR7 CMSS10 CMTI10 CMR6 CMR8 CMTT8 CMITT10 CMSS8 CMSLTT10 -%%+ SFTT0900 SFRM0700 SFRM0900 SFBX1000 SFRM1000 CMSY10 CMTI7 -%%DocumentPaperSizes: Letter -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -Ppdf -o pedigree.ps pedigree.dvi -%DVIPSParameters: dpi=8000 -%DVIPSSource: TeX output 2012.04.14:1251 -%%BeginProcSet: tex.pro 0 0 -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S -/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy -setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask -restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 -def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 -rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 -N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop -false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A -length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} -forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ -BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat -{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch -round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 -rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B -/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} -B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p --3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ -0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: alt-rule.pro 0 0 -%! -% Patch by TVZ -% Makes dvips files draw rules with stroke rather than fill. -% Makes narrow rules more predictable at low resolutions -% after distilling to PDF. -% May have unknown consequences for very thick rules. -% Tested only with dvips 5.85(k). -TeXDict begin -/QV { - gsave newpath /ruleY X /ruleX X - Rx Ry gt - { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } - { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } - ifelse - setlinewidth 0 setlinecap stroke grestore -} bind def -end - -%%EndProcSet -%%BeginProcSet: pstricks.pro 0 0 -% $Id: pstricks.pro 647 2012-02-12 15:03:40Z herbert $ -% -%% PostScript prologue for pstricks.tex. -%% Version 1.12, 2012/02/12 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -% -% -% Define the follwing gs-functions if not known, eg when using distiller -% -systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if -systemdict /.setblendmode known not {/.setblendmode { pop } def } if -systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if -% -/tx@Dict 200 dict def % the main PSTricks dictionary -tx@Dict begin -/ADict 25 dict def % The arrow dictionaray -/CM { matrix currentmatrix } bind def -/SLW /setlinewidth load def -/CLW /currentlinewidth load def -/CP /currentpoint load def -/ED { exch def } bind def -/L /lineto load def -/T /translate load def -/TMatrix { } def -/RAngle { 0 } def -/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments -/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known -/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) -/Div { dup 0 eq { pop } { div } ifelse } def % control the division -/tan { dup cos abs 1.e-10 lt - { pop 1.e10 } % return 1.e10 as infinit - { dup sin exch cos div } ifelse % default sin/cos -} def -/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees -/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root - pop pop 0 }{ sqrt exch atan} ifelse } def -/NET { neg exch neg exch T } def % change coordinate system to the negative one -/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter -/Pyth2 { % Pythagoras, xA yA xB yB - 3 -1 roll % xA xB yB yA - sub % xA xB yB-yA - 3 1 roll % yB-yA xA xB - sub % yB-yA xA-xB - Pyth } def -/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian -/Rand { rand 4294967295 div } def % a real random number -%----------------- hv added 20050516 --------------- -/PiDiv2 1.57079632680 def -/Pi 3.14159265359 def -/TwoPi 6.28318530718 def -/Euler 2.71828182846 def -%/e Euler bind def -% -/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees -/DegtoRad { Pi mul 180 div } bind def % viceversa -%----------------- hv end--------------------------- -/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def -% -/PathLength { - flattenpath /z 0 def - { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } - { /y ED /x ED PathLength@ } - {} - { /y y2 def /x x2 def PathLength@ } - /pathforall load stopped { pop pop pop pop } if - z -} def -% -/STP { .996264 dup scale } def % BP/PT scaling -/STV { SDict begin normalscale end STP } def % -% -/DashLine { - dup 0 gt - { /a .5 def PathLength exch div } - { pop /a 1 def PathLength } ifelse - /b ED % pattern should fit evenly in b - dup /X ED % pattern array - 0 get /y ED % length of first black segment - /z 0 X {add} forall def % length of the full pattern - %% Computation of the scaling factor as described by van Zandt: - b a .5 sub 2 mul y mul sub z Div round - z mul a .5 sub 2 mul y mul add b exch Div - %%%% scaling factor on stack. - /z ED %% now, z is the scaling factor - false % for the length test below - X { z mul } forall X astore %% modification TN 04-08-07 - %%% Checking whether at least one dash in X has positive length: - {0 gt or} forall - { X 1 a sub y mul } - { [ 1 0 ] 0 } - ifelse - setdash stroke -} def -% -/DotLine { - /b PathLength def - /a ED /z ED /y CLW def - /z y z add def - a 0 gt { - /b b a div def - }{ - a 0 eq { - /b b y sub def - }{ a -3 eq { - /b b y add def } if - } ifelse - } ifelse - [ 0 b b z Div round Div dup 0 le { pop 1 } if ] - a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse - setdash 1 setlinecap stroke -} def -% -/SymbolLine { % on stack [ x y x y ... - counttomark % number of elements - 2 div cvi /n ED % n pairs - /YA ED /XA ED % the start point - n 1 sub { - /YB ED /XB ED - /XLength XB XA sub def - /YLength YB YA sub def - /PAngle YLength XLength Atan def - /XYLength XLength YLength Pyth def - - %% for negative SymStep we calculate the distance - SymStep 0 lt - { %XYLength SymStep div abs cvi - /nSym SymStep abs cvi def } - { /nSym XYLength SymStep div cvi def } - ifelse - 0.5 setflat - /Shift Symbol stringwidth pop 2 div def - /deltaX XLength nSym div def - /deltaY YLength nSym div def - curveticks - { XA YA moveto } - { XA Shift sub YA Shift sub moveto } - ifelse - nSym { - gsave - curveticks - { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED - currentpoint translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore - deltaX deltaY rmoveto - } repeat - /YA YB def /XA XB def - } repeat - curveticks - { XA YA moveto } - { XA Shift sub YA Shift sub moveto } - ifelse - gsave - curveticks - { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED - XA YA translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore - pop % delete the mark symbol -} def -% -/LineFill { % hv ------------ patch 7 ------------- - gsave - abs /hatchWidthInc ED - abs /hatchSepInc ED - abs CLW add /a ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform pathbbox - /y2 ED - a Div ceiling cvi /x2 ED /y1 ED - a Div cvi /x1 ED /y2 y2 y1 sub def - clip - newpath - 2 setlinecap - systemdict - /setstrokeadjust known { true setstrokeadjust } if - x2 x1 sub 1 add { - x1 a mul y1 moveto 0 y2 rlineto stroke - /x1 x1 1 add - hatchWidthInc 0 gt { CLW add } if - def - hatchSepInc 0 gt hatchWidthInc 0 gt or { - /a a hatchSepInc add def - CLW hatchWidthInc add SLW - } if - } repeat - grestore - pop pop } def -% -/DotFill {% on stack: dot radius - /dotRadius ED - abs CLW add /a ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform - pathbbox % llx lly urx ury of smallest bounding box - /y2 ED /x2 ED /y1 ED /x1 ED - y2 y1 sub a div 2 add cvi /Ny ED - x2 x1 sub a div 2 add cvi /Nx ED - clip - newpath - /yA y1 dotRadius add CLW add def - /xA0 x1 dotRadius add CLW add def - Ny { - /xA xA0 def - Nx { - newpath - xA yA dotRadius 0 360 arc - SolidDot { gsave fill grestore } if - stroke - xA a add /xA ED - } repeat - yA a add /yA ED - } repeat - grestore -} def -% -/PenroseFill {% on stack: scaling factor - dup dup scale - 1 exch div round /penroseFactor ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform pathbbox - /y2 ED - a Div ceiling cvi /x2 ED /y1 ED - a Div cvi /x1 ED /y2 y2 y1 sub def - clip - newpath - systemdict - /setstrokeadjust known { true setstrokeadjust } if - /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} - { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall - [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto - i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 - mul j l + S rmoveto}F i L j L stroke }F}F}F}F - grestore - pop pop -} def -% -/TruchetFill { % on stack: scaling factor - 10 dict begin - dup dup scale - 1 exch div round /penroseFactor ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform pathbbox - /y2 ED - a Div ceiling cvi /x2 ED /y1 ED - a Div cvi /x1 ED /y2 y2 y1 sub def - clip - newpath - systemdict - /setstrokeadjust known { true setstrokeadjust } if - /ma a neg def - /ha a 2 div def - /mha ha neg def - /tile { - rand dup 2 idiv 2 mul eq { 90 rotate } if - mha mha moveto ha mha lineto - ha ha lineto mha ha lineto -% closepath .1 setlinewidth stroke - contents - } def - /contents{ - 0 ha moveto ha 0 lineto - 0 mha moveto mha 0 lineto -% 1 setlinewidth stroke - } def - /dotiling { - f ma mul a f a mul { - /i exch def - f ma mul a f a mul { - /j exch def - gsave i j translate - tile stroke grestore - } for - } for - } def -% - /f 3 def - 5 srand dotiling - end % local user dict -} def -% -/BeginArrow { - ADict begin % hold it local, for end see EndArrow - /@mtrx CM def - gsave - 2 copy T - 2 index sub neg exch - 3 index sub exch Atan - rotate newpath -} def -% -/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict -% -/Arrow { - CLW mul add dup - 2 div /w ED - mul dup /h ED - mul /a ED - { 0 h T 1 -1 scale } if - w neg h moveto - 0 0 L w h L w neg a neg rlineto - gsave fill grestore -} def -% -/ArrowD { % the sides are drawn as curves (hv 20071211) - CLW mul add dup - 2 div /w ED - mul dup /h ED - mul /Inset ED - { 0 h T 1 -1 scale } if % changes the direction -% we use y=w/h^2 * x^2 as equation for the control points -% for the coordinates the arrow is seen from top to bottom -% the bottom (tip) is (0;0) - w neg h moveto % lower left of > - w 9 div 4 mul neg h 3 div 2 mul - w 9 div neg h 3 div - 0 0 curveto % tip of > - w 9 div h 3 div - w 9 div 4 mul h 3 div 2 mul - w h curveto % upper left of > - w neg Inset neg rlineto % move to x=0 and inset - gsave fill grestore -} def -% -/Tbar { - CLW mul add /z ED - z -2 div CLW 2 div moveto - z 0 rlineto stroke - 0 CLW moveto -} def -% -/Bracket { - CLW mul add dup CLW sub 2 div - /x ED mul CLW add /y ED /z CLW 2 div def - x neg y moveto - x neg CLW 2 div L x CLW 2 div L x y L stroke - 0 CLW moveto -} def -% -/RoundBracket { - CLW mul add dup 2 div - /x ED mul /y ED /mtrx CM def - 0 CLW 2 div T x y mul 0 ne { x y scale } if - 1 1 moveto - .85 .5 .35 0 0 0 curveto - -.35 0 -.85 .5 -1 1 curveto - mtrx setmatrix stroke 0 CLW moveto -} def -% -/SD { 0 360 arc fill } def -% -/EndDot { % DS is the dot size - { /z DS def } { /z 0 def } ifelse % outer or inner dimen - /b ED % the color definition - 0 z DS SD - b { 0 z DS CLW sub SD } if - 0 DS z add CLW 4 div sub - moveto -} def -% -/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { - /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto - load } if ] cvx newpath 3 1 roll T exec } def -% -/NArray { % holds the coordinates and on top of stack the showpoints boolean - /showpoints ED - counttomark 2 div dup cvi /n ED % n 2 div on stack - n eq not { exch pop } if % even numbers of points? delete one - ] aload /Points ED - showpoints not { Points aload pop } if -% { ] aload /Points ED } -% { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol -} def -% -/Line { - NArray n 0 eq not - { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def - n { Lineto } repeat - CP 4 2 roll ArrowB L pop pop - } if -} def -% -/LineToYAxis { - /Ox ED % Save the x origin value - NArray % all x-y pairs on stack - n { 2 copy moveto % go to current point - Ox exch Lineto % line to y-axis - pop % delete old x-value - } repeat -} def -% -/LineToXAxis{ - /Oy ED % Save the y origin value - NArray % all x-y pairs on stack - n 0 eq not - { n 1 eq { 0 0 /n 2 def } if - ArrowA - /n n 2 sub def - CP 2 copy moveto pop Oy Lineto - n { 2 copy moveto pop Oy Lineto } repeat - CP - 4 2 roll - ArrowB - 2 copy moveto pop Oy - L - pop pop } if -} def -% -/Arcto { - /a [ 6 -2 roll ] cvx def - a r - /arcto load stopped { 5 } { 4 } ifelse { pop } repeat - a -} def -% -/CheckClosed { - dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq - and { pop pop /n n 1 sub def } if -} def -% -/Polygon { - NArray n 2 eq { 0 0 /n 3 def } if - n 3 lt - { n { pop pop } repeat } - { n 3 gt { CheckClosed } if - n 2 mul -2 roll - /y0 ED /x0 ED /y1 ED /x1 ED - x1 y1 - /x1 x0 x1 add 2 div def - /y1 y0 y1 add 2 div def - x1 y1 moveto - /n n 2 sub def - n { Lineto } repeat - x1 y1 x0 y0 6 4 roll Lineto - Lineto pop pop closepath } ifelse -} def -% -/SymbolPolygon { % on stack [ x y x y ... - counttomark % number of elements - 2 add /m ED - 2 copy m 2 roll % copy last two - m 2 div cvi /n ED % n pairs - /YA ED /XA ED % the start point - n 1 sub { - /YB ED /XB ED - /XLength XB XA sub def - /YLength YB YA sub def - /PAngle YLength XLength Atan def - /XYLength XLength YLength Pyth def - /nSym XYLength SymStep Div cvi def - /Shift Symbol stringwidth pop 2 Div def - /deltaX XLength nSym Div def - /deltaY YLength nSym Div def - XA Shift sub YA Shift sub moveto - nSym { - gsave rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if - Symbol show - grestore - deltaX deltaY rmoveto - } repeat -% XB Shift sub YB Shift sub moveto Symbol show - /YA YB def /XA XB def - } repeat - pop % delete the mark symbol -} def -% -/Diamond { - /mtrx CM def - T rotate - /h ED - /w ED - dup 0 eq { pop } { CLW mul neg - /d ED - /a w h Atan def - /h d a sin Div h add def - /w d a cos Div w add def } ifelse - mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div - /ArrowA { moveto } def - /ArrowB { } def - false Line - closepath mtrx setmatrix } def -% -/Triangle { - /mtrx CM def - translate - rotate /h ED 2 div /w ED - dup CLW mul /d ED - /h h d w h Atan sin Div sub def - /w w d h w Atan 2 div dup cos exch sin Div mul sub def - mark - 0 d w neg d 0 h w d 0 d - /ArrowA { moveto } def - /ArrowB { } def - false - Line - closepath - mtrx -% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) -% setmatrix } def - setmatrix pop -} def -% DG/SR modification end -% -/CCA { - /y ED /x ED - 2 copy y sub /dy1 ED - x sub /dx1 ED - /l1 dx1 dy1 Pyth def -} def -% -/CC { - /l0 l1 def - /x1 x dx sub def - /y1 y dy sub def - /dx0 dx1 def - /dy0 dy1 def - CCA - /dx dx0 l1 c exp mul dx1 l0 c exp mul add def - /dy dy0 l1 c exp mul dy1 l0 c exp mul add def - /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def - /x2 x l0 dx mul m mul sub def - /y2 y l0 dy mul m mul sub def - /dx l1 dx mul m mul neg def - /dy l1 dy mul m mul neg def -} def -% -/IC { - /c c 1 add def - c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse - /a a 2 mul 3 div 45 cos b exp div def - CCA - /dx 0 def - /dy 0 def -} def -% -/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def -/NC { CC x1 y1 x2 y2 x y curveto } def -/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def -/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def -/NAC { x2 y2 x y curveto CC x1 y1 } def -/EAC { x2 y2 x y ArrowB curveto pop pop } def -% -/OpenCurve { - NArray n 3 lt - { n { pop pop } repeat } - { BOC /n n 3 sub def n { NC } repeat EOC } ifelse -} def -% -/CurvePath { - %% for negative SymStep we calculate the distance - SymStep 0 lt { gsave PathLength SymStep div abs /SymStep ED grestore } if - 0.5 setflat - flattenpath /z 0 def /z0 0 def - { /y1 ED /x1 ED /y2 y1 def /x2 x1 def - x1 Shift sub y1 Shift sub moveto - gsave - curveticks - { x1 y1 translate startAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { startAngle rotate Symbol show } - ifelse - grestore /z0 z def } - { /y ED /x ED PathLength@ z z0 sub SymStep ge { - x Shift sub y Shift sub moveto - gsave - curveticks - { y yOld sub x xOld sub Atan 180 sub CorrAngle sub /rotAngle ED - x y translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore /z0 z def } if - /yOld y def /xOld x def } - {} %% the lineto part - { /y y2 def /x x2 def PathLength@ - x Shift sub y Shift sub moveto - gsave - curveticks - { y yOld sub x xOld sub Atan 180 sub /rotAngle ED - x y translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - x Shift sub y Shift sub moveto - rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore - } - pathforall -% curveticks -% { gsave -% x y translate rotAngle rotate -% 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto -% SymbolLinewidth setlinewidth stroke grestore -% } if - z -} def -% -/OpenSymbolCurve { - OpenCurve - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/AltCurve { - { false NArray n 2 mul 2 roll - [ n 2 mul 3 sub 1 roll ] aload - /Points ED - n 2 mul -2 roll } - { false NArray } ifelse - n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse -} def -% -/AltOpenSymbolCurve { - AltCurve - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/ClosedCurve { - NArray n 3 lt - { n { pop pop } repeat } - { n 3 gt { CheckClosed } if - 6 copy n 2 mul 6 add 6 roll - IC CC x y moveto n { NC } repeat - closepath pop pop - } ifelse -} def -% -/ClosedSymbolCurve { - ClosedCurve - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def -/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def -/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def -% -/FontDot { - DS 2 mul dup - matrix scale matrix concatmatrix exch matrix - rotate matrix concatmatrix exch - findfont exch makefont setfont -} def -% -/Rect { - x1 y1 y2 add 2 div moveto - x1 y2 lineto - x2 y2 lineto - x2 y1 lineto - x1 y1 lineto - closepath -} def -% -/OvalFrame { - x1 x2 eq y1 y2 eq or - { pop pop x1 y1 moveto x2 y2 L } - { y1 y2 sub abs x1 x2 sub abs 2 copy gt - { exch pop } { pop } ifelse - 2 div exch { dup 3 1 roll mul exch } if - 2 copy lt { pop } { exch pop } ifelse - /b ED - x1 y1 y2 add 2 div moveto - x1 y2 x2 y2 b arcto - x2 y2 x2 y1 b arcto - x2 y1 x1 y1 b arcto - x1 y1 x1 y2 b arcto - 16 { pop } repeat - closepath - } ifelse -} def -% -/Frame { - CLW mul /a ED - 3 -1 roll - 2 copy gt { exch } if - a sub /y2 ED - a add /y1 ED - 2 copy gt { exch } if - a sub /x2 ED - a add /x1 ED - 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse -} def -% -/BezierNArray { - /f ED - counttomark 2 div dup cvi /n ED - n eq not { exch pop } if - n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat - f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse -} def -% -/OpenBezier { - BezierNArray - n 1 eq - { pop pop } - { ArrowA n 4 sub 3 idiv - { 6 2 roll 4 2 roll curveto } repeat - 6 2 roll 4 2 roll ArrowB curveto } ifelse -} def -% -/OpenSymbolBezier { - OpenBezier - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/ClosedBezier { - BezierNArray - n 1 eq - { pop pop } - { moveto n 1 sub 3 idiv - { 6 2 roll 4 2 roll curveto } repeat - closepath } ifelse -} def -% -/ClosedSymbolBezier { - /f ED % save showpoints value - 2 copy /yEnd ED /xEnd ED - counttomark -2 roll 2 copy /yStart ED /xStart ED - counttomark 2 roll - f - ClosedBezier - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath - [ xEnd yEnd xStart yStart SymbolLine -} def -% -/BezierShowPoints { - gsave - Points aload length 2 div cvi /n ED - moveto - n 1 sub { lineto } repeat - CLW 2 div SLW [ 4 4 ] 0 setdash stroke - grestore -} def -% -/Parab { - /y0 ED /x0 ED /y1 ED /x1 ED - /dx x0 x1 sub 3 div def - /dy y0 y1 sub 3 div def - x0 dx sub y0 dy add x1 y1 ArrowA - x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB - curveto - /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def -} def -% -/Parab1 { % 1 end | 0 SP - /ySP ED /xSP ED /y1 ED /x1 ED - /dx xSP x1 sub 3 div def - /dy ySP y1 sub 3 div def - newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto - x1 ySP lineto closepath clip - currentpoint - newpath moveto - xSP dx sub ySP dy add x1 y1 ArrowA - xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB - curveto - /Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def -} def -% -/Grid { - newpath - /a 4 string def - /b ED % psk@gridlabels in pt - /c ED % { \pst@usecolor\psgridlabelcolor } - /n ED % psk@griddots - cvi dup 1 lt { pop 1 } if - /s ED % \psk@subgriddiv - s div dup 0 eq { pop 1 } if - /dy ED s div dup 0 eq { pop 1 } if % \pst@number\psyunit abs - /dx ED dy div round dy mul % \pst@number\psxunit abs - /y0 ED dx div round dx mul - /x0 ED dy div round cvi - /y2 ED dx div round cvi - /x2 ED dy div round cvi - /y1 ED dx div round cvi - /x1 ED - /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def - /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def - b 0 gt { - /z1 b 4 div CLW 2 div add def -% /Helvetica findfont b scalefont setfont - /b b .95 mul CLW 2 div add def } if - systemdict /setstrokeadjust known - { true setstrokeadjust /t { } def } - { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add - exch itransform } bind def } ifelse - gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse - /i x1 def - /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def - /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def - x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if - { i dx mul dup y0 moveto - b 0 gt - { gsave c i a cvs dup stringwidth pop - /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse - h 0 gt {b neg}{z1} ifelse - rmoveto show grestore } if - dup t f moveto - g t L stroke - /i i w add def - } repeat - grestore - gsave - n 0 gt - % DG/SR modification begin - Nov. 7, 1997 - Patch 1 - %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } - { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } - % DG/SR modification end - { 2 setlinecap } ifelse - /i y1 def - /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def - /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def - y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if - { newpath i dy mul dup x0 exch moveto - b 0 gt { gsave c i a cvs dup stringwidth pop - /z2 ED - w 0 gt {z1 z2 add neg} {z1} ifelse - h 0 gt {z1} {b neg} ifelse - rmoveto show grestore } if - dup f exch t moveto - g exch t L stroke - /i i h add def - } repeat - grestore -} def -% -/ArcArrow { - /d ED /b ED /a ED - gsave - newpath 0 -1000 moveto clip - newpath - 0 1 0 0 b - grestore - c mul - /e ED - pop pop pop r a e d PtoC y add exch x add - exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c - mul neg d -} def -% -/Ellipse { - /rotAngle ED - /mtrx CM def - T - rotAngle rotate - scale 0 0 1 5 3 roll arc - mtrx setmatrix -} def -% -/ArcAdjust { %%%% Vincent Guirardel -% given a target length (targetLength) and an initial angle (angle0) [in the stack], -% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). -% This computes an angle t such that (x0,y0) is at distance -% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). -% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 -% contrary to TvZ's code. -% To achieve, this, one iterates the following process: start with some angle t, -% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. -% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. -% -% Another difference with TvZ's code is that we need d (=add/sub) to be defined. -% the value of d = add/sub is used to know on which side we have to move. -% It is only used in the initialisation of the angle before the iteration. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Input stack: 1: target length 2: initial angle -% variables used : rx, ry, d (=add/sub) -% - /targetLength ED /angle0 ED - /x0 rx angle0 cos mul def - /y0 ry angle0 sin mul def -% we are looking for an angle t such that (x0,y0) is at distance targetLength -% from the point M(t)=(rx*cos(t),ry*sin(t))) -%initialisation of angle (using 1st order approx = TvZ's code) - targetLength 57.2958 mul - angle0 sin rx mul dup mul - angle0 cos ry mul dup mul - add sqrt div -% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees -% (if the ellipse is very curved at the point where we draw the arrow, % -% the value can be much more than 360 degrees !) -% this should avoid going on the wrong side (more than 180 degrees) or go near -% a bad attractive point (at 180 degrees) - dup 90 ge { pop 90 } if - angle0 exch d % add or sub -% maximum number of times to iterate the iterative procedure: -% iterative procedure: takes an angle t on top of stack, computes a -% better angle (and put it on top of stack) - 30 { dup -% compute distance D between (x0,y0) and M(t) - dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt -% if D almost equals targetLength, we stop - dup targetLength sub abs 1e-5 le { pop exit } if -% stack now contains D t -% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: -% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) - exch dup cos rx mul x0 sub exch sin ry mul y0 sub -% stack contains: y(t)-y0, x(t)-x0, d - 2 index Div targetLength mul y0 add ry Div exch - 2 index Div targetLength mul x0 add rx Div -% stack contains x(t')/rx , y(t')/ry , d -% now compute t', and remove D from stack - atan exch pop - } repeat -% we don't look at what happened... in particular, if targetLength is greater -% than the diameter of the ellipse... -% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... -% after iteration, stack contains an angle t such that M(t) is the tail of the arrow -% to give back the result as a an angle relative to angle0 we could add the following line: -% angle0 sub 0 exch d -% -% begin bug fix 2006-01-11 -% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180 -%(we don't want to make the ellipse turn more or less than it should)... -dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse -% end bug fix -} def -% -/EllipticArcArrow { - /d ED % is add or sub - /b ED % arrow procedure - /a1 ED % angle - gsave - newpath - 0 -1000 moveto - clip % Set clippath far from arrow. - newpath - 0 1 0 0 b % Draw arrow to determine length. - grestore -% Length of arrow is on top of stack. Next 3 numbers are junk. -% - a1 exch ArcAdjust % Angular position of base of arrow. - /a2 ED - pop pop pop - a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig - a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig - a1 cos rx mul xOrig add % - a1 sin ry mul yOrig add % -% Now arrow tip coor and base coor are on stack. - b pop pop pop pop % Draw arrow, and discard coordinates. - a2 CLW 8 div -% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) - 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse - ArcAdjust -% resets original value of d - 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. -} def -%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% -% -/Rot { CP CP translate 3 -1 roll neg rotate NET } def -% -/RotBegin { - tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if - /TMatrix [ TMatrix CM ] cvx def - /a ED - a Rot /RAngle [ RAngle dup a add ] cvx def -} def -% -/RotEnd { - /TMatrix [ TMatrix setmatrix ] cvx def - /RAngle [ RAngle pop ] cvx def -} def -% -/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def -/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def -/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def -% -/Uput { - /a ED - add 2 div /h ED 2 - div /w ED - /s a sin def - /c a cos def - /b s abs c abs 2 copy gt dup - /q ED - { pop } { exch pop } ifelse def - /w1 c b div w mul def - /h1 s b div h mul def - q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse -} def -% -/UUput { - /z ED - abs /y ED - /x ED - q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse - { x x mul y y mul sub z z mul add sqrt z add } - { q { x s div } { x c div } ifelse abs - } ifelse - a PtoC - h1 add exch - w1 add exch -} def -% -/BeginOL { - dup (all) eq exch TheOL eq or - { IfVisible not { Visible /IfVisible true def } if } - { IfVisible { Invisible /IfVisible false def } if } ifelse -} def -% -/InitOL { - /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def - /Visible { CP OLUnit idtransform T moveto } def - /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def - /BOL { BeginOL } def - /IfVisible true def -} def -% -%%%%%%%%%%%%%%%%% tools %%%%%%%%%%%%%%%%%%%%%%%%% -%%%%% ### bubblesort ### -%% syntax : array bubblesort --> array2 trie par ordre croissant -%% code de Bill Casselman -%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ -/bubblesort { -4 dict begin - /a exch def - /n a length 1 sub def - n 0 gt { - % at this point only the n+1 items in the bottom of a remain to - % the sorted largest item in that blocks is to be moved up into - % position n - n { - 0 1 n 1 sub { - /i exch def - a i get a i 1 add get gt { - % if a[i] > a[i+1] swap a[i] and a[i+1] - a i 1 add - a i get - a i a i 1 add get - % set new a[i] = old a[i+1] - put - % set new a[i+1] = old a[i] - put - } if - } for - /n n 1 sub def - } repeat - } if - a -end -} def -% -% -/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 - 0 1 index { length add } forall - string - 0 3 2 roll - { 3 copy putinterval length add }forall - pop -} bind def -% -/dot2comma {% on stack a string (...) - 2 dict begin - /Output exch def - 0 1 Output length 1 sub { - /Index exch def - Output Index get 46 eq { Output Index 44 put } if - } for - Output - end -} def -% -end -%-----------------------------------------------------------------------------% -% -% END pstricks.pro - -%%EndProcSet -%%BeginProcSet: pst-algparser.pro 0 0 -% $Id: pst-algparser.pro 594 2011-10-31 18:13:18Z herbert $ -%% -%% PostScript prologue for PSTricks algorithm parser -%% Version 0.04, 2011/10/21 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%%-----------------------------------------------------------------------------% -% -/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez -% -/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin -% -% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.13 -% -% 09/2011 DR factorial with ! added -% -% E->T|E+T -% T->FS|T*FS -% FS -> F | +FS | -FS -% F->P|F^SF|P! -% P->(E)|literal -% literal->number|var|var[E]|func(params) -% params->E|E,param -% number->TOBEFINISHED -% -%% E expression, T term, SF signed factor, F factor, P power -% -%% parser -% -%% str -% -%% C->EE -%% STR index -> STR index+lenExpr -/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def -% -%% analyze Expression List (separator , or | ) -%% STR index -> STR index+lenExpr -%% /AnalyzeListOfE { -%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar -%% NextNonBlankChar dup 0 eq { pop exit } if -%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if -%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop -%% AnalyzeListOfEPostHook -%% } def -/AnalyzeListOfE { - /NotFirst false def - { NextNonBlankChar pop AnalyzeExpr - NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse - dup Strlen eq { exit } if NextNonBlankChar - dup 44 ne 1 index 124 ne and - { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } - if pop 1 add } loop - AnalyzeListOfEPostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% E->T|E+T -%% STR index -> STR index+lenExpr -/AnalyzeExpr { - AnalyzePreHook AnalyzeTerm IsEndingExpr - { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } - { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop } - ifelse - AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% T->FS|T*FS -%% STR index -/AnalyzeTerm { - AnalyzePreHook AnalyzeSignedFactor IsEndingTerm - { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } - { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop } - ifelse - AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% FS -> F | +FS | -FS -%% STR index -/AnalyzeSignedFactor { - AnalyzePreHook 2 copy get dup IsUnaryOp - { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp } - { pop AnalyzeFactor } - ifelse AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% F->P|F^P|P! -%% STR index -/AnalyzeFactor { - AnalyzePreHook AnalyzePower IsEndingFactor - { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } - { { dup 33 eq%% is there a ! DR 09/2011 - { pop 1 add NextNonBlankChar pop EvalFactorial } - { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower } - ifelse - IsEndingFactor { pop exit } if } loop } - ifelse AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% P->(E)|literal -%% STR index -/AnalyzePower { - %% depending of first char either a number, or a literal - 2 copy get dup 40 eq%%an open par - { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop } - { AnalyzeLiteral } - ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index STR[index] -> STR index -%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def -/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% recognize + or - -%% chr -> T/F -/IsUnaryOp { dup 43 eq exch 45 eq or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a number can contain only : 0123456789. -%% chr -> T/F -/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index -> STR index number -%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? -%% STR index -> STR index' number -/ReadNumber { - exch dup 3 -1 roll dup 3 1 roll - %%read mantissa - { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop - dup 101 eq exch 69 eq or - %%% there is a "e" or "E" -> read exponant - { 1 add 2 copy get dup IsUnaryOp - { pop 1 add 2 copy get } if - { IsNumber not { exit } if 1 add 2 copy get } loop } - if - dup 4 1 roll - 3 -1 roll exch 1 index sub getinterval -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a number can contain only : 0123456789. -%% chr -> T/F -/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index -> STR index number -%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? -%% STR index -> STR index' number -/ReadCondOp { - NextNonBlankChar 1 index 4 1 roll - { IsCondOp not { exit } if 1 add 2 copy get } loop - 2 copy 5 -1 roll - exch 1 index sub getinterval 3 1 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a literal can contain only : 0123456789. -%% chr -> T/F -/IsLiteral {% - dup 48 ge exch dup 57 le 3 -1 roll and exch - dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch - dup 97 ge exch 122 le and or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)? -%% STR index -> literal STR index' nextchr -/ReadLiteral { - exch dup 3 -1 roll dup 3 1 roll - %%read literal core - { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop - 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or a clpar -%% STR index -> STR index STR[index] T/F -/IsEndingExpr {% - 2 copy dup Strlen eq - %% if end of str is reached -> end ! - { pop pop 0 true } - %% ending chr -> clpar, comma, |, <, >, =, !, - {get dup dup 41 eq - exch dup 124 eq - exch dup 93 eq - exch dup 44 eq - exch dup 30 eq - exch dup 60 ge exch 62 le and or or or or or} - ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or a +- -%% STR index -> STR index STR[index] T/F -/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or */ -%% STR index -> STR index STR[index] T/F -/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or ^ -%% STR index -> STR index STR[index] T/F -/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index -> STR index STR[index] -/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def -/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def -%%%%%%%%%%%%%%%%%%%%%%%% -%% DEBUG -/BRK {false} def -/BRKtrue {/BRK true def} def -/BRKStop {BRK {BRKtoto} if } def -/BRKEvalStop {BRK exch if } def -/BRKBRK2true {BRK {BRK2true} if } def -/BRK2 {false} def -/BRK2true {/BRK2 true def} def -/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def -end -% -%-------------------------------------------------------------------------------% -% -/tx@AlgToPs 12 dict def tx@AlgToPs begin -% -%% algExpr -> PSVector -/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def -/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def -/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def -/Strlen 0 def -/EvalListOfExpr {} def% -/EvalNumber {% - ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx - exch 1 add array astore def NextNonBlankChar pop } def -/EvalAddSub {% - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll - 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def -} def -/EvalMulDiv {% - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll - 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def -} def -/EvalPower {% - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll - pop /exp cvx exch 1 add array astore def -} def -/EvalFactorial {% DR 09/2011 - /ExpressionVector ExpressionVector aload length - /fact cvx exch 1 add array astore def -} def -/EvalLiteral {% - ReadLiteral - dup 40 eq%%% there is an open par -> function call - { pop 2 index - dup (Sum) eq { EvalSum } - { dup (IfTE) eq { EvalCond } - { dup (Derive) eq { pop EvalDerive } - { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx - exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } - { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def - dup 91 eq%%% there is an open bracket -> vector element - { pop 1 add NextNonBlankChar pop AnalyzeExpr - /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add } - { pop NextNonBlankChar pop } - ifelse} - ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% the derive function : Derive(n,f(x)) -%% firstparindex lastparindex -> -/EvalDerive { - %% manage the function descripiton - 1 add ReadNumber 3 1 roll NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - 1 add NextNonBlankChar pop - 3 -1 roll cvi - dup 0 eq - { pop AnalyzeExpr 3 -1 roll pop 1 add } - { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll - { (x) tx@Derive begin Derive end } repeat - ExpressionVector exch /ExpressionVector [] def - AlgToPs aload length - /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def - l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add - 1 index length /Strlen exch def } ifelse -} def -/EvalSum {% - pop 1 add NextNonBlankChar pop - %% read the variable name - ReadLiteral pop NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if - %% read the initial value - 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - %% read the increment value - 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - %% read the limit value - 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll - 5 -1 roll 4 add array astore def - %% keep ExpressionVector for later and create a new one for internal Sum computation - ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def - 1 add NextNonBlankChar pop AnalyzeExpr - %% add each term - /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def - /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add - array astore def 3 -1 roll pop 1 add -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Convert to radians if trigo function call -%% (name) -> -/TrigoFunc { - dup (cos) eq 1 index (sin) eq or exch (tan) eq or - { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add - array astore def - } if -} def -/EvalCond {% - pop 1 add AnalyzeCond NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if - ExpressionVector 3 1 roll /ExpressionVector [] def - 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def - NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if - 1 add AnalyzeExpr - NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if - ExpressionVector - /ExpressionVector 6 -1 roll aload length dup - 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def - 1 add 3 -1 roll pop -} def -%% CondOp STR index -/EvalCondOp {% - 3 -1 roll - dup (=) eq { /eq } {% - dup (<) eq { /lt } {% - dup (>) eq { /gt } {% - dup (>=) eq { /ge } {% - dup (<=) eq { /ge } {% - dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator } - ifelse } ifelse } ifelse } ifelse } ifelse } ifelse - cvx exch pop - /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def -/EvalUnaryOp { - 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% H O O K S -/AnalyzePreHook {} bind def -/PreEvalHook {} bind def -/AnalyzeListOfEPostHook {} bind def -/AnalyzePostHook {} def -/RollOp { 3 1 roll } bind def -end %tx@CoreAnalyzerDict -% -%--------------------------------------------------------------------% -% -/tx@Derive 41 dict def tx@Derive begin -%%increase ^^ for each function added -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% algExpr variable -> PSVector -/Derive {% - 10240 string 3 1 roll 0 3 1 roll - /Variable exch def - tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end -} def -/Strlen 0 def -/InitParser { dup length /Strlen exch def 0 } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% algExpr variable index -> PSVector -/DeriveIndexed {% - 3 1 roll 10240 string 3 1 roll 0 3 1 roll - /Variable exch def - tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u,v)'=-(u',v') -/EvalListOfExpr {% - 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe - 2 copy 7 -1 roll dup length 4 1 roll putinterval add - 6 -2 roll pop pop - 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (-u)'=-(u') -/EvalUnaryOp { - 4 -2 roll 4 index (0) eq - { (0) StrConcat 7 -1 roll pop } - { 7 -1 roll 45 eq - { AddSub AddOpPar true } { false } ifelse - 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (number)'=0 -/EvalNumber { ReadNumber (0) 6 2 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u+v)'=u'+v' -/EvalAddSub {% - 7 index dup (0) eq - { pop true }%% du=0 nothing added - { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false } - ifelse - 5 index dup (0) eq - { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0 - { exch - { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added - { 5 -2 roll 7 index 43 eq%%something yet added - { AddAdd false } { AddSub AddOpPar true } ifelse } - ifelse 11 1 roll - 3 -1 roll StrConcat 10 -1 roll { AddClPar } if - 2 copy pop 0 6 2 roll GetIntervalNewStr } - ifelse - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u*v)' or (u/v)' -/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u*v)'=u'*v+u*v' -/EvalMul {% - 4 -2 roll 7 index dup (0) eq - { pop false }%%du=0 - { (1) eq%%du=1 - { false } - { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse - 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if - true }%%du!=0 - ifelse - 5 1 roll 5 index (0) eq - { 5 -1 roll not { (0) StrConcat } if }%%dv=0 - { 5 -1 roll { AddAdd } if - 4 index (1) eq - { 8 index StrConcat } - { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } - ifelse - }%%dv!=0 - ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u/v)'=(u'*v-u*v')/v^2 -/EvalDiv {% - 4 -2 roll - 4 index (0) eq%%dv=0 -> u'/v - { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse } - { 7 index dup (0) eq - { pop }%%du=0 - { (1) eq%%du=1 - { false } - { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse - 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0 - ifelse - AddSub - 4 index (1) eq - { 8 index StrConcat } - { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } - ifelse - %}%%dv!=0 - 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar - AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add } - ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% str1 index str2 -> str1 index -/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def -/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u) -/EvalPower {% - 4 -2 roll 7 index (0) eq - {%%if du=0 then (u^v)'=v'ln(u)u^v - 4 index (0) eq - { (0) StrConcat }%%if dv=0 then (u^v)'=0 - { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if - 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if - AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse - } - {%%du!=0 - 4 index (0) eq - {%%if dv=0 then (u^v)'=vu'u^(v-1) - 5 index dup IsStrNumber - { dup (0) eq - { StrConcat } - { dup dup (1) eq exch (1.0) eq or - { StrConcat } - { StrConcat - 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 - { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 - (*\() StrConcat 8 index StrConcat (\)) StrConcat - 5 index dup dup (2) eq exch (2.0) eq or - { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } - { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat - 5 index StrConcat (-1\)) StrConcat } ifelse - } - {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u) - 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if - AddOpPar 5 index StrConcat (\)*\() StrConcat - 8 index StrConcat (\)^\() StrConcat - 5 index StrConcat (-1\)+\() StrConcat - 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if - 8 index StrConcat (\)^\() StrConcat - 5 index StrConcat (\)*ln\() StrConcat - 8 index StrConcat AddClPar - } ifelse - } ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% No derivative for factorial ! only cst => null derivative -/EvalFactorial {% DR 09/2011 - 4 index (0) eq - { (0) mark 8 -2 roll cleartomark 2 index 7 index dup 4 index exch sub getinterval exch 6 2 roll } - { DERIVATIVE_ENGINE_ERROR_no_variable_in_factorial } ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% str -> true/false -/IsStrNumber {% - true exch - { dup 48 lt exch dup 57 gt 3 -1 roll or - exch dup 46 ne%%. - exch dup 43 ne%%+ - exch 45 ne%%- - and and and { pop false } if } forall -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% literal switch -> func call, vector, variables -/EvalLiteral {% - ReadLiteral dup 40 eq%%% there is an open par -> function call - { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec } - { dup 91 eq%%% there is an open bracket -> vector element - { DERIVATIVE_ENGINE_ERROR_vector_not_yet_implemented } - { pop EvalVariable } - ifelse } - ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% first last parpos Expr[first:parpos-1] -> -/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (f(u))'=u'f'(u) -/EvalFunc { - 4 2 roll 4 index (1) ne - { AddOpPar 4 index StrConcat (\)*) StrConcat } if - (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Func derivative -> Eval -/EvalFunc_sin {% - PreCommonFunc - { (cos\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_cos {% - PreCommonFunc - { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_tan {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if - PostCommonFunc } def -/EvalFunc_asin {% - PreCommonFunc - { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_acos {% - PreCommonFunc - { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_atg {% - PreCommonFunc - { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_ln {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_exp {% - PreCommonFunc - { (exp\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_EXP {% - PreCommonFunc - { (EXP\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_sqrt {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_Fact {% - PreCommonFunc { DERIVATIVE_ENGINE_ERROR_no_variable_expression_in_Fact } if - PostCommonFunc } def -/EvalFunc_sh {% - PreCommonFunc - { (ch\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_ch {% - PreCommonFunc - { (sh\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_th {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if - PostCommonFunc } def -/EvalFunc_Argsh {% - PreCommonFunc - { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_Argch {% - PreCommonFunc - { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_Argth {% - PreCommonFunc - { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -/PreCommonFunc { - 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop - 4 2 roll 4 index (0) eq - { (0) StrConcat false } - { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse -} def -/PostCommonFunc { - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -/EvalFunc_Derive {% - 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs - 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add - 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar - 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval - exch 6 2 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% literal switch -> func call, vector, variables -/EvalFunc_Sum {% - 1 add NextNonBlankChar pop - %% read the variable name - ReadLiteral pop 3 -1 roll pop NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if - %% read the initial value - 1 add NextNonBlankChar pop ReadNumber pop - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - %% read the increment value - 1 add NextNonBlankChar pop ReadNumber pop - 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if - %% read the limit value - 1 add NextNonBlankChar pop ReadNumber pop - 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if - 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop - 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat - 4 index StrConcat AddClPar - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% literal switch -> func call, vector, variables -/EvalFunc_IfTE {% - 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond - NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if - 1 add NextNonBlankChar pop dup 5 1 roll - AnalyzeExpr NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if - 1 add NextNonBlankChar pop - AnalyzeExpr 1 add NextNonBlankChar pop - 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat - 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% advance in str until a comma is found (no error detection!) -%% str index -> str index' -/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Convert to radians if trigo function call -%% (name) -> -/TrigoFunc { - dup (cos) eq 1 index (sin) eq or exch (tan) eq or - { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add - array astore def - } if -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% No derivative for condition.... -/EvalCondOp { 3 -1 roll pop } bind def -/PutIntervalOneAdd {putinterval 1 add} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add open parenthesis in string at the given index -%% str index -> str index+1 -/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add close parenthesis in string at the given index -%% str index -> str index+1 -/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add 0 in string at the given index -%% str index -> str index+1 -/AddZero {2 copy (0) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add open parenthesis in string at the given index -%% str index -> str index+1 -/AddMul {2 copy (*) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add open parenthesis in string at the given index -%% str index -> str index+1 -/AddDiv {2 copy (/) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add a plus sign in string at the given index -%% str index -> str index+1 -/AddAdd {2 copy (+) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add a minus sign in string at the given index -%% str index -> str index+1 -/AddSub {2 copy (-) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add a pipe sign in string at the given index -%% str index -> str index+1 -/AddPipe {2 copy (|) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% H O O K S -/AnalyzePreHook { dup 5 1 roll } bind def -/PreEvalHook {} def -/AnalyzePostHook { 7 -1 roll pop } bind def -/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def -/RollOp { 5 1 roll } bind def -end%%%tx@CoreAnalyzerDict -/tx@AddMathFunc 12 dict def tx@AddMathFunc begin -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% NEW FUNC -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2)) -%% x -> theta -/asin {% - dup abs 1 gt { EQDFasinrangeerror } if - dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad -} def -%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) -%% x -> theta -/acos {% - dup abs 1 gt { EQDFacosrangeerror } if - dup dup mul 1 exch sub sqrt exch atan DegtoRad -} def -%% function arctangent in radians -%% x -> theta -/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def -%% HYPERBOLIC FUNCTIONS -/sh { dup Ex exch neg Ex sub 2 div } def -/ch { dup Ex exch neg Ex add 2 div } def -/th { dup sh exch ch div } def -/Argsh { dup dup mul 1 add sqrt add ln } def -/Argch { dup dup mul 1 sub sqrt add ln } def -/Argth { dup 1 add exch 1 exch sub div ln 2 div } def -%% modified exponential funtion for 0 -%% x n -> x^n -/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def -%% modified exponential funtion for 0 -%% x -> e^x -/Ex { Euler exch exp } bind def -%% -%% factorial function -%% n -> n! -/Fact { 1 exch 2 exch 1 exch { mul } for } bind def -/fact { Fact } bind def -/! { Fact } bind def -end -% -% END pst-algparser.pro - -%%EndProcSet -%%BeginProcSet: pst-tools.pro 0 0 -% $Id: pst-tools.pro 622 2012-01-01 15:36:14Z herbert $ -% -%% PostScript tools prologue for pstricks.tex. -%% Version 0.02, 2012/01/01 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -% -% -/Pi2 1.57079632679489661925640 def -/factorial { % n on stack, returns n! - dup 0 eq { 1 }{ - dup 1 gt { dup 1 sub factorial mul } if } - ifelse } def -% -/MoverN { % m n on stack, returns the binomial coefficient m over n - 2 dict begin - /n exch def /m exch def - n 0 eq { 1 }{ - m n eq { 1 }{ - m factorial n factorial m n sub factorial mul div } ifelse } ifelse - end -} def -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% subroutines for complex numbers, given as an array [a b] -% which is a+bi = Real+i Imag -% -/cxadd { % [a1 b1] [a2 b2] = [a1+a2 b1+b2] - dup 0 get % [a1 b1] [a2 b2] a2 - 3 -1 roll % [a2 b2] a2 [a1 b1] - dup 0 get % [a2 b2] a2 [a1 b1] a1 - 3 -1 roll % [a2 b2] [a1 b1] a1 a2 - add % [a2 b2] [a1 b1] a1+a2 - 3 1 roll % a1+a2 [a2 b2] [a1 b1] - 1 get % a1+a2 [a2 b2] b1 - exch 1 get % a1+a2 b1 b2 - add 2 array astore -} def -% -/cxneg { % [a b] - dup 1 get % [a b] b - exch 0 get % b a - neg exch neg % -a -b - 2 array astore -} def -% -/cxsub { cxneg cxadd } def % same as negative addition -% -% [a1 b1][a2 b2] = [a1a2-b1b2 a1b2+b1a2] = [a3 b3] -/cxmul { % [a1 b1] [a2 b2] - dup 0 get % [a1 b1] [a2 b2] a2 - exch 1 get % [a1 b1] a2 b2 - 3 -1 roll % a2 b2 [a1 b1] - dup 0 get % a2 b2 [a1 b1] a1 - exch 1 get % a2 b2 a1 b1 - dup % a2 b2 a1 b1 b1 - 5 -1 roll dup % b2 a1 b1 b1 a2 a2 - 3 1 roll mul % b2 a1 b1 a2 b1a2 - 5 -2 roll dup % b1 a2 b1a2 b2 a1 a1 - 3 -1 roll dup % b1 a2 b1a2 a1 a1 b2 b2 - 3 1 roll mul % b1 a2 b1a2 a1 b2 a1b2 - 4 -1 roll add % b1 a2 a1 b2 b3 - 4 2 roll mul % b1 b2 b3 a1a2 - 4 2 roll mul sub % b3 a3 - exch 2 array astore -} def -% -% [a b]^2 = [a^2-b^2 2ab] = [a2 b2] -/cxsqr { % [a b] square root - dup 0 get exch 1 get % a b - dup dup mul % a b b^2 - 3 -1 roll % b b^2 a - dup dup mul % b b^2 a a^2 - 3 -1 roll sub % b a a2 - 3 1 roll mul 2 mul % a2 b2 - 2 array astore -} def -% -/cxsqrt { % [a b] -% dup cxnorm sqrt /r exch def -% cxarg 2 div RadtoDeg dup cos r mul exch sin r mul cxmake2 - cxlog % log[a b] - 2 cxrdiv % log[a b]/2 - aload pop exch % b a - 2.781 exch exp % b exp(a) - exch cxconv exch % [Re +iIm] exp(a) - cxrmul % -} def -% -/cxarg { % [a b] - aload pop % a b - exch atan % arctan b/a - DegtoRad % arg(z)=atan(b/a) -} def -% -% log[a b] = [a^2-b^2 2ab] = [a2 b2] -/cxlog { % [a b] - dup % [a b][a b] - cxnorm % [a b] |z| - log % [a b] log|z| - exch % log|z|[a b] - cxarg % log|z| Theta - cxmake2 % [log|z| Theta] -} def -% -% square of magnitude of complex number -/cxnorm2 { % [a b] - dup 0 get exch 1 get % a b - dup mul % a b^2 - exch dup mul add % a^2+b^2 -} def -% -/cxnorm { % [a b] - cxnorm2 sqrt -} def -% -/cxconj { % conjugent complex - dup 0 get exch 1 get % a b - neg 2 array astore % [a -b] -} def -% -/cxre { 0 get } def % real value -/cxim { 1 get } def % imag value -% -% 1/[a b] = ([a -b]/(a^2+b^2) -/cxrecip { % [a b] - dup cxnorm2 exch % n2 [a b] - dup 0 get exch 1 get % n2 a b - 3 -1 roll % a b n2 - dup % a b n2 n2 - 4 -1 roll exch div % b n2 a/n2 - 3 1 roll div % a/n2 b/n2 - neg 2 array astore -} def -% -/cxmake1 { 0 2 array astore } def % make a complex number, real given -/cxmake2 { 2 array astore } def % dito, both given -% -/cxdiv { cxrecip cxmul } def -% -% multiplikation by a real number -/cxrmul { % [a b] r - exch aload pop % r a b - 3 -1 roll dup % a b r r - 3 1 roll mul % a r b*r - 3 1 roll mul % b*r a*r - exch 2 array astore % [a*r b*r] -} def -% -% division by a real number -/cxrdiv { % [a b] r - 1 exch div % [a b] 1/r - cxrmul -} def -% -% exp(i theta) = cos(theta)+i sin(theta) polar<->cartesian -/cxconv { % theta - RadtoDeg dup sin exch cos cxmake2 -} def - -%%%%% ### bubblesort ### -%% syntax : array bubblesort --> array2 trie par ordre croissant -%% code de Bill Casselman -%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ -/bubblesort { % on stack must be an array [ ... ] -4 dict begin - /a exch def - /n a length 1 sub def - n 0 gt { - % at this point only the n+1 items in the bottom of a remain to - % the sorted largest item in that blocks is to be moved up into - % position n - n { - 0 1 n 1 sub { - /i exch def - a i get a i 1 add get gt { - % if a[i] > a[i+1] swap a[i] and a[i+1] - a i 1 add - a i get - a i a i 1 add get - % set new a[i] = old a[i+1] - put - % set new a[i+1] = old a[i] - put - } if - } for - /n n 1 sub def - } repeat - } if - a % return the sorted array -end -} def -% -/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 - 0 1 index { length add } forall - string - 0 3 2 roll - { 3 copy putinterval length add }forall - pop -} bind def -% -/dot2comma {% on stack a string (...) - 2 dict begin - /Output exch def - 0 1 Output length 1 sub { - /Index exch def - Output Index get 46 eq { Output Index 44 put } if - } for - Output - end -} def -% -%-----------------------------------------------------------------------------% -% END pst-tools.pro - -%%EndProcSet -%%BeginProcSet: pst-dots.pro 0 0 -% $Id: pst-dots.pro 130 2009-08-27 08:55:03Z herbert $ -% -%% PostScript prologue for pstricks.tex. -%% Version 2.02, 2009/06/16 -%% -%% For distribution, see pstricks.tex. -%% -%% Timothy Van Zandt -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%% Modified by Etienne Riga - Dec. 16, 1999 -%% Modified by Etienne Riga - 2005/01/01 (er) -%% to add /Diamond, /SolidDiamond and /BoldDiamond -%% Modified by Herbert Voss (hv) - 2008/04/17 -% -10 dict dup begin % hold local - /FontType 3 def - /FontMatrix [.001 0 0 .001 0 0] def -% /FontBBox [-571.5 -742.5 571.5 742.5] def % changed to next line 20060616 hv - /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph - /Encoding 256 array def - 0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef - Encoding % replace with given dot names - dup (b) 0 get /Bullet put % get the numerical position of b in ASCII -% % and save /Bullet at this place in Encoding - dup (c) 0 get /Circle put - dup (C) 0 get /BoldCircle put % 67 - dup (u) 0 get /SolidTriangle put - dup (t) 0 get /Triangle put - dup (T) 0 get /BoldTriangle put - dup (r) 0 get /SolidSquare put - dup (s) 0 get /Square put - dup (S) 0 get /BoldSquare put - dup (q) 0 get /SolidPentagon put - dup (p) 0 get /Pentagon put - dup (P) 0 get /BoldPentagon put -%%% - dup (k) 0 get /Asterisk put - dup (K) 0 get /BoldAsterisk put - dup (J) 0 get /SolidAsterisk put - dup (h) 0 get /Hexagon put - dup (H) 0 get /BoldHexagon put - dup (G) 0 get /SolidHexagon put - dup (f) 0 get /Octogon put % 2008-04-18 hv - dup (F) 0 get /BoldOctogon put % 2008-04-18 hv - dup (g) 0 get /SolidOctogon put % 2008-04-18 hv - dup (a) 0 get /Add put - dup (A) 0 get /BoldAdd put % 65 - dup (x) 0 get /Mul put - dup (X) 0 get /BoldMul put - dup (m) 0 get /Oplus put - dup (M) 0 get /BOplus put - dup (e) 0 get /SolidOplus put - dup (n) 0 get /Otimes put - dup (N) 0 get /BOtimes put - dup (E) 0 get /SolidOtimes put - dup (i) 0 get /Bar put - dup (I) 0 get /BoldBar put - dup (l) 0 get /SolidDiamond put - dup (d) 0 get /Diamond put - (D) 0 get /BoldDiamond put -%%% -/CharProcs 47 dict def -CharProcs begin - /CirclePath {0 0 500 0 360 arc closepath} def - /Bullet {CirclePath fill} def - /Circle {CirclePath .9 .9 scale CirclePath eofill} def - /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def - /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def - /SolidTriangle {TrianglePath fill} def - /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def - /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def - /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def - /SolidSquare {SquarePath fill} def - /Square {SquarePath .89 .89 scale SquarePath eofill} def - /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def - /PentagonPath { - -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto - 0 574.7 lineto -546.6 177.6 lineto closepath - } def - /SolidPentagon {PentagonPath fill} def - /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def - /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def -%-------------- hv begin 2004/07/25 from: er 2003/03/24 - /HexagonPath { - 0 550 moveto -476 275 lineto -476 -275 lineto - 0 -550 lineto 476 -275 lineto 476 275 lineto closepath - } def - /SolidHexagon {HexagonPath fill} def - /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def - /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def -% 2008-04-18 hv - /OctogonPath { - 550 dup 22.5 tan mul dup neg dup add /xMove exch def - exch moveto 7 { xMove 0 rlineto 45 rotate } repeat closepath } def - /SolidOctogon { OctogonPath fill } def - /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def - /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def -% - /AsteriskPath { - 20 0 moveto 10 250 180 500 0 500 curveto - -180 500 -10 250 -20 0 curveto closepath - } def - /Asterisk { - AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath - 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill - } def -% - /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def - /BoldAsteriskPath { - 50 30 cos 100 mul moveto Basterp - 60 rotate Basterp 60 rotate Basterp - 60 rotate Basterp 60 rotate Basterp - 60 rotate Basterp closepath - } def - /BoldAsterisk {BoldAsteriskPath fill} def - /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def - /CrossPath { - 40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto - -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto - 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath - } def - /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto - -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto - 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath - } def - /Add {CrossPath fill} def - /Mul {45 rotate CrossPath fill} def - /BoldAdd {BoldCrossPath fill} def - /BoldMul {45 rotate BoldCrossPath fill} def - /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def - /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def - /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def - /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def - /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def - /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def - /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def - /Bar {BarPath fill} def - /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def - /BoldBar {BoldBarPath fill} def - /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def - /SolidDiamond {DiamondPath fill} def - /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def - /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def -%%% - /.notdef { } def -end -% -/BuildGlyph { - exch - begin -% Metrics 1 index get exec 0 - 0 0 -% BBoxes 3 index get exec - -1000 -1000 1000 1000 -% -571.5 -742.5 571.5 742.5 - setcachedevice - CharProcs begin load exec end - end -} def -% -/BuildChar { - 1 index /Encoding get exch get - 1 index /BuildGlyph get exec -} bind def -% -end -/PSTricksDotFont exch definefont pop -% -%% end - -%%EndProcSet -%%BeginProcSet: pst-node.pro 0 0 -% $Id: pst-node.pro 645 2012-02-12 09:09:51Z herbert $ -%% -%% PostScript prologue for pst-node.tex. -%% Version 1.13, 2011/11/21. -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -% -/tx@NodeDict 400 dict def tx@NodeDict begin -tx@Dict begin % from main pstricks dict - /T /translate load def - /CP /currentpoint load def -end -/NewNode { % on stack: { x y } boolean N@name type InitXnode - gsave - NodeScale % a bugfix for xelatex, it's empty for dvips - /next exch def % { x y } boolean N@name type - dict dup % { x y } boolean N@name dict dict - 3 1 roll def % { x y } boolean dict N@name dict def - exch { dup 3 1 roll def } if % { x y } dict boolean - begin % { x y } dict begin - tx@Dict begin - STV CP T exec % set scaling - end - /NodeMtrx CM def % save CM - next % InitXNode - end - grestore -} def -% -/InitPnode { - /Y ED /X ED - /NodePos { NodeSep Cos mul NodeSep Sin mul } def -} def -% -/InitCnode { - /r ED /Y ED /X ED - /NodePos { NodeSep r add dup Cos mul exch Sin mul } def -} def -% -/GetRnodePos { - Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse - Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse - dx Sin mul abs dy - Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse -} def -% -/InitRnode { - /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED - /NodePos { GetRnodePos } def -} def -% -/DiaNodePos { - w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup - Cos mul exch Sin mul -} def -% -/TriNodePos { - Sin s lt - { d NodeSep sub dup Cos mul Sin Div exch } - { w h mul w Sin mul h Cos abs mul add Div - NodeSep add dup Cos mul exch Sin mul - } ifelse -} def -% -/InitTriNode { - sub 2 div exch - 2 div exch - 2 copy T - 2 copy 4 index index /d ED - pop pop pop pop - -90 mul rotate - /NodeMtrx CM def - /X 0 def /Y 0 def - d sub abs neg /d ED - d add /h ED - 2 div h mul h d sub Div /w ED - /s d w Atan sin def - /NodePos { TriNodePos } def -} def -% -/OvalNodePos { - /ww w NodeSep add def - /hh h NodeSep add def - Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul -} def -% -/GetCenter { begin X Y NodeMtrx transform CM itransform end } def -% -/XYPos { - dup sin exch cos Do - /Cos ED /Sin ED /Dist ED - Cos 0 gt - { Dist Dist Sin mul Cos div } - { Cos 0 lt - { Dist neg Dist Sin mul Cos div neg } - { 0 Dist Sin mul } ifelse - } ifelse - Do -} def -% -/GetEdge { - dup 0 eq - { pop begin 1 0 NodeMtrx dtransform - CM idtransform - exch atan sub - dup - sin /Sin ED - cos /Cos ED - /NodeSep ED - NodePos NodeMtrx dtransform CM idtransform end } - { 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse -} def -% -/AddOffset { - 1 index 0 eq - { pop pop } - { 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse -} def -% -/GetEdgeA { - NodeSepA AngleA NodeA NodeSepTypeA GetEdge - OffsetA AngleA AddOffset - yA add /yA1 ED - xA add /xA1 ED -} def -% -/GetEdgeB { - NodeSepB AngleB NodeB NodeSepTypeB GetEdge - OffsetB AngleB AddOffset - yB add /yB1 ED - xB add /xB1 ED -} def -% -/GetArmA { - ArmTypeA 0 eq - { /xA2 ArmA AngleA cos mul xA1 add def - /yA2 ArmA AngleA sin mul yA1 add def } - { ArmTypeA 1 eq {{exch}} {{}} ifelse - /Do ED - ArmA AngleA XYPos OffsetA AngleA AddOffset - yA add /yA2 ED - xA add /xA2 ED } ifelse -} def -% -/GetArmB { - ArmTypeB 0 eq - { /xB2 ArmB AngleB cos mul xB1 add def - /yB2 ArmB AngleB sin mul yB1 add def } - { ArmTypeB 1 eq {{exch}} {{}} ifelse - /Do ED - ArmB AngleB XYPos OffsetB AngleB AddOffset - yB add /yB2 ED - xB add /xB2 ED } ifelse -} def -% -/InitNC { - /b ED /a ED % second and first node - /NodeSepTypeB ED /NodeSepTypeA ED - /NodeSepB ED /NodeSepA ED - /OffsetB ED /OffsetA ED - tx@NodeDict a known tx@NodeDict b known and dup { - /NodeA a load def - /NodeB b load def - NodeA GetCenter /yA ED /xA ED - NodeB GetCenter /yB ED /xB ED } if -} def -% -/LPutLine { - 4 copy - 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED - 1 t sub mul - 3 1 roll 1 t sub mul - 4 1 roll t mul add /Y ED - t mul add /X ED -} def -% -/LPutLines { - mark LPutVar counttomark 2 div 1 sub /n ED -% t floor dup n gt - t floor dup n ge % to allow npos<= hv 2008-08-14 - { pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse - cvi 2 mul { pop } repeat - LPutLine - cleartomark -} def -% -/BezierMidpoint { - /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED /t ED - /cx x1 x0 sub 3 mul def - /cy y1 y0 sub 3 mul def - /bx x2 x1 sub 3 mul cx sub def - /by y2 y1 sub 3 mul cy sub def - /ax x3 x0 sub cx sub bx sub def - /ay y3 y0 sub cy sub by sub def - ax t 3 exp mul bx t t mul mul add - cx t mul add x0 add ay t 3 exp mul - by t t mul mul add cy t mul add - y0 add 3 ay t t mul mul mul 2 - by t mul mul add cy add 3 ax t t mul mul mul - 2 bx t mul mul add cx add atan /NAngle ED - /Y ED /X ED -} def -% -/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def -} def -/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def -/NAngle yyB yyA sub xxB xxA sub Atan def } def -/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def -/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def -} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit -} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd -} def -/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def -} def -/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def -/NAngle yyB yyA sub xxB xxA sub Atan def } def -/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def -/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def -} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { -exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark -VPosEnd } def -/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 -roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx -def grestore exec /LPutVar /SaveLPutVar load def } def -/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def -GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { -LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { -LPutVar VPutLine } def LPutVar } def -% -/NCLine { - NCCoor - tx@Dict begin - ArrowA CP 4 2 roll - ArrowB - lineto pop pop - end -} def -% -/NCLines { - false NArray - n 0 eq - { NCLine } - { 2 copy yA sub exch xA sub Atan /AngleA ED - n 2 mul dup index exch index yB sub exch xB sub - Atan /AngleB ED - GetEdgeA GetEdgeB - /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 yA1 ] cvx def - mark LPutVar - tx@Dict begin false Line end - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def - } ifelse -} def -% -/NCCurve { - GetEdgeA - GetEdgeB - xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 -roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA -GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict -begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] -cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines -} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def -% -/NCAngles { - GetEdgeA GetEdgeB GetArmA GetArmB - /mtrx AngleA matrix rotate def - xA2 yA2 mtrx transform pop - xB2 yB2 mtrx transform exch pop - mtrx itransform - /y0 ED /x0 ED - mark ArmB 0 ne { xB1 yB1 } if - xB2 yB2 x0 y0 xA2 yA2 - ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def } def -% -/NCAngle { - GetEdgeA GetEdgeB GetArmB - /mtrx AngleA matrix rotate def - xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform - /y0 ED /x0 ED - mark - ArmB 0 ne { xB1 yB1 } if - xB2 yB2 x0 y0 xA1 yA1 - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -} def -% -/NCBar { - GetEdgeA GetEdgeB GetArmA GetArmB - /mtrx AngleA matrix rotate def - xA2 yA2 mtrx itransform pop - xB2 yB2 mtrx itransform pop - sub dup 0 mtrx transform - 3 -1 roll 0 gt - { /yB2 exch yB2 add def /xB2 exch xB2 add def } - { /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse - mark - ArmB 0 ne { xB1 yB1 } if - xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -} def -% -/NCDiag { - /lineAngle ED - GetEdgeA GetEdgeB GetArmA GetArmB mark - lineAngle abs 0 gt { - /xTemp xA2 10 add def - /yTemp yA2 lineAngle dup sin exch cos div 10 mul add def - /dY1 yTemp yA2 sub def - /dX1 xTemp xA2 sub def - /dY2 yB2 yB1 sub def - /dX2 xB2 xB1 sub def - dX1 abs 0.01 lt { - /m2 dY2 dX2 div def - /xB2 xA2 def - /yB2 xA2 xB1 sub m2 mul yB1 add def - }{ - dX2 abs 0.01 lt { - /m1 dY1 dX1 div def - /xB2 xB1 def - /yB2 xB1 xA2 sub m1 mul yA2 add def - }{% - /m1 dY1 dX1 div def - /m2 dY2 dX2 div def - /xB2 m1 xA2 mul m2 xB1 mul sub yA2 sub yB1 add m1 m2 sub div def - /yB2 xB2 xA2 sub m1 mul yA2 add def - } ifelse - } ifelse - } if - ArmB 0 ne { xB1 yB1 } if - xB2 yB2 xA2 yA2 - ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -% -% GetEdgeA GetEdgeB GetArmA GetArmB mark -% ArmB 0 ne { xB1 yB1 } if -% xB2 yB2 xA2 yA2 -% ArmA 0 ne { xA1 yA1 } if -% tx@Dict begin false Line end -% /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def -% /LPutPos { LPutLines } def -% /HPutPos { HPutLines } def -% /VPutPos { VPutLines } def -} def -% -/NCDiagg { - /lineAngle ED - GetEdgeA GetArmA - lineAngle abs 0 gt - { lineAngle } - { yB yA2 sub xB xA2 sub Atan 180 add } ifelse - /AngleB ED - GetEdgeB mark - lineAngle abs 0 gt { - /dY2 yA2 yA1 sub def - /dX2 xA2 xA1 sub def - lineAngle abs 90 eq { - /m2 dY2 dX2 div def - /yA2 xB xA2 sub m2 mul yA2 add def - /xA2 xB def - }{ - /m1 lineAngle dup sin exch cos div def % tan alpha - dX2 abs 0.01 lt { - /yA2 xA1 xB sub m1 mul yB add def - /xA2 xA1 def - }{% - /m2 dY2 dX2 div def - /xA2 m1 xB mul m2 xA2 mul sub yA2 add yB sub m1 m2 sub div def - /yA2 xA2 xB sub m1 mul yB add def - } ifelse - } ifelse - } if - xB1 yB1 xA2 yA2 - ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -% -% GetEdgeA GetArmA -% yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED -% GetEdgeB -% mark -% xB1 yB1 xA2 yA2 -% ArmA 0 ne { xA1 yA1 } if -% tx@Dict begin false Line end -% /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def -% /LPutPos { LPutLines } def -% /HPutPos { HPutLines } def -% /VPutPos { VPutLines } def -} def -% -/NCLoop { - GetEdgeA GetEdgeB GetArmA GetArmB - /mtrx AngleA matrix rotate def - xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED - /xB3 xB2 yB2 mtrx transform pop def - xB3 yA3 mtrx itransform /yB3 ED /xB3 ED - xA3 yA3 mtrx itransform /yA3 ED /xA3 ED - mark ArmB 0 ne { xB1 yB1 } if - xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -} def -% -% DG/SR modification begin - May 9, 1997 - Patch 1 -%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r -%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add -%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 -%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED -% -/NCCircle { - NodeSepA 0 NodeA 0 GetEdge pop - 2 div dup 2 exp r r mul sub abs sqrt - atan 2 mul /a ED - r AngleA 90 add PtoC yA add exch xA add - exch 2 copy - /LPutVar [ 4 2 roll r AngleA ] cvx def - /LPutPos { - LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC - 3 -1 roll add - /Y ED add /X ED /NAngle ED -% DG/SR modification end - } def - /HPutPos { LPutPos } def - /VPutPos { LPutPos } def - r AngleA 90 sub a add AngleA 270 add a sub - tx@Dict begin - /angleB ED /angleA ED /r ED - /c 57.2957 r Div def - /y ED /x ED -} def -% -/NCBox { - /d ED /h ED - /AngleB yB yA sub xB xA sub Atan def - /AngleA AngleB 180 add def - GetEdgeA GetEdgeB - /dx d AngleB sin mul def - /dy d AngleB cos mul neg def - /hx h AngleB sin mul neg def - /hy h AngleB cos mul def - /LPutVar [ - xA1 hx add yA1 hy add xB1 hx add yB1 hy add - xB1 dx add yB1 dy add xA1 dx add yA1 dy add ] cvx def - /LPutPos { LPutLines } def - /HPutPos { xB yB xA yA LPutLine } def - /VPutPos { HPutPos } def - mark - LPutVar tx@Dict begin false Polygon end -} def -% -/NCArcBox { - /l ED neg /d ED /h ED /a ED - /AngleA yB yA sub xB xA sub Atan def - /AngleB AngleA 180 add def - /tA AngleA a sub 90 add def - /tB tA a 2 mul add def - /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def - /x0 xA r tA cos mul add def - /y0 yA r tA sin mul add def - /c 57.2958 r div def - /AngleA AngleA a sub 180 add def - /AngleB AngleB a add 180 add def - GetEdgeA GetEdgeB - /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul sub def - /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def - l 0 eq { - x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn - }{ - x0 y0 translate - /tA AngleA l c mul add def - /tB AngleB l c mul sub def - 0 0 r h add tA tB arc r h add - AngleB PtoC r d add - AngleB PtoC 2 copy - 6 2 roll l arcto 4 { pop } repeat - r d add tB PtoC l arcto 4 { pop } repeat - 0 0 r d add tB tA arcn r d add - AngleA PtoC r h add - AngleA PtoC 2 copy 6 2 roll - l arcto 4 { pop } repeat - r h add tA PtoC l arcto 4 { pop } repeat - } ifelse - closepath - /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def - /LPutPos { - LPutVar /d ED /h ED - /AngleB ED /AngleA ED - /r ED /y0 ED /x0 ED - t 1 le { - r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC - }{t 2 lt { - /NAngle AngleB 180 add def r 2 t sub - h mul t 1 sub d mul add add AngleB PtoC - }{ - t 3 lt { - r d add AngleB 3 t sub mul AngleA 2 t sub - mul add dup 90 sub /NAngle ED PtoC - }{ - /NAngle AngleA 180 add def - r 4 t sub d mul t 3 sub h mul add add AngleA PtoC - } ifelse - } ifelse - } ifelse - y0 add /Y ED x0 add /X ED - } def - /HPutPos { LPutPos } def - /VPutPos { LPutPos } def -} def -% -/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB -sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 -ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB -w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos -{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } -{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } -def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin -/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def -% -/LPutCoor { - NAngle - tx@Dict begin /NAngle ED end - gsave - CM STV - CP Y sub neg exch X sub neg exch moveto - setmatrix CP - grestore -} def -% -/LPut { - tx@NodeDict /LPutPos known - { LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse - LPutCoor -} def -% -/HPutAdjust { - Sin Cos mul 0 eq - { 0 } - { d Cos mul Sin div flag not { neg } if - h Cos mul Sin div flag { neg } if - 2 copy gt { pop } { exch pop } ifelse - } ifelse - s add flag { r add neg }{ l add } ifelse - X add /X ED -} def -% -/VPutAdjust { - Sin Cos mul - 0 eq - { 0 } - { l Sin mul Cos div flag { neg } if - r Sin mul Cos div flag not { neg } if - 2 copy gt { pop } { exch pop } ifelse - } ifelse - s add flag { d add } { h add neg } ifelse - Y add /Y ED -} def -% -% -end -% -% END pst-node.pro - -%%EndProcSet -%%BeginProcSet: pst-3d.pro 0 0 -%% $Id: pst-3d.pro 247 2010-01-04 22:45:42Z herbert $ -% PostScript prologue for pst-3d.tex. -% Version 0.01, 2010/01/01 -% -/tx@3Ddict 300 dict def -tx@3Ddict begin -% -/SetMatrixThreeD { - dup sin /e ED cos /f ED - /p3 ED /p2 ED /p1 ED - p1 0 eq - { /a 0 def /b p2 0 le { 1 } { -1 } ifelse def - p3 p2 abs - } - { p2 0 eq - { /a p1 0 lt { -1 } { 1 } ifelse def /b 0 def - p3 p1 abs - } - { p1 dup mul p2 dup mul add sqrt dup - p1 exch div /a ED - p2 exch div neg /b ED - p3 p1 a div - } - ifelse - } - ifelse - atan dup sin /c ED cos /d ED - /Matrix3D - [ - b f mul c a mul e mul sub - a f mul c b mul e mul add - d e mul - b e mul neg c a mul f mul sub - a e mul neg c b mul f mul add - d f mul - ] def -} def -% -/ProjThreeD { - /z ED /y ED /x ED - Matrix3D aload pop - z mul exch y mul add exch x mul add - 4 1 roll - z mul exch y mul add exch x mul add - exch -} def -% -/SetMatrixEmbed { - SetMatrixThreeD - Matrix3D aload pop - /z3 ED /z2 ED /z1 ED /x3 ED /x2 ED /x1 ED - SetMatrixThreeD - [ - Matrix3D aload pop - z3 mul exch z2 mul add exch z1 mul add 4 1 roll - z3 mul exch z2 mul add exch z1 mul add - Matrix3D aload pop - x3 mul exch x2 mul add exch x1 mul add 4 1 roll - x3 mul exch x2 mul add exch x1 mul add - 3 -1 roll 3 -1 roll 4 -1 roll 8 -3 roll 3 copy - x3 mul exch x2 mul add exch x1 mul add 4 1 roll - z3 mul exch z2 mul add exch z1 mul add - ] - concat -} def -% -/TMSave { - tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if - /TMatrix [ TMatrix CM ] cvx def -} def -% -/TMRestore { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def -% -/TMChange { - TMSave - /cp [ currentpoint ] cvx def % ??? Check this later. - CM - CP T STV - CM matrix invertmatrix % Inv(M') - matrix concatmatrix % M Inv(M') - exch exec - concat cp moveto -} def -% -end % of tx@3Ddict -%% -%% End of file `pst-3d.pro'. - -%%EndProcSet -%%BeginProcSet: pst-math.pro 0 0 -% -*- Mode: Postscript -*- -% pst-math.pro --- PostScript header file pst-math.pro -% -% Author : Christophe JORSSEN -% Author : Herbert Voß -% Created the : Sat 20 March 2004 -% Last Mod : $Date: 2010/10/02 $ -% Version : 0.62 $ -% -/PI 3.14159265359 def -/ENeperian 2.71828182846 def -% -/DegToRad {PI mul 180 div} bind def -/RadToDeg {180 mul PI div} bind def -% -/COS {RadToDeg cos} bind def -/SIN {RadToDeg sin} bind def -/TAN {dup SIN exch COS Div} bind def -/tan {dup sin exch cos Div} bind def -/ATAN {neg -1 atan 180 sub DegToRad} bind def -/ACOS {dup dup mul neg 1 add sqrt exch atan DegToRad} bind def -/acos {dup dup mul neg 1 add sqrt exch atan} bind def -/ASIN {neg dup dup mul neg 1 add sqrt neg atan 180 sub DegToRad} bind def -/asin {neg dup dup mul neg 1 add sqrt neg atan 180 sub} bind def -% -/EXP {ENeperian exch exp} bind def -% -/COSH {dup EXP exch neg EXP add 2 div} bind def -/SINH {dup EXP exch neg EXP sub 2 div} bind def -/TANH {dup SINH exch COSH div} bind def -/ACOSH {dup dup mul 1 sub sqrt add ln} bind def -/ASINH {dup dup mul 1 add sqrt add ln} bind def -/ATANH {dup 1 add exch neg 1 add Div ln 2 div} bind def -% -%/SINC {dup SIN exch Div} bind def -/SINC { dup 0 eq { pop 1 } { dup SIN exch div } ifelse } bind def - -/GAUSS {dup mul 2 mul dup 4 -2 roll sub dup mul exch div neg EXP exch PI mul sqrt div} bind def -% -/GAMMA { 2 dict begin % hv 2007-08-30 - /z exch def - 1.000000000190015 % p(0) - 0 1 5 { % on stack is 0 1 2 3 4 5 - dup % n-1 n-1 - [ 76.18009172947146 - -86.50532032941677 - 24.0140982483091 - -1.231739572450155 - 0.1208650973866179E-2 - -0.5395239384953E-5 ] exch get exch % p(n) n-1 - 1 add z add div % p(n)/(z+n) - add % build the sum - } for - Pi 2 mul sqrt z div mul - z 5.5 add z 0.5 add exp mul ENeperian z 5.5 add neg exp mul - end } bind def -% -/GAMMALN {dup dup dup 5.5 add dup ln 3 -1 roll .5 add mul sub neg 1.000000000190015 - 0 1 5 { - [76.18009172947146 -86.50532032941677 24.0140982483091 -1.231739572450155 - .1208650973866179E-2 -.5395239384953E-5 2.5066282746310005] exch get - 4 -1 roll 1 add dup 5 1 roll div add} for - 4 -1 roll div 2.5066282746310005 mul ln add exch pop} bind def -/BETA {2 copy add GAMMALN neg exch GAMMALN 3 -1 roll GAMMALN EXP} bind def -% -/HORNER {aload length - dup 2 add -1 roll - exch 1 sub { - dup 4 1 roll - mul add exch - } repeat - pop -} bind def -% -/BESSEL_J0 {dup abs 8 lt { - dup mul dup [57568490574 -13362590354 651619640.7 -11214424.18 77392.33017 -184.9052456] HORNER - exch [57568490411 1029532985 9494680.718 59272.64853 267.8532712 1] HORNER - Div} - {abs dup .636619772 exch div sqrt exch dup .785398164 sub exch 8 exch div dup dup mul dup - [1 -1.098628627E-2 .2734510407E-4 -.2073370639E-5 .2093887211E-6] HORNER - 3 index COS mul - exch [-.1562499995E-1 .1430488765E-3 -.6911147651E-5 .7621095161E-6 -.934945152E-7] HORNER - 4 -1 roll SIN mul 3 -1 roll mul neg add mul} - ifelse} bind def -% -/BESSEL_Y0 {dup 8 lt { - dup dup mul dup [-2957821389 7062834065 -512359803.6 10879881.29 -86327.92757 228.4622733] HORNER - exch [40076544269 745249964.8 7189466.438 47447.26470 226.1030244 1] HORNER - Div exch dup ln exch BESSEL_J0 .636619772 mul mul add} - {dup .636619772 exch div sqrt exch dup .785398164 sub exch 8 exch div dup dup mul dup - [1 -.1098628627E-2 .2734510407E-4 -.2073370639E-5 .2093887211E-6] HORNER - 3 index SIN mul - exch [-.1562499995E-1 .1430488765E-3 -.6911147651E-5 .7621095161E-6 -.934945152E-7] HORNER - 4 -1 roll COS mul 3 -1 roll mul add mul} - ifelse} bind def -% -/BESSEL_J1 {dup abs 8 lt { - dup dup mul dup 3 -2 roll [72362614232 -7895059235 242396853.1 -2972611.439 15704.48260 -30.16036606] HORNER mul - exch [144725228442 2300535178 18583304.74 99447.43394 376.9991397 1] HORNER - Div} - {dup abs dup .636619772 exch div sqrt exch dup 2.356194491 sub exch 8 exch div dup dup mul dup - [1 .183105E-2 -.3516396496E-4 .2457520174E-5 -.240337019E-6] HORNER - 3 index COS mul - exch [.04687499995 6.2002690873E-3 .8449199096E-5 -.88228987E-6 .105787412E-6] HORNER - 4 -1 roll SIN mul 3 -1 roll mul neg add mul exch dup abs Div mul} - ifelse} bind def -% -/BESSEL_Y1 {dup 8 lt { - dup dup dup mul dup [-.4900604943E13 .1275274390E13 -.5153428139E11 .7349264551E9 -.4237922726E7 .8511937935E4] HORNER - exch [.2499580570E14 .4244419664E12 .3733650367E10 .2245904002E8 .1020426050E6 .3549632885E3 1] HORNER - Div mul exch dup dup ln exch BESSEL_J1 mul exch 1 exch div sub .636619772 mul add} - {dup .636619772 exch div sqrt exch dup 2.356194491 sub exch 8 exch div dup dup mul dup - [1 .183105E-2 -.3516396496E-4 .2457520174E-5 -.240337019E-6] HORNER - 3 index SIN mul - exch [.04687499995 -.2002690873E-3 .8449199096E-5 6.88228987E-6 .105787412E-6] HORNER - 4 -1 roll COS mul 3 -1 roll mul add mul} - ifelse} bind def -% -% En cours... -/BESSEL_Yn {dup 0 eq {pop BESSEL_Y0}{dup 1 eq {pop BESSEL_Y1}{ - exch dup BESSEL_Y0 exch dup BESSEL_Y1 exch 2 exch Div { - mul 3 -1 roll mul 2 index sub pstack} for - } ifelse } ifelse } bind def -% -/SIMPSON { 1 dict begin %% on stack a b var f ierr Dominik Rodriguez - 3 index 5 index sub % compute h - 1 % a b var f ierr h n - 4 index 7 index def 3 index exec % a b var f ierr h n f(a) - 5 index 7 index def 4 index exec add % a b var f ierr h n f(a)+f(b) - 5 index 8 index 4 index 2 div add def 4 index exec % a b var f ierr h n f(a)+f(b) f(a+h/2) - exch 1 index 4 mul add 0 % a b var f ierr h n old=f(a+h/2) Estim=f(a)+f(b)+4f(a+h/2) NbLoop - { % a b var f ierr h n old Estim NbLoop - 5 -1 roll 2 div dup 6 1 roll % h<-h/2 - 5 -1 roll 2 mul 5 1 roll % n<-2n - % a b var f ierr h n old Estim NbLoop h - 2 div 10 index add 0 % a b var f ierr h n old Estim NbLoop a+h/2 Cumul - 5 index { - 1 index 10 index exch def 8 index exec add exch 6 index add exch - } repeat % a b var f ierr h n old Estim NbLoop a+nh/2 Cumul - exch pop % a b var f ierr h n old Estim NbLoop New - 2 index 1 index 4 mul 6 -1 roll 2 mul sub sub % a b var f ierr h n Estim NbLoop New Diff - 4 -1 roll 2 mul 1 index sub 4 1 roll % a b var f ierr h n Estim NbLoop New Diff - exch 4 1 roll % a b var f ierr h n old Estim NbLoop Diff - 5 index 6 div mul abs 6 index lt { exit } if - 1 add dup 9 eq { exit } if - } loop % a b var f ierr h n old Estim NbLoop - exch 5 -1 roll 6 div mul mark 10 2 roll cleartomark -end -} def -% ------------------------------------ math stuff ---------------------------------- -% -% Matrix A in arrays of rows A[[row1][row2]...] -% with [row1]=[a11 a12 ... b1] -% returns on stack solution vector X=[x1 x2 ... xn] -/SolveLinEqSystem { % on stack matrix M=[A,b] (A*x=b) - 10 dict begin % hold all ocal - /A exch def - /Rows A length def % Rows = number of rows - /Cols A 0 get length def % Cols = number of columns - /Index [ 0 1 Rows 1 sub { } for ] def % Index = [0 1 2 ... Rows-1] - /col 0 def - /row 0 def - /PR Rows array def % PR[c] = pivot row for row row - { % starts the loop, find pivot entry in row r - col Cols ge row Rows ge or { exit } if % col < Cols and row < Rows else exit - /pRow row def % pRow = pivot row - /max A row get col get abs def % get A[row[col]], first A[0,0] - row 1 add 1 Rows 1 sub { % starts for loop 1 1 Rows-1 - /j exch def % index counter - /x A j get col get abs def % get A[j[r]] - x max gt { % x>max, then save position - /pRow j def - /max x def - } if - } for % now we have the row with biggest A[0,1] - % with pRow = the pivot row - max 0 gt { % swap entries pRow and row in i - /tmp Index row get def - Index row Index pRow get put - Index pRow tmp put % and columns pRow and row in A - /tmp A row get def - A row A pRow get put - A pRow tmp put % pivot - /row0 A row get def % the pivoting row - /p0 row0 col get def % the pivot value - row 1 add 1 Rows 1 sub { % start for loop - /j exch def - /c1 A j get def - /p c1 col get p0 div def - c1 col p put % subtract (p1/p0)*row[i] from row[j] - col 1 add 1 Cols 1 sub { % start for loop - /i exch def - c1 dup i exch % c1 i c1 - i get row0 i get p mul sub put - } for - } for - PR row col put - /col col 1 add def - /row row 1 add def - }{ % all zero entries - /row row 1 add def % continue loop with same row - } ifelse - } loop - /X A def % solution vector - A Rows 1 sub get dup - Cols 1 sub get exch - Cols 2 sub get div - X Rows 1 sub 3 -1 roll put % X[n] - Rows 2 sub -1 0 { % for loop to calculate X[i] - /xi exch def % current index - A xi get % i-th row - /Axi exch def - /sum 0 def - Cols 2 sub -1 xi 1 add { - /n exch def - /sum sum Axi n get X n get mul add def - } for - Axi Cols 1 sub get % b=Axi[Cols-1] - sum sub % b-sum - Axi xi get div % b-sum / Axi[xi] - X xi 3 -1 roll put % X[xi] - } for - X - end -} def -% -/c@_0 2.515517 def -/c@_1 0.802853 def -/c@_2 0.010328 def -/d@_1 1.432788 def -/d@_2 0.189269 def -/d@_3 0.001308 def -/norminv { - 5 dict begin - neg 1 add 1 exch div ln 2 mul sqrt - /t exch def - /t2 t dup mul def - /t3 t2 t mul def - c@_0 c@_1 t mul add c@_2 t2 mul add 1 d@_1 t mul add - d@_2 t2 mul add d@_3 t3 mul add div neg t add - end -} def -%end{norminv Michael Sharpe} -% -% -% END pst-math.pro - -%%EndProcSet -%%BeginProcSet: pstricks-add.pro 0 0 -%% $Id: pstricks-add.pro 328 2010-05-24 15:56:43Z herbert $ -% PostScript prologue for pstricks-add.tex. -% Version 0.23, 2009/12/17 -% -/tx@addDict 410 dict def tx@addDict begin -%% -realtime srand % set random generator -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -/GTriangle { - gsave - /mtrx CM def - /colorA ED /colorB ED /colorC ED % save the colors - /yA ED /xA ED % save the origin - xA yA translate - rotate % \psk@gangle - /yB ED /xB ED /yC ED /xC ED % save other coordinates - /ds [ % save data in a array - 0 0 0 colorA aload pop % fd x y xr xg xb - 0 xB xA sub yB yA sub colorB aload pop - 0 xC xA sub yC yA sub colorC aload pop -% 1 xC xB add yB colorA aload pop % for use with 4 points ABCD - ] def - newpath - << - /ShadingType 4 % single Gouraud - /ColorSpace [ /DeviceRGB ] - /DataSource ds - >> - shfill - closepath - mtrx - setmatrix grestore} def -% -/RGBtoCMYK { % on stack r g b -> C M Y K - 3 dict begin - /Blue ED /Green ED /Red ED - 1 Red sub % Cyan - 1 Green sub % Magenta - 1 Blue sub % Yellow - 0 % Black - end -} def -% -/CMYKtoGRAY { % on stack c m y k -> gray - exch 0.11 mul add - exch 0.59 mul add - exch 0.3 mul add - dup 1 gt { pop 1 } if - neg 1 add -} def -% -/RGBtoGRAY { % on stack r g b -> gray - 0.11 mul - exch 0.59 mul add - exch 0.3 mul add -} def -% -/HSBtoGRAY { - 6 dict begin - /b exch def - /s exch def 6 mul dup cvi dup - /i exch def sub - /f exch def - /F [[0 1 f sub 1][f 0 1][1 0 1 f sub][1 f 0][1 f sub 1 0][0 1 f][0 1 1]] def - F i get { s mul neg 1 add b mul} forall - 0.11 mul - exch 0.59 mul add - exch 0.3 mul add - end -} def -% -%% convertisseur longueur d'onde ->R,G,B Manuel Luque -%% lambda max=780 nanometres -%% lambda min=380 nanometres -%% adaptation de : -%% http://www.physics.sfasu.edu/astro/color.html -%% www.efg2.com/lab -% -/Gamma 0.8 def -/calculateRGB { - lambda 379 le {/Red 0 def /Green 0 def /Blue 0 def} if - lambda 781 ge {/Red 0 def /Green 0 def /Blue 0 def} if - lambda 380 ge {lambda 439 le { - /R {lambda 440 sub neg 440 380 sub div} def - /Red R factor mul Gamma exp def - /G 0 def - /Green G factor mul Gamma exp def - /B 1 def - /Blue B factor mul Gamma exp def} if - } if - lambda 440 ge { lambda 489 le { - /G {lambda 440 sub 490 440 sub div} def - /Green G factor mul Gamma exp def - /R 0 def /Red 0 def - /B 1 def - /Blue B factor mul Gamma exp def } if - } if - lambda 490 ge {lambda 509 le { - /B {lambda 510 sub neg 510 490 sub div} def - /Blue B factor mul Gamma exp def - /R 0 def /Red 0 def - /G 1 def - /Green G factor mul Gamma exp def } if - } if - lambda 510 ge {lambda 579 le { - /R {lambda 510 sub 580 510 sub div } def - /Red R factor mul Gamma exp def - /Blue 0 def - /G 1 def - /Green G factor mul Gamma exp def } if - } if - lambda 580 ge {lambda 644 le { - /G {lambda 645 sub neg 645 580 sub div } def - /Green G factor mul Gamma exp def - /Blue 0 def - /R 1 def - /Red R factor mul Gamma exp def } if - } if - lambda 645 ge { lambda 780 le { - /Red 1 factor mul Gamma exp def - /Blue 0 def - /Green 0 def } if - } if -} def -% -/factor { - lambda 380 ge {lambda 419 le { 0.3 0.7 lambda 380 sub mul 420 380 sub div add} if } if - lambda 420 ge {lambda 700 le { 1 } if } if - lambda 701 ge {lambda 780 le { 0.3 0.7 780 lambda sub mul 780 700 sub div add} if } if -} def -% -/wavelengthToRGB { % the wavelength in nm must be on top of the stack - cvi /lambda exch def % no floating point here - calculateRGB -} def % now the colors are saved in Red Green Blue -% -/wavelengthToGRAY { % the wavelength in nm must be on top of the stack - cvi /lambda exch def % no floating point here - calculateRGB - Red Green Blue RGBtoGRAY -} def % now the gray color is on the stack -% -/wavelengthToCMYK { % the wavelength in nm must be on top of the stack - cvi /lambda exch def % no floating point here - gsave - calculateRGB Red Green Blue RGBtoCMYK - /Black ED /Yellow ED /Magenta ED /Cyan ED - grestore -} def % now the colors are saved in Cyan Magenta Yellow Black -% -/axfill { - 8 dict begin - /xw exch def /nl exch def - /C1 exch def /y1 exch def/x1 exch def - /C0 exch def /y0 exch def/x0 exch def - << /ShadingType 2 - /ColorSpace /DeviceRGB - /Coords [ x0 y0 x1 y1 ] - /EmulatorHints [ xw 2 div dup ] - /Function << - /FunctionType 2 - /Domain [0 1] - /C0 C0 - /C1 C1 - /N 1 - >> - >> shfill - end -} bind def -% -%/amplHand {.8} def -%/dtHand 2 def -/varHand { rand sin amplHand mul add } def -/MovetoByHand { moveto } def -%/MovetoByHand { /y0 ED /x0 ED x0 y0 moveto } def -/LinetoByHand { 4 dict begin - /y1 ED /x1 ED - currentpoint /y0 ED /x0 ED - x0 x1 sub dup mul y0 y1 sub dup mul add sqrt /dEnd ED - 0 dtHand dEnd { dup - x1 x0 sub mul dEnd div x0 add varHand exch - y1 y0 sub mul dEnd div y0 add varHand lineto - } for -% /x0 x1 def /y0 y1 def - end -} def -% -end -% -% END pstricks-add.pro - -%%EndProcSet -%%BeginProcSet: cm-super-t2a.enc 0 0 -% This file is generated from `T2Auni.map' and `glyphlist.txt', `gl-other.txt' -% -% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; -% LIGKERN quoteleft quoteleft =: quotedblleft ; -% LIGKERN quoteright quoteright =: quotedblright ; -% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; -% LIGKERN greater greater =: guillemotright ; -% LIGKERN f f =: ff ; f i =: fi ; f l =: fl ; ff i =: ffi ; ff l =: ffl ; -% -% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; -% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; -% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; -% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; -% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; -% LIGKERN nine {} * ; * {} nine ; -% -/T2AEncoding [ -% 0x00 -/grave -/acute -/circumflex -/tilde -/dieresis -/hungarumlaut -/ring -/caron -/breve -/macron -/dotaccent -/cedilla -/ogonek -/uni04C0 -/angleleft -/angleright -% 0x10 -/quotedblleft -/quotedblright -/cyrflex -/dblgrave -/cyrbreve -/endash -/emdash.cyr % CYRILLIC EM DASH -/afii61664 -/perthousandzero % PERTHOUSAND ZERO -/dotlessi -/dotlessj -/ff -/fi -/fl -/ffi -/ffl -% 0x20 -/uni2423 -/exclam -/quotedbl -/numbersign -/dollar -/percent -/ampersand -/quoteright -/parenleft -/parenright -/asterisk -/plus -/comma -/hyphen -/period -/slash -% 0x30 -/zero -/one -/two -/three -/four -/five -/six -/seven -/eight -/nine -/colon -/semicolon -/less -/equal -/greater -/question -% 0x40 -/at -/A -/B -/C -/D -/E -/F -/G -/H -/I -/J -/K -/L -/M -/N -/O -% 0x50 -/P -/Q -/R -/S -/T -/U -/V -/W -/X -/Y -/Z -/bracketleft -/backslash -/bracketright -/asciicircum -/underscore -% 0x60 -/quoteleft -/a -/b -/c -/d -/e -/f -/g -/h -/i -/j -/k -/l -/m -/n -/o -% 0x70 -/p -/q -/r -/s -/t -/u -/v -/w -/x -/y -/z -/braceleft -/bar -/braceright -/asciitilde -/hyphen.alt % HANGING HYPHEN -% 0x80 -/afii10050 -/uni0492 -/afii10051 -/afii10060 -/uni04BA -/uni0496 -/uni0498 -/afii10058 -/afii10056 -/uni049A -/uni04A0 -/uni049C -/uni04D4 -/uni04A2 -/uni04A4 -/afii10054 -% 0x90 -/uni04E8 -/uni04AA -/afii10062 -/uni04AE -/uni04B0 -/uni04B2 -/afii10145 -/uni04B8 -/uni04B6 -/afii10053 -/uni04D8 -/afii10059 -/afii10023 -/afii61352 -/currency -/section -% 0xA0 -/afii10098 -/uni0493 -/afii10099 -/afii10108 -/uni04BB -/uni0497 -/uni0499 -/afii10106 -/afii10104 -/uni049B -/uni04A1 -/uni049D -/uni04D5 -/uni04A3 -/uni04A5 -/afii10102 -% 0xB0 -/uni04E9 -/uni04AB -/afii10110 -/uni04AF -/uni04B1 -/uni04B3 -/afii10193 -/uni04B9 -/uni04B7 -/afii10101 -/afii10846 -/afii10107 -/afii10071 -/quotedblbase -/guillemotleft.cyr -/guillemotright.cyr -% 0xC0 -/afii10017 -/afii10018 -/afii10019 -/afii10020 -/afii10021 -/afii10022 -/afii10024 -/afii10025 -/afii10026 -/afii10027 -/afii10028 -/afii10029 -/afii10030 -/afii10031 -/afii10032 -/afii10033 -% 0xD0 -/afii10034 -/afii10035 -/afii10036 -/afii10037 -/afii10038 -/afii10039 -/afii10040 -/afii10041 -/afii10042 -/afii10043 -/afii10044 -/afii10045 -/afii10046 -/afii10047 -/afii10048 -/afii10049 -% 0xE0 -/afii10065 -/afii10066 -/afii10067 -/afii10068 -/afii10069 -/afii10070 -/afii10072 -/afii10073 -/afii10074 -/afii10075 -/afii10076 -/afii10077 -/afii10078 -/afii10079 -/afii10080 -/afii10081 -% 0xF0 -/afii10082 -/afii10083 -/afii10084 -/afii10085 -/afii10086 -/afii10087 -/afii10088 -/afii10089 -/afii10090 -/afii10091 -/afii10092 -/afii10093 -/afii10094 -/afii10095 -/afii10096 -/afii10097 -] def - -%%EndProcSet -%%BeginProcSet: texps.pro 0 0 -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginProcSet: special.pro 0 0 -%! -TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N -/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N -/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N -/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ -/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho -X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B -/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ -/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known -{userdict/md get type/dicttype eq{userdict begin md length 10 add md -maxlength ge{/md md dup length 20 add dict copy def}if end md begin -/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S -atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ -itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll -transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll -curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf -pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} -if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 --1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 -get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip -yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub -neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ -noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop -90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get -neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr -1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr -2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 --1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S -TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ -Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale -}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState -save N userdict maxlength dict begin/magscale true def normalscale -currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts -/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x -psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx -psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub -TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def -@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll -newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto -closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N -/@beginspecial{SDict begin/SpecialSave save N gsave normalscale -currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} -N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs -neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate -rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse -scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg -lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx -ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N -/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ -pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave -restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B -/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 -setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY -moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix -matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc -savematrix setmatrix}N end - -%%EndProcSet -%%BeginProcSet: color.pro 0 0 -%! -TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop -setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll -}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def -/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ -setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ -/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch -known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC -/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC -/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 -setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 -setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 -0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC -/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 -setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 -0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ -0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ -0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC -/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 -setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 -setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 -0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC -/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 -setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 -0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ -0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ -0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC -/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 -setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC -/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 -0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 -0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 -0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 -setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 -0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC -/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 -setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 -0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 -1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC -/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 -setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ -0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} -DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 -setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 -setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 -setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end - -%%EndProcSet -TeXDict begin @defspecial - - systemdict /pdfmark known{userdict /?pdfmark systemdict /exec get -put}{userdict /?pdfmark systemdict /pop get put userdict /pdfmark systemdict -/cleartomark get put}ifelse - - /DvipsToPDF{72.27 mul Resolution div} def/PDFToDvips{72.27 div Resolution -mul} def/BPToDvips{72 div Resolution mul}def/BorderArrayPatch{[exch{dup -dup type/integertype eq exch type/realtype eq or{BPToDvips}if}forall]}def/HyperBorder -{1 PDFToDvips} def/H.V {pdf@hoff pdf@voff null} def/H.B {/Rect[pdf@llx -pdf@lly pdf@urx pdf@ury]} def/H.S {currentpoint HyperBorder add /pdf@lly -exch def dup DvipsToPDF 72 add /pdf@hoff exch def HyperBorder sub /pdf@llx -exch def} def/H.L {2 sub dup/HyperBasePt exch def PDFToDvips /HyperBaseDvips -exch def currentpoint HyperBaseDvips sub /pdf@ury exch def/pdf@urx -exch def} def/H.A {H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF -HyperBasePt sub sub /pdf@voff exch def} def/H.R {currentpoint HyperBorder -sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint -exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def} def - -@fedspecial end -%%BeginFont: CMTI7 -%!PS-AdobeFont-1.0: CMTI7 003.002 -%%Title: CMTI7 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTI7. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTI7 known{/CMTI7 findfont dup/UniqueID known{dup -/UniqueID get 5000825 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTI7 def -/FontBBox {-27 -250 1268 750 }readonly def -/UniqueID 5000825 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI7.) readonly def -/FullName (CMTI7) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C525641D2B175DB6E -FE5425043CA62CE886B802B23F41D33FF06CB9EAB7DCFEE2AB63C1333D9B042F -B0A32D7634E2BC65BD7B7C53695C585079EBE138B40ED4BC7D06B30C88B5E0C8 -E93FF20138D513B24866986C4A633304FC4945EA8A6C6BFFBA1FDCC8F7474BA3 -D997548C23060E15A15687E9B58A8D2E2D749776BA364A2E28FB03DA767645CF -34BC9E787E5D3A5B05F67D169D710592108F4647A0004F71159950253FCF9A25 -028DBDB4FCDB2AB5F17E49A5DEE3C366C693E0784A4D036F92FC97F1C0A0C08D -E3FD9FB57AA80ADCBF047193DC787C35FB3237AB63613A9244727FB93754EDFC -323A8B936100717C26AFD2A4EC3F66C438FECC2D6EC4C2728ED313AFE51896DE -9BB5E98049A4940FE2EC90074C0EF991AD2073AE06B7AA62C2D6A1E74E72D3D3 -739BF7461E7AD856263A57673F6C7E33C07E330A9486B20BC9FE4D2908DBAE9C -1078C36AD01B070C267BE3A1C8D1212DEC9CB71683F464783AA3503DD646FFF8 -C0D859A4356E4995246790E5A2FFE5D46CDCE889E32516264498AE92D769897C -A8E5FCA9C15392A3AC0BEE3573EE14EABE243E07F10E33BCFB4CDFC7AEFEAB6C -F62C21EE29CFAA994A575D56C692C6E040FABBFBC5C0C79A23174E728658C967 -A64D87103716B3D29D724DAFFFD2DB429F9C60EA4CE589C3B5FDFC57297CE277 -80E9A72FFED79394E57C4CE22C5CD55433B3BB329F78F35B25BB3F635DD11897 -75C1BE2A808F26E0840D95A04FE7FE0A85B2513745D1FCA46A54BC1EABF596B4 -F0344BE1A8297EC0E7932E1C82051868BF9A463ABFE0C63ED8F0760A44DEB196 -4643D15E499017B5BCC3D28C576A2E0523BC3C282FC3D078B4F944B22506D29D -8EADCD89A7E73BBA812C34E4D2728C387AFFD3BC4776236A1DD646ACF4ABD7FF -6A09AFC5EEDFC35F3E9A3C0BE49425D85B0E1A935DD5C076062888DA3B4DBD7C -72BD35B29BBF1042EC8A64E64AC472D3E446FFC36FE86ED8B95B65E6756EBF02 -FFB1FA08D7CDD1A5104AFDDBAB721951E5BB5D091BE3F827DE1D2667ABFF201F -AFEFEC030C90440D358259A25A2BC111BB56B3E53E5BE0AC8E366CF112C289A5 -48442A1E48C0115DF1119349ACB1FE6983D805071DC20D576D9267AACA497EFE -CEF2593A4AC5AF2167627B00C5EA97D125EB8A47E58CD9B213D74F2D37F8E474 -D9E3EFE626E138F6B09EC1B90E207C2DE0539CF5AAB4A5CDC331B295D8202562 -8482DA317D4BA1404A291D299E0A0F6024696EA9225E4C7B15839F733EC4BFFD -E85B7CE1F0883A5A0B4544E534015E25DF3BF5305682C20B1625C3C6A5700087 -72969CBE2D79712C8EBB9F9776DA3D6A7A35C79C6508F8962B1E34007F4F9EB3 -E4BBED40B4C76C56974838F6296ACFE974A249F80FFD668AA8159841E46DE0D2 -6A5BA7E19B006D7DECFE918E0B792F4D0C04FA774F6B399E165F7687B4962646 -2595E5B24DAAA8BB1BF33B972776A258F3D039FFA6CAC49B3274F193070D95EF -B96B07A2C5A413FE43C59F6D8F843795472ABE1F73107C0F5A5B9274CFF2346E -7627355D5E7B3B3451C89DF5572F4E9BDCAF526425B34D71875B515E62DA8609 -B45B1BEA5002053BC1F0896E9FBFC00A83FC660BBC5258426108155DA6C00024 -AAF2DA69949B5DB8D9EA06A599F2B277E45DB331C6BC2F40660A33BB33FA468C -9F8C6B65CB2E273BE3E076B0C57680E227163C6183C06A4308A0285526E98445 -8763C550EE9422B987AF5EA62E89630C007C63E4BB5FFF01BC59793A20DDD35C -BFB5C79B5416EF06B967B572F3C58ECB0A3798C438778F42DCE24943ED290743 -6CD8F32177192AD8EF12373CA6E493DA0F045C1CFDDCD49F6E4C067324CA0A3B -389CFF8E2C408D8A4083427D4DD8CE33ACB202800A75E581404334E3A910EE37 -9B6DBD1D296C8C164B7B9E1B744A09AAB39963E396F5EAF36D7A02FAC04A666F -6184E9CD0BC31B6C3ECD327960336FB1F9F9EB3B63284E0BEFF29DF468916260 -15E6DC9206DDD65F43D75762520C3D6D221FBCBC530EA8ACD715995411F785DD -212848B1DAF379667F67763E6E4AEDE090130D1632153135992A292A12541702 -3CCECE5CC690C755E8D6F4FEB9D0C1F5C7BE9E5388520CFB9F705F227E131FD2 -ECF6FAEAF05ADC9D7343FCB8CDA6CACF0A89DA6E2F0F58DD74ACD2A670F3AAAC -51C82B11ACF98BBCD1D1DC49E6A8B9815116137E9DE4E3975D3363779165F11A -4EE8B49058750A45DF8D3548CB628EF51A05B36FE8317A864CC5126C073A056F -A1F3DFC27F4A5516782E58C26CDBB2C24693F66FA7BDE6430184675C5BDE38B8 -FB08777618A8057F0B8102B14A9122214037FB150322003A0B4EC789F94863C4 -7DB0F028D37EBE23863834060E0E7A557B97E9C83B3D1765C08A86A5BC59EAF9 -356A0B1A4652044F5757B3CAF077A53D09FAC644D69B3C8FF220E23AC9461FAF -3EDCE217FC3222278BFBFAE76E8A3BE95920C58711CE421E21B3208438871E76 -468EABB998E3B8C5A914F2E6D8F3A8390A3F3802843FF261BD4629F369E1E5ED -9A94C4B2724D31091117DBF20F6857873BFCCFEC228FDF1F42DE699A5B3F6633 -00EFE62983F273CF97E171823BD3A4B2275D0D7B4980357B1CA613F8383C90FC -080A28C3CA09B30FB156C508C88DA67EA995A4805C0F56A0169CE2F4F165BC67 -75D9256A9A182D17804CC75DC09E4195DADA5AB7410132B32AC9FFBD8E91F0EC -5E16F90B4845926B31240ED66CF7E7B30B09A2F0A8B5321E1D41A85C5BC9592B -81E62AB9E1C7689F5F3DD004B32D2F2DFCFF536FA73B708EEB1EC50431F01831 -497CF6907E3E0AE42240C1F95CF761BD7C6D063805D473C94371C07CA1065F38 -B6B75779F8B4B08993CD240F4ECA804E083034BA706FC89997A900A368D1F65C -E4D4035CA5F16EE160DA90FE84F81DFDD7B89928BBA041CE048841E96F90934B -877CC64D608B2AEC9BEE8B80A0E5181EB32F93463F93E7A2EA94AE70A60CFB8E -94FB7B11A47D9F8CD338296F9B8993BCE0B89AECB520FCE80452B8C5668A7BE1 -65484C4F33340EAE118D1DD35772DCA7EE26E9D3097832357431FA2EC7AB1FC9 -50E5C8CF1AC6CE26AC96066F5E1141461BC4E9B5D9E8238D6344C201FE1AB5A9 -EA45B0714D1BE5DC27C06046BA9A3715129D41065DA246AA3CA2B2C81B1AD030 -1218981023F8F5C0C500FCA63C4F745CEC91A8DA9B80BDB28DFC525950F82EC2 -E7867CA9E096DA38FF5CE0DE0DDF7033F4CD1EBE11273B1373B76168930EBBFD -0A80E139FA67DAD2DE2F3F5A8233BBEB24354254171B18D4195F613047E63686 -90FE10D47434A7DD0C619F2514DC5A46A4075E7B8BA6677E38956368F84158A0 -CB37CF43C2E48A3856C0BA0F69BCD63F6782D8475D955566104C34C0453E01F0 -9AA0091C9BEB71FCF385D90027C0E69AD0EB7C91B61B2976E31BF9D9AAE65588 -498881E5F9AD116E6D4DEAE2182FB848DCED82868355E08D395E1AD26EDB5C24 -9B92294E3DF2D11314DA237CDF52A5689AA1FA4E49C4A82381E5C8638B9186CB -633333610FF4112D7D02C3CA9AA6B44F5CAC4582EA66542B552A88598A759F3B -E3DBC0443A40B25DEFC7DC0114E5465FEBC3543E82494CA44FF09613103941F4 -6BA67CE6FFA9BE0FE7A71A1BC60ED190BED3C0B3E7A7702520631D0A730231E5 -F3B53095017F80525DC287F0A8400E1630A3D92F076A13E5E3D947F9F0277FCB -890123AF04932938C6938D7533D2429E580566681049AFD0AC057B59708BADF0 -8FC7E5DF40CBD80F49503331A81A5C56375F5BFB4C4BCA6FC94B7C6FAFAEF6DA -93C704F907BF8558173DAAA78588CD8C7D1B13F838AE94C4E5152C29CBC171C5 -B8B3146FB0CE369F0B0CEAE5EC657E60E74321BAA347D2307CC55DCFE06E47BF -FFDB7A813FC6D30C0FCE5BD3E77393CFC51B38EF275C84C866E69CA9C74C9AB4 -A6A6DC7D12DB626552D87856DDD69AD28AECDC9756A00A0D32257A43D6E9CDAB -C8127E06C4FB513129926FF0395F0CC1C2D808C97635D33BA2F8C833F2F84F66 -3B05BDE41F950EEDEE73DF90F644ECD7A72CB2CFEC1FCF17A867E0B0C0F5A7AA -59AF4501570A50EB302F85E542BD29ABA6D74332400F4C8365C3C9E988752F99 -B839B7A0F630C740BE32D1486981D8000FF636C90F694FE379FC0709EE7CC746 -F883810903E238C932073A90AC78E8F7DF9583C1152C559A6CCD3E5C7C0BCAB9 -73AF3DFA8615A7F299FCF7CE7206D5F4B9040D387CD3C52DBD08E0E9A80C9616 -5EA0EB493768C53E93FCE41BCCE064A047BE8C050266583ABAFED74E2B968BF8 -6CE1507105B9503D6FC29CE61BF07ED568B0F1497796B6CF781E7262762C1675 -F25E86F56CBD7E68B03350481DEFD02438DCFBB7EE50FF276387740E79E5CFB2 -CD7A6FA367377707DF63029ECDEC47A4EAD2C87CF75E4A9112444FB2B5BE55B6 -C25515FF648509AD54D739CDF040FCC34B6A88788E0372528E9B112FDB8C7843 -5D557151B6FCEE99F53BD5FFF13026B95ECBAC75A0EF4F856D2F150817B0CC7E -20AB39ACEDC30E1B777C6F06D3B893DAC73FAEEDD93EFE3346C6255DEE89E26D -E279834A7C2FF9FC63E5BB9AF74295CC5F8C6CEE33046B00DAB455A40FD74A3F -B7D9B4251448507F2463443E9141E68D6C244EE00D1E009E7F739AA650C7A651 -4901CBF31A83D7A188F7980E74F75BE0EBBDAF01F106293F5E56FE9A440E5CF5 -89C2C6FD9026198136C5F0B51DC53C878577C932E2B2B549B3FEA7B8D12CAC8F -B975965E6805C79A02A08779D78D582548412620F69F70908E351852CBE389B8 -A2084B98B072902E74E59ABE2E32531475866B3C5E515DD140B3BD06F77FE41F -8D7ABAD142B5DD71CE0FB171D93C72C1C113397D5C6BCA124297997581284FDF -3655C15DEF9EBEFB6EBA58153BAB51631CF70FF79180B28411419303B349E7B5 -CFB24E53E6383A11041562E4F938100EA504B10FE0B58D0036273D44AEA380C8 -D14901EACF5B826685E27B15D9C81F0C6E4581DFA876650C6F708A65937DBC9E -D53DA2057F6796D4CF06F7ACDAA3858386DB21B6E14CE1A4351C9B190BE38A5D -2A59CABDAA767FCE533243C6129DBC22634E979EDADD3B8E9B6C9407ADED11CB -E7DE1E57DA279A804612FF97E38F78A88B9A65186D33DE5043F2681518036CB6 -05F77954E61B7231819803D8DB4FF8DB67F56A47893D2A65549AA44BB38739F9 -C34A17A00ED72D004C627212B84D5B521CE8160C0F4D6836F02F7FBDA4F7B159 -94A7A9719AFF6F28060D6798C25325F9B383F7BEFB70397BF0720C9D4DEE43CE -5A278D83310ACE58573A5C3A8B5CBBF50727556FED673F0E6D3D362B9A406127 -A35F11282B39178A7157A0AD5E3F6B324D8C83805C6F12659EC333C89B849631 -4CBAECBD29AAB3075239D0D3840D49EE57C23AE53DEEFA123810371BA2F44EBF -C8DC4BD214933E60B17971AFA46F64389621AE2037946772D7357164850C7EEF -9454DC7000DBA7F66EBF61BC00C46ACFE18C346C984477181FD298E5A2EA60C8 -BDCAED5006C6DAE30796D7FE32FFB67EA010C68701A0310C07F97F04B928AA48 -7964C458ECC4EC69A47DE4035AA97F97DD83E0BB9013833154D013E84204D9B7 -FCFD0804760635839FB6CAD93935654EE8C9B7AC136DEE00EDD88D693A50FE11 -2FE74E9B91DF1B2B4CD1E0E4AB2533A56CC0AD18305753A244620CD879ECB18D -473DABE960D6ACDFC3FC0ACB06A42DCCA04D73E18CD6E53123869411140CC9BB -06F7B54717E6437979E88248F7364602F4117968131676F4B8B05AE44FB24B2A -517FD4A7E3FAC0848F01788425C9497445B09F50FAA7DD10718F74DD7EAE0435 -83AA8BB6BB68247DF6862EA85923F1FB13EB660D9F361989AE7D2F6E4C720D80 -7B3D28C17D150ED27A89B5DD2C53DB1C1FCFC9DDE0AAF18FEF819FCF7EB75616 -610CA0101EBDFE9FBF4A9A2A0687071331B07DB41E666F7186E5AA42BBA3D76D -9E2C0A1172F00DA496C9145ECB1CC5C900593C5BBFDB66C73B65A69B8E9887CB -7E8E4D4137123E9E22D1F08CB3B7CBDBE40A36D4C51FDEAB241B7C00BD0D2B7B -D493700B99FD83DAEBBA8E35A1B01105FEED52E133271E1F9FF215DA20CEAF59 -FFB2D74563ED4317B3C56E3F58F367FA2D285916CA08CE517EDD722E8B06CDA5 -F59F90BB13E2579B133C2D645F5DF5EEAE8A18D6115DB17DBADE038B8DEC5D71 -B71F9203ADBDAC8CDE2A75ED88219E4D32847F1D5B1C0B74D6E03B74CF27DBC2 -B4A0A1828F238B498664555F6DCB51A05ACB5F4669BFFF59D90ED267113C3CE4 -BB7AA57C660229728175C2E11D451C4F132572CA8895D3963528AB7F4B65E4B7 -F359DFC14A05E2211538FB21B4D0DC4AAB98F06AED736CCA3662CCBA0D937B3E -DEC8B155790F5A37CEC51BF0A85A309871028A67C2C3C451FED7FA0D45FE2437 -B1C1550DBE4A512AFEA4679A30FA62B0BD33925AB97798CCC88AF9F5066ED9A0 -818B1FD2A2954709907475074CAAC88363706F7C4AF74800974BFA1F0A080B34 -8438DCD198325C68E88D3579FD298ED4F6C747E0335D2A4218BF03D95E6ECBC2 -80A094FB09A5FB86923D79197F001EB06D4640CEEC20FD2340926619393DE5CA -EEDB2FEBE0818CE00B01ECB5834DB9395671C985FADC459805E29A7E640049C7 -E70F06036015E4C4D1F6EF105AA6D1414F6DDF186D2B751F3DAB51F03819A8BC -1BF747716A4B3150E2FD10C1FF5009739F7FDF01980167219D33534D77945B09 -1A12A93E748613E9998276569D1D97134980ABADCE4511795EA176B1F5358235 -909E52F8512E6BDFB95AE41ABE56D672FA606B69D8361438805548ADFBB35F1E -CCF286DD2C100E646AB14FD73A283903D0DDD8CD8DC214A665B117C9D263C716 -DA3460FC43621B9176D2E7E4920C4A068D6C13DBD4BCC1D4E7F790A8F9FFD349 -EB48FFDB1B70376756E41C75EB4956CC901C6901BDC7F3F4AE48660E59B7B3F9 -818F4D87D4D9DAAF84B4D947F0DA57CCDF44D2C03FC9BDC48B2D2311B140DA11 -3485996DEC121F96567B91F2FD7AA9B39DE9504C23A6BD69A07E00C52A5A8B80 -A42C8D10E764C3F9ACF723D221D29CF701E8CB168B50699BC434EB3793C19457 -78EBBD462218F249BC2CB3B97315EDF9A1209C817EE4BFAFEDFDA894B8808B26 -CA587CB7739FB7A91B9FFF302E727AD2EFE0BA46EF95A1F21A9C32B2B4F4FAA2 -1F7036CCAA6ACAF7440FCD1E571DA4AED838F9EF1007EF7B8248981B8B15165F -733A0B6FB8D697B5758FF0E632246938A19BA25F3D5594C7EEE79D45A48972A6 -8F66701041F42F42563CF2C57E9E9C173C365EBB414895045085951648719AC4 -CFD520A335DE30DE06E7D13107EDEA3C4BEA82335E6063F2C47953AB23288ACA -F9A9010EBB8BC97EF4B1A21FC6670A8DCBF67943B672F7782D3EF1BC773C95E1 -3523B5197F0E8920EDA0A2A4A857DF028AC0399DF5BB1E95642D39F8FF740370 -3C8E4E80F6E4A00CC55A13A6C722A77268F33FA16B94230CDF2109F52AC97282 -65ABE9C3BD2AA33CAFB4A15659737A36081C13D02F8FBBA8AA1CE951FD498D47 -3FF1E448D7655E28E1D3F07B0EA05F5A756073B85FEACB5E957EFA5E03C8ABED -088D7F3118CC190632BDEA2B646DABE0CB35B69369C888AAB955C1C41F01D4B9 -8559AD18A4180053B7E9268CF93B9763BA70C77A829AE89EF45B04602E42C6C0 -B9768CC5723E28652053FE405016E1B8F6DBAA629B78A8211BCD40FAEB10782D -5B82ECFE97A524374BCB3721B63707254C53A523120636C294C00F85B09FC649 -0E2B44BD08F8EF9F9AEBB3E81E96F921AEEEAA6CBBD95228CC6A5AED354CCC47 -34D8606F88420E963EF20049FFB86DDA1C41E625A80D55975AC5DA348656E87D -F959F4D94FA23125502C9CCBDE79158D00FF6B8AFF1E0C2B43F5314E693CDCBA -9D643E9DF2801F52835E8586284247634E941D0079BAA75740D33A15E776E27D -7356C1062654690D2B2896781AD675273E4E179894830561351EBE2054280EFB -4BA5EDD3FB10763911AB574C7FAB6920079A4C7104DA53F564F40376D068DFCD -60003A21D7EF05203396667443355ED6D755FDD063A5835079C8B7FB2AFA58CC -21A892FD89DDDBFDA976C49A83D3439EFB7CB42AE298DF55AA04FA236DD4C84E -7E2BF19EC08A12612B7804B3A1CED52922E0AB7F80025FB2BC7CC7220C7E66F4 -F2FFFE2DC97711C85D2A854B379BC82A29939C500DB209860593F6A7E9035D06 -B4780E45489510921809980AA0 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/UniqueID 5096651 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 120 /section put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 -3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 -91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 -E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A -11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 -C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 -D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 -B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 -93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F -10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D -7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF -B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B -491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB -F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 -019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 -915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 -356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 -5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D -9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 -3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 -FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 -720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 -D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 -BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 -7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 -DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 -AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 -A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E -0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 -AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 -CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 -0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD -5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B -5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F -E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB -54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 -E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F -A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 -4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 -4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 -038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 -B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 -5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC -B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 -A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD -2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D -CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 -455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE -FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 -16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C -16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F -483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 -67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 -3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 -1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 -93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA -051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B -8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 -8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 -6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 -06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 -84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 -D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 -DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB -0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD -8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC -C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 -754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 -1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 -CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 -1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F -153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 -905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 -617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 -8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A -98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 -53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B -888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D -052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A -CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 -A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F -07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 -B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 -10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 -CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D -3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 -D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F -849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 -648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE -84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA -2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD -2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 -9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 -B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B -D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 -135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE -EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 -C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 -7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 -4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 -9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 -050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 -3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 -C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 -843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 -CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B -B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 -3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 -19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 -FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 -17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 -8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B -CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 -F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 -1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E -4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 -2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 -9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 -E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB -8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB -BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 -04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 -C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 -ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C -4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 -84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 -C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 -09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 -D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 -56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF -035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB -FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 -CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 -B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A -F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD -CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B -0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C -B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 -33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 -4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D -F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E -2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A -CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 -88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 -17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 -55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A -A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 -2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 -406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 -AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B -60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 -C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 -5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 -822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E -94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 -D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA -343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE -894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 -DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 -DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F -8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 -A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA -DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 -E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 -DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC -4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 -5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 -02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 -88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A -60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E -71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52 -9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016 -A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44 -AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829 -F1795501020D5FF0AD25584C1D57D87BB7871ED859BFD1BFEDC15EC6ECBB7011 -67E52CC9234CFE6188BDFD6D28BA6BC46D3D6DD5F92C92544B9443A6AD81CA17 -9B78F6601C9B3EAEFD7B3DE8CE8A0B1844BACE90971F4795842AA110AEB35008 -AFFF3EB61BC66C4286758FDD6456130C434FC887858BB213A9579F4DFA8B08A2 -4E5C2A52C50B26E621B95319F58A396E71CF6CE1FE150CFDE951C5930A164117 -D50F53563BBED7E2958BF8C44B94DF155CE49EFF889A72E80FA91164D07F3918 -3E8F90ACEF29867634D20799F3A8A13A8B75D965417030450B5F9212D84CE0A1 -BDE1320C5EC0BE67F0498F3AA48FB1F0C4CC62AF5615A65DDA620D66F843BE89 -F17C4F525076B548E0DEC9A45052D08ECC498D4BB0C17B222A9AFD298724F181 -56FA4E5EB2576F18769C14C35C25993D -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: SFRM1000 -%!FontType1-1.0: SFRM1000 0.3 -%%CreationDate: Wed Sep 12 2001 -% Copyright (c) 2001 Vladimir Volovich . -% See the file COPYING (GNU General Public License) for license conditions. -% Converted from METAFONT EC/TC and LH fonts: -% ecrm1000, tcrm1000, larm1000, lbrm1000, lcrm1000, rxrm1000. -11 dict begin -/FontInfo 6 dict dup begin -/version (0.3) def -/FullName (Computer Modern Roman) def -/FamilyName (Computer Modern) def -/ItalicAngle 0 def -/isFixedPitch false def -/Weight (Medium) def -end readonly def -/FontName /SFRM1000 def -/Encoding StandardEncoding def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] def -/FontBBox{-189 -321 1456 937}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 -69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB -CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 -F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 -F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C -EF25195F68A2A98170E48759F267FE330B57DF626EBF73D2779A4A6B462AE6E5 -19E5878939A488F2FE1094A76925CD24DAD4573AD3CF34E426708CF06E7EBFFC -BEF5595408106E2189F418D17AD510ED5B6A528E8902AA3A5F0FF52AE3DEAB07 -32F06B63E28BB88229E046F4FF8A356BBDDE82DF2A197F2E26CA00D5594725A1 -83A89A36487EAAE1AC312C929CDCE50722FA6C596C261E4D78D6C6ABF77F5CCE -0E410ED74287A0F201140F8D9674A7AC585D3CBC72CCB824F9E1CEBD08AEDB3A -A4015CADF471F7ABD9B0F0AF73A8274FD441BC1988A61799856E4770155341D6 -516CD0E25BFA59B67AB7E0571DF3F5BA70AB52137D9E6A79EFADBE70CA05AC8D -991D0895C8FFC747FBC0E9A7212BAE6560B9E2B64FFCC58112E64A3B4CF7ECF7 -595F51C34AD1342F5678FE1E62EC5A389CF04E82B5F832914B91F921F30A7E32 -CA3919F57A2D9DE844CAAAC0DC751C255C9916595E8C9532E7A0A84A0AEFCACD -83EDE059FD06EEE9951473180B517F25F609F347DBA012AE9F004DC3C771777B -BE812787C3C50315D67254A384EB65F260943C6E16B2CDC64E15EEEDC67C5544 -8ADE9981A6867405E46222CACCEF79F9DC8674268BBBE1EFEC2187A75FB7FBF8 -CB2DB2134848DEA2F9CED443DCF561E7272B38F830871B2A5196A787924EF556 -4B7E9093ADD414ACBC10147944D216D351CC744DBC13B0749FD0A129D7C47983 -7FEC7FDDECB3FF4166FE295814B8EF751B79196DF6FB2F28CA8CB00807F682E5 -1F37B8DBFA6963E77ACF4A16586D58C87B0F882FD7BAD0A5173202958267F567 -6D66D0511364EB31556C37BA1973151C35046863FB4F3F5E6434479279EE110A -575DAF0531EC6A4D83FAAAA64995A7B97207724374CF283D0FEE36BBF7582F5B -CED7CEB37EBAFD8206E691F7D0D17C63527AFB2AC537B47C402716FD6C23FE57 -22BC8B95E994FF0C6A6469AFD70C020C711DA6F19D4C46B9DBCA6769B6FF2733 -21E813E7E86FDD3101BAB642B1553FA2642DFCDE99A053213ED3C70CBDBBF19F -C743F1F168B5A21E570C8DF7C108FEEEE50C825EF2714E974749A7317D535316 -2D369F1673DFEFFFA71E41E520792075672344DCEE4F9F1687F0FBBDFC25FBDA -0D8A6A1C3DAD8BDEEE8161AFD70C020C711DA6F19D4C46B9DBCA6F9D79D26E79 -9F1D26CDA56B940E651D0D4D017BD65B3ED72939301FFDBAAEC98AC821AFAD33 -5BEFBC695F2746A01CF510E684C7D589F29C9B5E0BB1C42C9A96843918976FB4 -22225AFE3A3F92B85B2D1EAA81D0F1D4BF85B1FBE305A01C6207D95271423B66 -11D3879FD381D567701AF1B0B0749E05027D5493A806A353E3265170C00076E4 -86ADADA8AF511EC5FE32E5834EE0CA7341F16665D0EC4DDE1F80C894D3049706 -CB5FF8EC37092ED0A93D27A2EE85982E48AAB7AFA36EBB74CE59EEBC8CDC41B5 -A08A3098954BBC19648F65AD5241827219F9BF72D4813A30646A85A3E9C558E1 -31B17DD5EBE155667B73C135EDF4295FA4DA7A1C9895AA3F6C1F61BD658159C8 -88E89E3E48BFA5BE91BD3DC050837B89D74F7872C976386C425054BCA530CF6C -7A33BCABA8689139753CED4E4AD623924858E2D38A7D4BDE1BC5D5EB4F85BE37 -AC869A6CFC87E1FCA5CD9D3B850D16B50260C9C30CFA7DD1FF25580BDDDF4106 -F5E5BE85533BE7D472D65C01DD80A54683E962767BDEF178B162417A7B7522EC -6B606CF186D582DD972C54BCA767918EC9225192DCF9AF7F4409C06926511480 -479F0307DD5A7B8E16D3FA14AE4D7C9AAF0789516E44D9E4187A63CE0397C28F -3414FA7B2C2D61BFCA9492B32DDE38885072B38149BEC1A5CCE0C84A4963D11F -2E56709565C8818A538DA896944A83934003AE6EC6CD98A11CF309661E2BC60C -143604AF24AFFC6126699DF619A02E659CA508BFB7697284F9D1B44FFCD31970 -F8CAD34EEB68EA6DB154204ED9DCE3E7E23FB72C2692041C4FF3728CD309F215 -414595B073EB8B80508C2EDC1C4DF8C38E89CE919F2A837D1397202EB314ABD4 -09CFD87B215EF9299486B7EE9D4CBEF1D42B2D5DF35592C3A28ACB384F4F0C01 -CAC17DC73091C42F7AC741CDFE7268453DA56BF31816E435F38EB8C23C5093A6 -162863EE9B7A881D2F2352217CB6BA4B3F58880A43FD7A9F5D3E2CB24D42FE33 -605E3C8345BCAE8E072279A50EBA843179D2A95808D1CE24CF78652958EB8A30 -ADAC715CF070A47C44BAD93D952A6763841D6D5207A8BDB9FF4385997C0EA83D -3AD039FE0720013D660C4BDFC2FCA9D28A6742AF910205C9B62146E86F913D6A -CD406A2E9041682E2C5192F197090EE5235882FFF6C169C9A3E1E6D2F4739971 -EDA2684391831CC4E37F45277B62E03769C06DB70A2626B6321ED398C79220B7 -B304F5F744EAF5DB260B14B3D5859FBE06922B232B0AC83BFAF49AA95B7C0C0D -3060AF32B145FE7CDB50F0C24D0AF11A161E21A6AB4CAA2CEDB52F9EC740EB57 -78E39C741CC32E2D7F209C93817387E1008E89241DEF3224534DFA43673A0E41 -90244B84241A7F524982C47DF34CB09E310FD1644CE582EB7FBDC53D90EDC6C9 -D0C2AD47B679838CD6DEC2BF89521C1664A09F906D7D4347562C404D0FE57EEF -2870E0A797E0EFBF9FC06108C2D3CA63159A0300C7F03BDC40678E627A5EBA53 -AF2DD411BE8E42D4B10E9085C6F770F2704FEDA818B81260A3A1AA4B2AC1083E -33A7800BBDCBDABC57592D173D97119C98ED76194C28DF9541BF4E95E51909FA -21A965428B0FC127B39D9A2488319CABD93BC84CF44FD1B87D580EC68142CFAB -9D75C4F6D6A73FB4C07FA71626373BC973423EA18C82839F55A8A6A0FEF2F923 -41A948A8F8DD351882D0FD4A250382DCDB836B55F212F19C2A5C008E3C422AD6 -A6011E641B73BD918AB2A143C4142FACF80F1249C3D953D33B6C8CD92A37EB6E -ABD8263983CDBA107F2C8E7A85BA09D427BC7A24441BAEA7F51AB95C11C210BD -B0C8F7D62D2446A2E1F94FC480077D037EA8DC31714AB4CFAC640686AD6277B1 -E978E94B1CDD91326981634512AF675BD1F1DBD790D61561AE5C0616226C44B1 -E472DE4B65DC86690B13EF02D74C31D8C21F3E56A714E0F32D58426AE5F0EE8B -851B995E240815E2A866A4A74D6EAE3F5360559EDAF5779D2B205C39C40D9E11 -850734F78DCDCA0C179B7644517394AEC07CD03845CC7EA6AEC3594DA32A4877 -94284ED0FA153FCF1F373CE79CC401F71407301BF2EB03C1ADBC77754FE919CB -EFA5C9999CD1C08162B9B486E52E15F7B5FC5500684228382F709FEF2F0E2FA7 -C04FBB62C5383E878AC4927C4ED480DA135D62E500F1CFA744FF88838E08E36E -D9A71B21499A87C0AD1446154D1B0CCBF61A17BD7C840A1CAE04C0B973F1D907 -8EF3FC556588F36CE870E720C069E1FB5510EB663BD4F4259E6596290A1977BC -CC8AAC45C94657B38B3D9CB2C1B402F33EF5020E537C383C054339C0B59D107D -1B47D0FAB417144C6D8E04034D6CB673308AAE1E717301AD77008B19009B3A8A -C75365FBA2F62C1B30E247FAAC7EF825F484170B90F4C84ECCB6E989D587ABB9 -715C492B257104ECDC5DEE84CB467AD76C2C39A3696712B9E797567533E6AE76 -83889239262AF3879A559E707AD15B7E245CE288FF2EDCBFFD84BF9CCE9E0398 -07F0FEDA4B043F9162C39E484DF8605EAA3705D32122B0282A3D3213526C1223 -4AA260E3D8461DEBEC4B6B172972FA8407B8F8AFBD91CAD98263AEAB5AD4CA15 -D3BB121D97C7395A2B076F4D900E9C3470E16B056015C1D27A302A38208B99EB -0B9BFE812FFF13B922F1FC0A070251AB09E2FA6A38AC067DDF9287A6DD0DF043 -72480238C3A58142A856E41F55E78C23332C8C45B0179F04613CECFDC108FDCF -E182AADFA502B592F29F4ECD69FD347A453EA719304A34AA5C72F2ED69E7254B -B077FDBE8CB8A5FBBF721E34F0139932876A8C1BDC0BB8CF777B6D4BFB54F373 -A9CDFFD3673734CF5BD8D26B30D7AEA555822BF5FD6C097D80179D2EFD2936C1 -B63D2AA73221F6C261FB223E55574BC6C5F188BA6CD7E211F0363C070B8712C3 -4ACFA5BBAFC4AE780BBE824682F67BF746E85C18EABBA5C8859118DCE36A4C67 -AD7E76C12BBC90944D371843611D0BB625E227C1394A02184F9EDEB92E92D518 -71AEBC24CFF248EC622A009826CA2F60B0166207F7F13475CD71A39B3C32BDF8 -A354C9CEC1281F967337DC487299AC4C0D7FF5DA27B164A6E789176FABEAB6E0 -BFB6DF84EFC5830D796F810686720C7300E1D7C5E3D6161FF626461B0D0857D1 -C425BB6FEC2597D681EB4AC7FE97768FE3268CF65119A1C563F00FB88D12C24E -EF8E6265DBE574300079E65214FF64BF79DE14D5021FF1F7A2B6AFEC021C3ED8 -52840E35B2EF8EC566BEAF52F586DE03A1E87A876B6089B8FB12422B0DF8A4E2 -4785C27689BEE6AFEF3A8A1EED73B68826B15C388DDB60F5B7127CC969CCF460 -9576ED3B57778C0135B45F94E83B6107150C7E075E43B2CAB8609B97E6B3DAA1 -159517D1805ED8C87D4208A4E413A919A1192B6422AC8380F3CA98AA0501F920 -58125B62B30FA33DC7471C53D6A975354A103E7F7EBDC73F2A3B22A8BD8CB8AC -FC88A922EA237D0913B251DB0ADD125F38A16182BFA3C525BA13383C7624269C -1DCA788959F10A53351BB61EE0F7D9B88CC93C4A05C660E5876D3E85F53F6D24 -9EE85EF5D1A629260CCAFE322EBD1F9588ACA9B0683F0E4E26CA876A37A89795 -E58F9AC8D492046291F076FBEC3EACD81F2AAEF1880655C0CDB8C5A06FD483CC -E175AD7D7524313FE3EB67A241557DA2826177001A14EDB8BBE36315E7AE7422 -537E86BB09C3EDD6C2784D902D6B246E690542945364E6CC4B9D012D9FB770A2 -D654F8148CE1526CFC7290DE41FEBA409F51DFA84C1430E0CCD1D519F1550191 -583EF27B1A6CC6448A4C4BF05681143CBCF27EFA0BADB256BD057299F792A4C0 -9027AD134781131D4DA202512D16C5AC7A31F723EDA98E72DB5D96F3E3A02FB2 -D3ADE2358B473264D82EE03B424FFA559E31987D2B980CDB9138B87A3337C21E -270FC43E3204A6FBCBE218962E37B87F4847224C65683F6B5B894C2039BC04EB -112AE678F69F1EAE5F23F02B8B93E97B355E324A6F55AA6598E315902A97B728 -B56B22AB4C04302A2CC3B826CFC339D54BD2CD3B621DFC1FC54D17CCAE19B9FE -8F76F505038B55FE1341DEEEE82BBF82342DFEBEBDD0053909FC0E73A441DC9D -15ADF1CEDDCF4C663FD18133BA6B01AB0CB41BC0DF5937CB785477ABE9874EA7 -668E8BA6B44B1C33992E97B0E803E2EA3BBBEB1B32C0296CCBCF1BF1F3388182 -5EA867CF7FC083A5444CFFCA340D89A7AF9B702B6B01D0C7684F9CFDADABB26E -15CAD0C381AF7450134F0784C6D6745AC30DED5BD339204F37786CFE74A43B7E -6B716E972FDB8AD62C98E41501101AF50B501278CB1E65ED7F447D701B48B81F -5DFE38367EC3ADBC7775C590AA47EC8BF5E69405743F56EBE83CF4FAAA711E7E -84EE00761CB99C98E28611672B7D85B1B653928DCDA5CEB0E5E36A3BBC2C5502 -E960074098EE208170447306EA4D4E2BF509062926B55E7F75E7FA09BDB80A17 -9367F7DF308F12BD9C984EE5269E22B1725153A8338ED37F663D8A185F69A767 -8FCF4727DC836A72132D1CA61DA08877FB0085E4584E589E242831A28816092A -B5C7066486714D05D29C940737ACEB4102F3CC493AF5BEF8A307841826D8B89C -C6D898D250DC6A85C3EF4C86B8CBC7DFF25A7AA818AE3DF1743A172DC778B71F -64D0CCDADA09A077839FA7EE598772B76C72F09CD044FFCCF494D01487E6A39F -C0971734BB62776C4EDD373FA3474D9B6ED36626C93D995588ED740BB8937D87 -73AD94B834074C2AD9037DED0B93FA18F0D1AC01C613D997B42A5D595ACC5B37 -6A425B37F9D9CC8530BBCBC20A2332C56824BB6E7C6101AF5B4721201CD20AD7 -EBFBB371B81F69BF1CC3417AED6CCF2D72FA9ED9B79C21B1667E2748D7E1FB25 -80C019563C6909B64C934913357BB4DDF2E772175273E6AD3DF7B7BA6C67F417 -1CBA1DEBB862E345E09059F1AFF60BBB6D5192EA6486DE4440EA9B780D682870 -6F18005670DD492FB86C8C3E80DEE3F0D3A09145E90DC393ECFD1F0D1FF1A494 -D7743C70D67FD09717C6DF992584C499D5C2F475051035B174A1B0C3CB14AE9A -61C6A3EA8490EDAB3461A1C65ABFFC54E058D3E91C9B924FB42DCBD46CBB1F74 -36193EAAD4C9BDEF3B2631F8E518506118D8394D3C4E95364A01AD3186824885 -F26D10BF19A25FB52FE7FB520AF9A9092E291F617F1E8ACCB4FEB162BC519E03 -81CCCD92B8606041ED5FD67646FEEA876A3AAD2947EF117AFA0B6697324B0DAF -CC039402F240750657977FAEAB374299C2E9B0F4B2F48809DB1C7394DD39A632 -56D34FB44A79F22947FBF908AE07875AA9CEB548E54EA57F452E3896BCA6B0C4 -DC037D5FD25FA65D96A214E3614CC6801EB478FCCA8CF88559925A96E6FFDF4E -273B44C708E86EDE45C3A9B18AB5FAFCA8A80DE656955F5983E4674953253E0B -2337E08B5A1A4199CC9D7FF6F1C1CCF90A4BB9A217A130D3B7C9D4BB8F738CE8 -E686759EAFE88A6BEEC50E0704F27927A854234631E806863CFC0D6EBE884BA6 -DB391153F939FB1E9803A07B47558EB409FEBC95E755B0C17065C0F916F43427 -238A33D70B1ACBEE3C571D04138428ED9AA90AE0D47EB9AA39ECAFE5A210304B -B5A456EAF97B87CB0EB1B6200350E3B9ED16596CAABB2CB8CA3E598CA752E257 -7FE988887B638FD046DE70ECC18218B9B5D0E50CA0065FDCE02FFB4874A8036A -7ECF9576B42AABD5CFD3E2FB855CAE60CCCB2B1BE8C3803C8C57941FDDCF672D -299A933EB6F148BB7C3D61066CCC93A58F6EDF32EC908D93346E2FC72612019C -CA43081B667F8B6D1C3CD574544745C640E0A70908EC73B81E95714793D08A72 -47DBA5336E6EEF1C51EFAF1A5E50151B0A3BBAA8B6AAA751ABFE802349FAAB09 -8DCC3B2DA44C8A9F47097547E3505ABAAD4474BE2512183A96C577044CC14073 -847C45A8C94644767DED16E2DD7AAA550E93CCF5789B579190F177AA1D507199 -E063C8E1F6304F982C1C374A22B7264B2BEFB17509CACC9C39A3C152CA0A6F6C -22E4ADF5B4E3CB7147DA237B6439575C23953D5B8A1120F688E18C410ED9FB49 -C0B5A4984E5D647E64BEC8314DECA894C6AC618011E948916CC451F0FDB65C43 -DED235BBF30B005D70005AA35D72311B35B564F30AA1F268AC3846BA4F16F1A3 -A945F7D24379C97C347BE7F593A0126FA10690C9260DBD8815D319AF700607B0 -7FF1CD17B89D5F13B4126192FE536911E684C7D589F29C9B5E0BB1C42C9A9682 -482D080E00960473DD6D25C68AB8F0DDF594B4E91F381C566CF9C76964C2FBF1 -7DDB8714A80D19B6FC3A41389937E5B2316F4BA911AE4FFB0A7C6442AD1DD294 -CC46C962B61FCAE106241C80A1E685100824A14D0997DD1DCEE34274535EE57C -BE03C44D9B4E881F6E7DBC863830DA7E72E57DEB9A2350E19579642B5A8FD71C -6B6362466410CCDC042BABA22921CFE0497494A35168628FC5BC63343CBEB9BC -ADC17997831D98B6452B9CC478F58DD1B49864BFC9C9FDAA8F861BB04842F006 -C8AF17A8080473BF69CA8BF46959291A879E9B8EA83B9D69D43746B27718181E -8F54A4B51A49C44F4B200EE16303368DBDE0BCB10E45D3C9E115B691DADA7898 -7127BF301D1F805FBBC2B0A3D093805B9784EB3FFD52113A07B4F1DD4E042B67 -3C3735B53A18412A376398A46621EE521BAFEB079C8D314319E81FB289534F6E -AD97459A862103D2CCC4ED4925CC1A998112FCE61C1C0CDCBE72A0E14BF19B46 -31F1869EE10F40D2FE4D4428E388229D7325DEB5AC6FD3C60A20539137A9BCD6 -607E25DC313491562947C92273E55B4AF2A738C2C03D05018F0CE1D8272BB220 -D988BCD8C42462489D359F82213E9D5046B24B2888605828AFCB80D174E3E4A0 -851EA03255B9ECFB39FAFBCA6A1E9B80816B526F61C50ADFEA0C2ACA8C2D958F -D9DC45C228A8DAF476A00A93AEAF086AB80689C2C00EC7226DF86483BEDB07C0 -2338AF26CA3EE7B25D42BA4C5C3612E3206F440659F70C5B905E1FDCD1B2C8A9 -566FCF5C88927336487D54CF0E0C9DD17935372163C9D7C93773BF0BEDD07179 -307EAABC51F425AAC0866A00F81DB82B439C1D786A6A6171C2254C0C87D25128 -19A26FCEAF1F0DDAC1AB92A4CE704368099EC6265CCA87548BF00226EFC9BBCD -CC152596F0A95B5EE60502B5D08DD228B0A05AC886A7F399F4767FD1FDEBA907 -22379609D3824A76A540F89B5C7F34567E93DC7267453A068D94CF7ACB4B2643 -DB1E234415D5C34226855B511453A952D4300AC961DCC125BD4A86E754EFDA16 -BCA1054A95B09A2795749FEAEE6F3EFE676522E95315ACC8755EFF2C1A1D4F08 -981397321244DEE92FCEA136F517DB61E1D3039E5B276614E30A7F4912F020CA -6EC27CBD74F8F257304C2950E90E84C0A3967D8DDA377B3352AF777A1B1E43FC -1CAC9C13BE788C463EBF3BCCB2EB475A9BE17EB08A5ADA04C82D5A06F6C77FB5 -58D0AAF789A8805F8D7189A8BD8D5CF0D71FAF511946BB0240F44F5A05103564 -B183077B4A384AB9E02C217C4E98C9FE82972965D74DCEE3125CC2F22EB648B6 -99D1676B33429253435588B749C98B80C94DF87D954FF40A24FA21A2EDC0D22C -7D47DBA5336E6EEF1C51EFAF1A5E50146A7241683FD5C85EAFFE33959A117F17 -6E24740A2D0E0AA2BCA5529C72A8E2493D8DC15FC950D9CBEFC9AC174A47437C -C4A06BDA932C9FE1BBE2A182386CCAD0BDF77AB63F1F98B53DF2E6926A0586B8 -725FAD35C862B912A9A1EEAC1933496992B2BA2CEF3964F5035716C5FFC37C09 -6E9E29BF4BED766BEF1DEA20C4BE1B5AA10B887365BE6BE3CDCF278181DC4CA7 -397744EAA89F919658C8528B742B87CF1B43D1968DA4DD8A6184CC6F537EDC6C -F4428446CBA9B40684E28C14ED137B983B1A5ED673DB178FE0B0A2DC35B5B7DF -7107BE17C107E32BF73F83820258E869FF3B2A422DB6F3F214B3B94A26D9914C -344872DBFC2E014B2852AC88D4C024EB3974C26588628A5B1028DE6F768B0B3A -583DB75106DCE52C14771D6FC00ABB73A8AAFFF9DB786D7E7240B2CC3FF51DC3 -02D4A39CD8E1B14126211C26BAA768F5A9F93690EAAD13ACD5A89185DCEE1189 -F070340C4B3ACE43C28028ED2099A4A221710F245C7DF4DAA1C5F2AF7AC801DA -9F249B07774C64D3539DEDB60DA652E2542CE695ADFB7CAA107669EEA5C46FE2 -EE971C71B66A9E5F57A611531F44120A0306308F1017345791BE01187D075731 -4D17DDBF8BD6E51017CBB9BE14AB037971D4926EB73EAFE3B1CABABB482532E9 -F0DFAEF79F7CBDD92563CBCA6C2C6B50905C92286C6E64516507CD42FA169D2F -D026E09A805BED38F519E42A2903384C57BFFF54E7FC6373399C23B63238252B -3B7A69483B2170CEA4E9E2AC5CEF9F939A79327515A31DD32346A04839437B78 -5EF7082EA8A7DA9114F6C73207FA46B320AB68A367D1FC76296364094771961D -74B39533FAAD78F695DC2D53028F18C8F005173602E03A07034BCCC153E3BF85 -9686F6F09A2346C7125730106C85518CD8C85DFA38E72C8A4D8C462D8E42653F -E1B67833CD25D4EAD6C07D2DA7DECBDA595AA03EB130C12D4DFED870186012B6 -0FD0E369E294E3DF4F25220060FE23E1DD23A6F4AF5E70B13F6F6CA317C1A735 -1FD138D194D67FB179A172CE41A84F0A02D1B93D7EE4D2DE7B6799061D86AAA6 -CA373D543736BADA33D5762A71D368BA08C9F096AFEBC5B2282EAC89791D1421 -4728D08DDD71FB6CD5DC9EB9E491D69A5D39FBF00F1BD7F807F680A6E45C06B6 -85D9B93733B9276E3611A675565CF5D7C8D514095FE4487251BD1366E4190E3D -D8CE459454C7582A8C0893F629D6044761F6BC693258128CEB7E5AEA54E4DB89 -30BC9E9B0AA5E268385070E6B6D9702B7C21F5F8B72FB3875C001E76EC93A0A3 -2E854275497E30AC3F2D05C451564AD392300CC4933DBFC87ABEAF2BFDC1929B -3886B07E4F363255EB92F6A69012CF997B6327D50218E2E0F0150E8F5177E12F -FB0413462DBDB8D300F44232A2AF75FAEF2BAD2290BCD058875B34AA23432618 -53876451323A6B9C07A11141C8920891D0F79B11DCDC0A9903CCCD68C5AAE4B2 -B7A6A708F88124F11535117931D2011CD9ACB450EBBD2504F8D229B13E1FFE1D -47AC52F08DB31C0E263A52DCA6FA3788BFF62383A90C15B0E47F7A526C7EB97B -728D03D40DD47373B2F039ACC9440DAD0769F65ACAD1AB7F466603A4E82CBEC8 -82E9ACAE27783E583C4694CC3AEB8257896BC944D2C8110004057BF9DE96A1BE -1AE5D4C34139973BA00CB10996927B3ED544AAE5E21F4D9D3444409FC9537F05 -4C1C60614D701AE41D3E11315D0D6503A411756AD8F129D952A8533998678417 -97563D118A88C2EB0FA1C951DB0ADD125F3A06B7D6574E8217A7D2BBE4184493 -FC6CD49359FBD8687DC93083763D0264E4B82391D964CF7FD5BFE84A48B47391 -B1AB66CFECED6DF74C6A2ADDFA22353A0A09EAFD6CD51D1C3E4A0EB5D0EB0AB8 -6E72B8F384934BC1658EF313A78EF9FE4B498DA00E281EE0537B5F81640998D7 -5DA1A96E38EB16AF70F63D378B020D9BBA2F2750B03421C5F46107D3FE6E1AE8 -726336A0CE48C2D458AC060E041BFCC4831A048ACA4E3E340A55A5E872D3864A -224200B7DE4F47BD97BCDCA95F0925498FD290D0115268BD31695A11CC6BFBD2 -9233C4903317D173CDCC9750DBB35A99BCB5D94031545DDC45F7DBF5191C5254 -40AF9D81DF82909FE635AABB7D3A3EDBE1B8D69562843B44CF8E6A6C2183EB49 -EBA5856FF1BA4E4FD96954773F34E1E727FEEE0979D03EC726B4D55AEB1DF9BD -61D064B0937A1115DEFEAD6EF053D8CC18B040312B998A51CB2A1E10C8A19387 -0923FE8A1C55D04F89901A8391E60EACED9B0CF4312389FD49B2F73B15AA06EF -3D0A58FD1125624B25BE7E69ED691C6AC39E9A827C0A5BB1C3D02380DC9576EC -EAF1CC6C414F461AE32BF4355F860128995EB7C8D61E464BEACB41D4075C7D3F -CCD45751A096DF33C6848F5DFDA87D2A315A09B88C3CA4F7927A69F6A4973668 -749143D43EE2397F72135049059C7FF570B81C8B7E1B140438078CE9686EB5EF -C8B134E7077F199067CDE5993231E7D7C62B91CCC4B5D0A21DD5CA3A83023E06 -0292F9EACAA9DB8D45F1EC56D1ADD5D7D4B3A3FB4DC1AC698863266FDA695318 -0C6019B9E8428360BB09D4DB7C2918986F398DBD8AF0B88413D119D9392249ED -E7FD7F91B7959794F145B15A36C9B6C154BF1C1BE1745695F1DA047902F55E4C -CF716855D279920FDC5873E268E65CEC8F039080423EA4479F285BEA7F35F21E -C61DD5A2853CFCBEA94A0F91003F410AA42B5F5DF6BC7CC63F07429EDEBFC353 -ACEED85F65524D36D5F9AD0026521621F41AA3D7E7FF51C55F5DB0DBB928E45A -CA61F6B0E2446522DDCC0EF37A3FAB3C9B6FA0C248F98C0672B0B8F40FC33D0F -1A05C2437133F753DEF7B3FEA31C62E54B10A984FAD0311BF204A31D3633306F -98A7D26E985456765A2E398170ABD59BB9712825456388C53332359B820BE151 -2B31FEF4DDDC1EE3837941C0D95BC57DC99E5612041D759EC64A33B0EECF528A -B41F60D3260FABFE7593E11940EFF64A7A65621CF733A44F8FD226BFC865D7ED -AD5106F748AEAC673B9A3CC07CEA9151BB39D89CCCF380085F19F63F56B8A5C5 -A2BB71A7DAEA55F6EF21A37F6B14CC43C354FB4E9C3C41DA75B3EDBBC2E8AE95 -B1FA4C2F65DA207A19657B81279556A07EEEF9688AAFF6AAD7EDD6FB4289EC57 -7BEF4F37042C855D604956545BCF99915951A663A73C0175AA093A73EC0C41A6 -3D4DE17DA33B2DE921B0AF5AF8175F9B2CE57A7FA1FF6AB9EFC88354867802AD -758D16B5792F176659CBB1D8828F4377FFC20B03CEDA4C842ACF7E978CE2EA76 -73139B02ED185C5F23910DAF380CBACF04EC12E1B36A15E9731D8ACFEE6641E4 -C5F8560ECEF1EA18AC2F079A5A8DA728538CB8B7CE69E2FFAFC93110751B59EB -D319B0B1AC6692D9CC06F195DBC92372FA72839104629201DED5777F11E4344A -BF91D975DD427C47DF2E86E9D5E3D3027547F82894C6A0DCB9E04BAE62AE56F9 -DB92C1A65927DAC1E8E5B074239CF3A166C3C3BFE5941C85C242046F3455378D -AA02A55E28DFC40144CC9C5846D703E9B044052117FDB4C7D6D472E991B643E2 -F05EE48ACC97E1673210439C48570C51ABD441F2AA90E40EACC17E21373BC973 -BEBC2CC2B5CC76CA9FAA8B3C2F0D2865018632B42602CB3940F8C0D3C5187D95 -72A5463EF6D0CDD5D0301B8D7B52EE6ED6B96C4AA9861BFEDCD09D8A4A921CAA -97603AF46CF4415C5B744FAD4D632BB23F86EAE1B0295DB72601D74C12EF77E6 -448E040D68CD6D383B9D93FD9C8CF7934A82C720BE4166434207F479BC9EB2FF -69E7F3079B6CD66D8B330B24A05739A6089EC3F6C4E115B5BD5895070514E8E5 -513A1E8A8FAC4890E1D1405EE5CA4751FD7FACDCCE3EA9B72109291BB73DEA2B -8D22FD6EBB39E55DAFC1C94CF72D16E676767D07C5D64FDD900BD8C39AC821B1 -B553C36AE6B3FDFAB69683C6120AC5541CBEB3E402FF74FA95665BC6BC84A676 -E87AE3D010F24DAAF4A235E8607AD153091804325EDECCCB7BDBFA7E97845ECF -8EF3B6A3D13C4693044DB5FDF9C2B36E67C5F3775CAEDADF087F8126C6D28845 -850181CD42EF2EC8AAF85DB331890A74C6B8C95F76977E198F032F7940EED0C3 -4F6D95D7FF795482F7EF532A4EBEE3D909B0655EEB3D3F70A98FAF118A0205DA -B8816B14A3BA5E41B5BA06E197AEFD2BF6FFEEF482842F59F9FFBAC6391EEC22 -202DEBF0BC70A92D3B64D1FDF723DCAEDF3CBAA7528FB63863F88AD36C39363E -DF50F26289C06E1D550E4B5A45C9C58403594A63C81A889E9E2EA7C796D7FFB0 -FE98888FDF6C9841236414199EFB82B1D1E2E7D1F87F069DBC611A41B5A5BDB5 -3A9752A46A69BFEACE2BD3CB1EC9398900960AA8741CB60C8E95C309B6E0D4CC -330C8F87EFD2A91F77BF14C9A9A4E3F160D2EC4C5C58AB549B58246B7F96A93C -8201C812B1A69014378C33A660729F9E2E1A1F760498C875EFE5093FC266EB58 -50D333ED1C49CBE7C4DA2BB6BD57DA5F643F97B9D8336D40A60E388C405F255B -1AEB6A15491E783B389678BB7F2CEAF3188350D866D7541C39D765EAF2D4D238 -2C72719067286F6F70BD2D1AC262019BDF629C518276083BA82348893BB5494A -ABCD0020FFD3FBE4EC8FA718D977F909563D56833CE0E5AB8C547C662B898F65 -330D585AEED767BABE21F7B50B04B6F7E0A0576350ED68DEF618B911E1AD17E5 -B6ED645BAE914E3C26F506662A9A2DCB58755BEF7A9D45B6C583192843A71361 -A28CDF1B9CD0F3F77C1370C8BFE081832EFAB5813E8AE85D3311E5B6EE262F03 -198E0B8F82D7979E31732E676EB53DEA1B1DFDA3ECF14ACD9EB9258E709F3607 -307608F4F1B2E0162FBEC7BCF7B574A75F2F6ED58F26AE6BE96C46D34931B4D1 -566B478E0D9E6DDD321D55E00AE1D954EA7E966F5CBF8BEA36CCF55C98F1C793 -E55F2B423B99B07C8DDB7BB4923007B9D2BC965832803E347A3E9F093BC6FF29 -A066BFA47B7F4816D0568CFE3D6FF8330E2BA96B04DB2FC9A04234ED01C6865B -A7B57763218E6E04D79897CED74EB5CDA668D91B89BFD4703B3EF8A52BFD2B0D -73AF1352B67EDF6DD029942C0B8F56A07C3422190A3FC56C9525FC4DBB672882 -A031A274F2D597E9D4D629DEC88493BEA6BEA39EEF22DA7715CBAC3C6E4FED5D -34B47DC120CDBB67C4B270DBC8A09D56A027F2801FB8B18634E806AD80973806 -8E7878898C64529179DF9A162FD4A49C1F783A6172A1F73B7AAA8EEA65942911 -30655FBE6E34A8F8C31CD229535DAA3639B351C8EF330672C958459F4759FEF6 -F3AB2DB73E296CE5DB4AAFD79A87CA7435DC8A6098EC6BE0A1C2BE7CC1FC268C -E0BD513B1AA7737B95800CA8EF1A65381063BD783CCDA519B1B3997620BB2A47 -6AE7EF629FDD3578FA02E0F2A2C0F3B3CBF18EA141EE1DEBE1164BBA45AADEEA -C0F9F751F09E527C37172F8FC1F8663F7AD65A525DB0DBB928E45ACA61F6B0E2 -4465238833E7FA112D321954DC91F8178303A63B4F4161F7014C5F88DB62865A -0148B1C3DD513E5D23D85B1D215753B007CEB7A37F71B9247BDE343C7FCBD09A -5F60F7F1D3AC6A0920A764207D55EEBFAF54DEF3676124586D044E3DE7C80E7F -089BD49AF829EC0737FDCA5985B75428D8B3AFB379881A43D7BED3235F1ED829 -F4EB85BBCAEC301EB631A73BDB2182202D7B777A2E5FB9D86EF8ADE49FD22FF8 -FE2A39122698607C186BB6F60424A22FE676D9EE2F6C36F6BCDDDD4375327C26 -B9C2F93FD51FE8C1589E0BCB26D5FAAAD54BB465A4ABB828E39E23CEE6E6E8B5 -0E5E5E5D776ECC1C763357E43BAABB236C2C8E6C3D519F2E840D067C175F433D -AE4653C788F5A48DB10AA77AEF255E71D0B75477491E3943213EA7F9A750572B -7FF67AD02190763821613AEFC926CB0AA35F5EA6B6643BC81C9A8B87D420A22F -22F16763F13D4A8D6FC3E47285F8AD1C23070B5C1B8F2F9EB35A95B1D76A3450 -31105EE90C397C3F20F4C0FF0CC77FEB432EA06F8EB873489E6B86CB0E9FF10C -1A7CC2752AFBB820DF1451922877B947C9A6837C8438973A47816079551B1439 -DE7693DDECA987E3AAB6A28410FE28E604C5D835E005687AE177CE14F73F6D9E -E7061E75C6D3F70DD0A5D66BE2637B56035F3EE033C47CDBC6A7ACE8863F5EF4 -F77B0BDEE8EEA36FFB7FD9E45356D1D31BE6F985F5557B0BD90A0C7CC7D49465 -94630B3ED4E988DC6C45D22C3733AB1DF83AE6635D8329D42F674AD767980A7A -1290CF8214B6DF1CFD292EBD1AD543D221C830371E40CF6DE194B9C5A4C97ABA -46B57D8FDF3F03D9C5BE25A61D56D5B321D24C1D50CFCE0A60FB490B810E2D6B -5AD420BBDFEDEDB6DC7DC54CC0022AB885D227217356400EB19A0ED893449EBD -1FB12DB30FC715863658CA6D8673CE0ABB18CC41C441B6F53A3C3C64EE366906 -C03D96A1682F440AEBF350AA433914C96E6189E0CAF12C59C67C3157C5C5C65B -8E24B9E010C86F386556704DEF05D05EDCBED4CBB9E7D46577D2E0226C730C00 -4099D29DD860D1FFEA2144E2ECF1391E8DC49D0B64755E4ED9C556E570DCE685 -5BBBBD71E15D3C35A805726E45C62AB41EEE04B388F0C44D1292417145916C5A -0FF0F571EE5F5CA6C20F480FE97472E840089B35400059FD292436CE8BE875D8 -20E6F0D143ECD761088B7A47E5A29D437ED90253B397EC6ABE41FA7449BD527B -3CD06229C194E9F4EC64F8F10DBD73993E9282374F99C252E502CAF45ABCF71A -8C718CA01D976A606E0317688A1F65B826C33D4F3BD763CC881F9CB8E4189845 -7599928620D1E3C657FA3DA74D15F53FDE191E7E4839D484125FB32909DC5EDB -0170BAAF30495EC91D2BADFA3B62A55B1F53CBBCD5BCFD1ADE5A9DAAC3075501 -9C9FBCB26A721BB01A236B15A7C0C270EEDEA3061803AE2CB43A03BAA4575CB0 -53735938F31B6111B0037BDFC5E917837F5F183F421CF6B0DBA68CE7EFA7F416 -7D7685098B601E4B6D2E00FF1FA932736E933227F4E3A139806332E9A96544B1 -C6DADA476B3B9C532FBCC1A21555EAA4C3EB604C73D2DF08E1830924C4928AB2 -39E1A9F65D8D6813C34D0C6F788E19174A19BFDE61078551D77F1D0D9CF099F1 -E4CFBDFFC914D00BA948A759E4068FBCAF6239EA0DD5218DAFDD66C1B7A599C9 -EFA349CBB6A3629ACFE939C25D17E7C487EB1FD2DA4B0EB6B64B9400DCB02133 -25AFB7B15B8053985FFE296C94A6A8965FAD2A4EB1DEE8C4EEC6551F8E13A35D -69366E14A6EE11C5D2478FEA60FE7FA11857AD3C415A294F17C6CEE5288E1904 -289C0C533A2B8F20C90106230E937E52C8E4DDCCB65AD4FBE2396ACFA1BBF315 -625758E3070CA6CF6F9C46576FBE0AA2C2A0EB003BDDE3CB41777B63A343BB35 -9E8C07643B47FD68C6988F90A8434D9AD697FD1AE6471F2D4A07A52DF022F18F -75D166142EFABEDDB9A7F685F62175AE5B76D56839D1AE2F1DF5B79B566BD9A1 -AFA5D9A8CDB1C665FBDA452E310ABDEE48FA37280B14DB32E0742DF56B77F282 -1F0E6DD300CA06FAE4441A45248CF982454DD037ACAC23670DC306D99AC3D3DD -83E73DA13EFB45684DD28987AD46485684CC37F72A5D563F58C405D3A6F3D5F3 -7449418DF367B89D68082D63DAAC3B471F9229CF955DEBF04BFF094641D62CA8 -2F0618D41176D3818A39270907F89C96388CF99D80512194E9A4A9532F06FE61 -9DA9CD3B08BBF9D4FDB3DD56D9FB5155F9447CBC31A948E77D0E9D2927EA8B85 -01F6C663DD41CF6E982793A078053BA9DB95AF93414006D730FC4FF3CF48FBAE -1965BEE7E9AB05A9616DDDB609E752C2A82A5D774A775DE37463AEF83F05077E -76EA2A12E3A0431CE0A478783B2A55A6489CCD0BEF8093996E2E57073A41C56C -C4C90544989BFA7046636A9712F782D2238CA808F817A7149529D21A5EB6715B -A83466299CA9E923AC9F6EF33251F88FA439E6F8E884B8AC340C6138ECAD36FF -BC47FA0A849510989893EB8605B9AD73B493FED083BA5C8DAC6C2695B9ACE98E -7530C41B81B657E8A9659CF0AD16827E7883BC7422B095C22961BBFDA8F035ED -C4B97EA8C3CA0052E953CFE30BBDD67EB5474176035C124D1C0D8FC5C93919B7 -8EF6B7690795E090355B81E4ABBE9E480C9471E036DF7198A36E6546AD46EC73 -BE429720CE5D6DE8B366C47623BF68D73CA01BDB0161AB63BF2C9F2D616A524B -519F6132813EC71BAEDE7354AB53BF751BF89BC200307B433C07D508E018DD79 -DF6AE9CF394BCDCABE30152AAD7B8EB6FC8785764FD1272F895ACB888325A72D -8CE40D5E698E7B4BB8E6A5F231D22D40D43EF51D5D48B4B3874997FE609BB1C9 -AB544F5EEF3447E53782E5395FB225B84BF24AB849C93DCE27D6E4F9B5C8B25E -C602B8C5263B494ED95732E9F09772D59ACAAE6B6B2EA5F7F7574ACE3CCCC75D -E690CFA51BB4E9F4BB469684DAB734D97B8A0DFEFCF86FFAE8469A1D4F730B6C -2C674B9E9C68C227602E47D5A1DCBFD228C3A88B0B9A4D59BEE5A1CC3968EBE3 -F2D8D0EA28D17C1A03A10386EAC96140B93BE21F16B582A90D0797D40F48236B -8CA75F0423D5C14EBA375EFB9FC1233B501B5DE1404D54B012D73BDD380F16EE -76180DCFCA364D5F3A821AE382DD8DE3BA0113F20FD7FF5B693437753805BB9B -AE56F688DB0FEB06834B27E63C3C0AEA6CB013F05123A7ACDB1458A5F28610B7 -579CE6DDD8F8E0536FA8991B561B8441FBF6A7A5CAD6E08022EF695FC5335DE9 -163BAD747FF07BF83006E45E011BE4D1122FAF89A179BFE707521F8B7AA14EE4 -E989C69A9BF2650731674C8558933C69873126235D6630F89DB0EE27AC118786 -D7B54106282283A60C929FC6B25275EC05BC64DA16C8E3E9C725B444338BB074 -0A00D5C9D5A48CD9C364DBA69019E516BCCA4193F48D84A861D8145EE859218A -D50624F1627DD3A30F1264EDEDFD32807459FB463F06A349C3E5BA802751D85F -BC1EF6C3F11D68AD18C410111A18402315C5A9AA582BF4B058409CCF247C11F9 -0CC2BD7DB143D472FAFD7E90FD7E99266072AB7F0D356A5EB24A6ED211C90590 -D09622832313D30BE881FBBB3E27CE14881C78FBAB20BBECACA95B3FAD1BC3B6 -07E40345180EAEB37727F9CD8041315F870EDCB680E93A3C6DEFA59692A69702 -42B952D5CF1AD58B5273484F86688DE17F4159144D50894465278A1773069408 -4F89F2C4A795D1E129ACB1B1B317E1A55DD1EA84C45966166BA8D15B77632F63 -3A0D5297C6828BBE117CABA4CFDCD599889B863C60DE4B0F52011354B278AAE3 -E05E6E0E31FBA0E825072F170375B64E10F96A0744D72786ED5326A820D3F09A -C1EE26F70FB8A12D8DDD28A429F2623D7654CE176793F57BF1F5E23D3BDA132D -39D5AC3EC2404236A706F32A409DB16D48A9ED4F9B9A826FF79EB2842AE4FC45 -81DF3620CDBA08A87326555D686B87F5A5107E26E14847839829494AF79272B9 -6A0801FA7B750B2E89FF4FF31183D8F8BDF5E8690CB0EF156DEB38C4F70DBF6D -7AEBAE4522208C5D182DBA47AA1FB27A0279DBE47A295F0DB4587CCDBAE5EB2F -9C3839C82B328AFCBDC3C0AF8B9E58F4D89836555C9EF56B1F4971DCC6CFCF9E -43117D5675B0DD72989D05CC7F02EEEB432362B00951F732D0BC931A032FE889 -37790C62B28FD5C92565FAADBA89E1CCA69852A3AEE0D9C075E2823EA380603B -5787D601B11354D440B0C64ED7C41C6AA25BB7F0490A8C3E63E1F3385D519EC6 -0D1C9FC416B5491C11572E3DD82A06A75E70B13FA577D4EA53969360A5F74ACF -65781A3D9E7C9A53CF7BB37EDA53B638656E3DDE9C587279599B979335540CCE -5E685920E44143D043D5B9371A7F2C2CBCC43967E1BB28AEB41FEB86FFA0C173 -585867D7FD87B791FC7CF59D7B56436B6082366AF70B1777A622432F0E229A75 -DDCC980F5B20C8DFE376AC82B15030E76B42673EC365E09A46152BA2E2B9B889 -4390C691EFF3BBEFB3EC4F110477FFC838E510BA979A2EC83C35E69355142BCF -DB79C3726882681C44DBC7B05BC427A1731F5DFEA9C05BB67BBA321DC1363EC3 -A097228BBD5CE877DC097473AF34C668D8743825DA4BDAF0EA9B59AAE74D6C5F -4E9A8FAA5E5403C3E38C23AB65B26D3C0B582E6D371704ECC92246E522A54732 -DD7357B9DD911DEC894E1E4DB968217EF926DDDAC6DFAA9FD9F53AFB4D1690CD -A8CA8F19A3109C1A75589F200EE97D042EB71981471E840724F3F3FBB2B576B4 -65865085659444C722E5E277C8BBD12CBD16153AB408FBEC774EE581A5F86BCE -B54FB1417448344F3836556B3A14921F0DF459A2814013D04E9B454F8AC9B8FF -240A8A185BD4D2138E5D1E9034A370488A2CCE0914D80E593D3272C7C4767EF5 -979AC25AFAE05E65D96898EAEBE30C5AAF9EC224A86E0F5EF8D0896B0965FB6A -2C91DCF08533348F245862E46F8F6BDC91F2FB32286AA6353F42672ADF311141 -2C20539CEBA8ADF4297BADA607E48C2B14AE9FF43E863366E3794A50C4D6C1D3 -AFF82D12A6E12FD08CFA83FE4E460AB15D633D80D139F1875719C48BA7B84D1B -5EA70FCAA9CF5156708847224313A84B1FA903E8BB87D4168A4C098C00A1A207 -B0990106E36F68C20ED571AE4AB86C6FDBFC45094ABF6CAC5EA7B4A74D3DC71E -B8D078B7497408202DB3048CC13BE711D9C54F9EB12C07A35A8A92558FD02609 -7D52C3188E45F3950C2C86F9D9A69FD4BACB2BEF2226274EB67B1426B03CF204 -A07219ABE3D5575AB41AF743E6A3A9E0D429D84B2ED88DCCE0191019690D1D20 -7EF99BA34E71A21D8966713879171C1787EF6E38698F3CCA1722A811315D6353 -36694F597494F2B87D691928DF8209BFD3DF83D9E858A9C54EED3E6FEA9C46FA -47254800DC889B333DD910ACDA675CFB557D167731DB0395C9C42B01565B075A -901EFF3528E5CE38BABCFFFF3405EAC4CE2FE4BFC8E450FE371E57BEF0ED9162 -2BDF929B80F83D1C1D1B1C3D0C24F51B4800ECD5F19C4A81908FCE3F2A4E0E0F -723C0D9591A4DCF433DC3BF7EB8AFE93E07DAAE92045FF1EBA0C9E4DFBFA4E36 -00C474D7F1D19851C8452A4F9AEA3C4D54A1EDCF8246F90F2734372BC4DFB29A -E60A9019036E6EAA1CF650E738445B2E15D2F67613D576BFAE3B4C29BB5F5599 -AEB2C5FE783CD001A38622EF912E4D8F08C63A948301A18860F7170A43CE445C -D694FEC3FF15AD1F1739DF248E1FB26079C7CD1C3863A94E673EE85049BFD4D0 -06B4311E53E153FE98D8617281F893862DECA291F383BEA35F480CFCFF5F4ACA -D10CB600D303CEEC585A3D80F5A3576416266999C4E2DE32C5628BE0B291FFAD -B8EAB748A616A7D08BC69F4B9D83818DE37DA644D330B373E5469DE6F41F72AF -A9A30BF5950668B80831832AEE3FB47EEB6A6DFF9B89AF47F5B4E99D5517E626 -235E1E6F10162D59A983003764DDEB208FDF343E71FFDF5F6351688C196A165B -3BC95F41E00159C2632A6C05AE421140E7755342D47D3D7AA4B8AEA1BD5AB846 -D0C1EAD9C6DBB04F1EACDD026BC3A09EF21E7BD2B3FF0CCCF544538AA158FA34 -283963D166FFDBFA67F9811023FF9DE30EBC7A58CA1FA8DA7D18594E6930CD7F -02BC2C84B4D34081D8ECD14CD40939C2C1BA621B0F63A280D3E89F5484F38AC5 -BBB45092E5F59B08070351C7B95C4A301A970E12C56314EDC254D7AAB8C359C6 -6C6D7ADA541C56812675AC95EC20A27B716B667C1F0C820A092D33D731D27500 -D61E6749527ACD758B9A8574137F3C1E1C03F845F2C449E0FBBF7F5FE56026DC -A108785D37FE52A0E198207667CA649CAEA3B9BE9771ACD171D6CE170AC59C05 -950DCD07979389D9C8D70E1A2875D32780B66D6822038A11BFC60E7B0C7D2688 -A8C2113712C63465DA4CE735F76641E3AC09CA69630194A84276E8F189255004 -36774AEDF9A2B483BE149F8D6CD852804E736A107580B6B36F81AE12F9CDD054 -9B53A68477D10827E993F5CA47FAFC54B916507091217258F628BCE15419AE3A -D5EDA15DF75FB9DF4F1162B5453B566B34B27FD0AC1CA4EF3AA6CD86B7F23181 -514C1171857EF7CF75FFC0DB741406BA891B34A673BD88709FEAF94F4019429B -60419D15323F61E327E8A5EC59A8F6CEAF1DFD123410A8F90483AF9373C26A81 -9CBA9639823947FB42E2D037F6A0D1A487CC073F5470203E61F3CC78D61B024C -97218ECF3500CB3A7178145731551C9C83C5FA90549C90CFA8E49E7AA97CF2A6 -BC2EB4E39F31F0DCD2F3597378338580167AD55D483E1724DFA700F7A519EB42 -43B9B28F819E161D2F380AA37A26EDEB6D6274935179053D9E5F8094F31D644E -9C28DB823EB248734BAFF5922FCD7DC9455FE48B4A67D891F83285EDA376A583 -27ACDBFA56B5D30964D64D7FBE8BB2A6C1AEF1BBA02106C18BDE001D3986F157 -CAE0FBFCE11B1D6820807212C661C98B3C528A9EBB0B613DA64B0FDF8F1DBE69 -4A620AB0FF2DC9E387EE468E990A3229356855683E7DAA363F45D5DB67BA8AF8 -468ABBC6B1C05A54DF26D33CC2FE4DA3493BD4B32111D98518B3570952323F0E -DE145556DAC5425C6A0628B08472FF28E48E4CA1265E1882E1980F8961370D25 -6A2F42D9B24559B0DAB9B5C6D5145670F5442418503E73DA897CFC4682ABA026 -018AD948D16FAD2F75C3F1B46D96DBCBE68FA93955127EF557D4DFBB3DFF138F -793517AB4E6E41E7B979F8D6FF20E2D9830C6819CE79189F87BABD662B6A2DBC -F4E91B620A7FA6075FDBA041C6B8B72B6E9357FDF24663A3A9487988C66E8BEB -CB8F5FEBBF3FFB5D1597C05C73427642C1208FC6082DC00A00CA6A2312B45EF3 -1F1B177143B4ED7A910B262B28A021F96AFFCCAB73C8DBCE294E10439A98C792 -9A7C06A041E562B9D3328EF76C05BED4C7BB3DCABFDB6A9037F9EEA1789921EA -4AB166C9DE3A73AE683B2E8B6A56B8008524F52E518B0569AA27FB4D8D3CA77B -BFEFDFC82F5A417C6A8CC0D492E6D0FE6D3E045C900C6961F9798FEE6D1E9294 -573C7399567C6DEF9BA34ADCE9103403A49FE1553070FFA9BD213969662126EA -EEDC5E923BA922C9D8A409379383C482311C53BAA7B2177CD6D09A35986D46D3 -76863A27764640A77FBF842AF80CDB7ADDDA72A614E3FB763A150D25696EC971 -544338BBDA8D2FFADCA23B0A1A507C21CB868640FE084C48ED09E4EBFFD13C11 -EA9AFFA2990F096C928DCD2F8BBDA9A4ABC8157C8180FD4B01CCBC48B37C4829 -A84FAAC1F2AB9FBB056FEF3CD77210FA5B8F8D8118436F02628971C0CF54E878 -19AFEEB26E45602883B114DF5B31AD673389BCA33D845E39A436B0E658E12432 -0761AFF0137321C005D566DB3D37F8EB5B27890A9FF16E6B2BB0E8C556EEBD2E -1577F2E428B1D1ECB6C7FFE53D1BAAB5C3BA656F554D573E73F50ACC101C0121 -DCF5F9B076C8F554C2D065C55579E0263C04DB2FB20C254EE7B7140AD3482F25 -C34F290D51081B6B7364C8D50B02E2F0F03B3B07162A609D2C64A1FF4912EF56 -DB93391F91479199C79EF43285D174C51FE08958598A772C8FD641AF8FB560C9 -E8C084301239427D52F13586F167FA3372C2E48E7D2F22F037E046434B1EF334 -29F6EDC5D588FE135712E4F26A7298C9F57D140CD1B2EADFA17B204DEDE712A9 -19B746BD34232952DFDED4226239A6716A2F9EC94B6DF822012F0E2DF0E348D1 -74C35652C040F703D9C2B95353CD6115F4B66BEB128AE1B34FDFC165316A053A -CBF84A83D3A9890A10B713FF3303621F584B3C945B41904DBD4F7EE2A98147DC -0A68659DBA339DB920C3E9DBC05DA683F6465EF20FF946778BE836BD952C9CEC -0A60DD366E758AA0A248DD12C7F714558F72180EF2C2484870657873DBA07142 -7A7575598DA644E9C040AF9FFC52F6E30739A8F21697EF340BB9FA3A66930A2C -BF9B27FC6186010778649C6F7B4A2F5F42977D0AEFB154BBB06879E9617516BD -BB31792D5C80DBC747CD820C5D3DB791B8C80C04BA5045E9DCC980C3907940A8 -D24EF82CE60F2D7803C2939688ACBD184103535A001C11831A6C904C64F6CBC5 -E25CC8DCB77E50B8C65054F784468DABB5125F56A2A8610D2E625D4A6450AB19 -77FA63F353D3069B60B7E364C1A5DE0CAFEFC32F05CFE83CBB87400F1869ABE3 -DAFB3EB319E45677588C059DE939673C7A6B0153284A3A43AFDDEB34D73ABEB4 -D05C0693902D6BBBA612C3387CFA52D4E8D125AC5828BE3F5C8EF758CBE89B19 -3596ED93A424331F4DFA165BB07580562FFB579DBC30B3EAD05CDA06E2D1E49D -9573BA785663D5E1B3D32BC743848645FC1ECC4D182610CD3DDE8B2B1FD66BB7 -72F3348766CDECE21C461393B1B20F3D27A82197A50418A2F2C53B9927130A61 -FF5104F12DC612FA9A4E366FC04A0A9519F3AF1F02004C00D2468BFA1305FB5F -39E1AA628AE8EE6816255E9382A34CCB456F14CBB6D9380110070F4C444A5873 -A203D78E2025225B60860CE5270D094EF53CD66EF0D6A6734271ED718B10B9F9 -DAA0702EEE522774F8C0EF74CCEDC0774759DE4AEF62D0A898E3D9289EF8A21C -11301C42D3449D771DCCAEBB5489B75559353239D3E3BD3BCF854A025B949AD1 -0402F64CE7D55FB2E3D324BFDC162C7AF6827D25CC128AE327CCAF19B83AA90D -8E0C1BDEDD4574484DDC30DB5ADD9188EA22AEDEEF4595A5D1E30793D54B8717 -9A324119AEEC95920781BABA10B2EC7806C9DA21363173FA0D572837B5D3EA86 -E2F2D61F42FFCBDFEE234AC838E251249F90CDEE409B7B5CFEA247B3D0FA9B09 -EE7A69E9CC4FF7EDC29DF36EAC32AB2DE8FA07434EFEFFA50812FA5822D6D217 -0B1C9679AEE4D7677617269963A38FFD7E89ADAF54C3C3F2788C597F80AAE88A -75732DDF6E58A8FE2E929621351620DB25B8F69F6603E41C5D24435F144D12A9 -2E0F368DB54E55E5683C2B00BBBEE9E6F0E0A3A23BC033BC8A730516D2A6E205 -96D411F41EF20D0D273C05EC2665219A936D1351E4C7F502BA13F255D75F3040 -E78289A9DE233F7C820809F91A5AA336B4B5544BB9BEB350A526AE2FE1AF4A8D -571CB1F2A0C98383EF9D3F9F362DE3C813487A0033CE43F3DE4788294707EF9E -6BD9EB22B99C2C67616CF1692CD6A9CAB62B0BF149F7A3D8F6E5A3027CA9C5E4 -70223BA442205CA6806F38164A3F26F2482FF73EA93DEF3F415A13D50AB2880F -E598C43D765B9321B4694E813CF0B1BB62741BBA0A8B1B89E7FB97281352FE4B -3551269401BE0964158633C72306956A20EDF41BC278B492F84242EAF18081CC -75F9E54E502F0C0AFA540047ADE503960AC2A978D811B217892059555691EBB9 -400F9307F40B1F0435CC873FC94F75B9B70C692D7011AA99B07C60A1CFE60AD1 -4250AEACB21C92ECAFC2623950BF06F241F6529A13A0B6DFCBAF87AF64C33A4F -2BE622EC91671C99FCF2FEAD0AC21E8015B568A023AE5236F4EFA40BDA90BCCC -7790FD932EEFE1D03AAFE1FDAC25E244A5DCBDE59D33399C69E1C6C1853076D7 -459155A09997C89E5B5E24EC4371567189D03EE33E7FCDFAC88115A7D883C45E -330055E5CDE4F7AF283D7C28DC8637F95F10DFC2E5F763E1D21771BF2003609C -69B50E1A61AC0068D8F3F8A98AED54A9BFC3B4B4E51038DA96390833AB28E6E3 -F58BEAC48EA80B08EF819CEE42C4F96DD717AE83C879F248CDB9703EC211E745 -65897656B3809D3A48A4BBB350E290F5D5B78A1F643EED55BB4AD4A0B50FE111 -7671E2C8FC3FFAB0AC8D541CC3C56C75C443220DEDE2B1D7F78A23720A1E50F0 -659F1BD13B8F6A13D61B3293797DFD5F3D7ACDB4C52E5DEEA26C999A7E68487F -836FCF35E53128803E04E9C4F69565986D79A4DD0B8188413CE256C7853B45CB -336AB539B0B269B5F183A051307A0E37F6ABF64C91D5E171458DF3FB48C55CD0 -304A51DB0082656D03018F6EB0F6973280F141C93F8DD99466F87463C4B55828 -385E36269DD1D06B015728535E602E781149DD0E354E9C5934EDE7D49CA12B52 -779DED1E3BA644B590C213C2525F967D234B27B1F34E3A003754D943EBF0187B -564E79C5D37EC12B8CAEB7328CC87393AAB58A9193AB5403F57F5C9A7C2FF211 -08534F9643B3F9533EC4CC3309D514586FB6AD161D294E9F55CDD21515FEA55E -74304733F23B42ECBFE145702B74E42BDBF0DFB01F655DA14D93E81103DB8E84 -20B8101F8D5B8E3F909B780C03F75539056E811015532BF5DE9007033B17BEE8 -25E9DF06A64D23431D99B1DE541CAB436178F55A0A82271FE970250C4FBD0FEE -35F2CA2A256F93CC0327D7FD9142A868C4BB817EB2FF2E7399F001079456F3F4 -36B05B6772520ADD3CA3C4313C3C454FFB368D0FAF62D81F97DB55731F447D2B -A19966C48A53D5885A383B6B1E30F1E2C0185E2418C387935BF5A7EF8058C1A9 -0036B3F38FB4C6415037AA3E9D406DD37DB59EB80FDA5D9F8D6B03E176F0B633 -3F33040635B7C256CCD4868EDC88379925DA0B93BC0CE03E23D3D480C005AEB0 -6D49C9F9853785AF6F3BB50765D674A73AB585E72888F2CD66F714ABCE2A50C4 -5EE528EA125262432AB7F6EAF963307D0D5EBD65BDACAE98558ABA7D0BE48C28 -27FB1A64F779E0B9C06FF13F00A995DB0E9C2784DE9C48EC873AEB560F3EB3CE -5C09D9C28FC9BD3B49B709BA8821B4A0454B4B6F061B449671F59283EEB003F2 -62A9EFA38050ACA655C6D74310930204EE46C58553778C1D29F29ECC271F4733 -3ABAA09100A9F2E0A99D53CC02DF3169B7FCE3FA7B59BA5C0FC7327D55CA9339 -732308498EA899BB7838F75B9C8E99BBC85F6F63BA4F1AFFE24B1AA4F90FA00D -E007CCE120F45CA11D70A6E06D2CCE6BA22BD02F62DAA5186D5CE8B8EF18B469 -D80E9825C926611AD47ACBA8EF0F3D16FA308414D6AF95E55282F25F76A975E2 -A3537A7373BBF7DAD0B8B61CB772BD5EA3659CD0724E4E187946B596C8CCC11E -9D4674246EA6CDD60D64534BF0085E4250837E57FCCF6DAC3B62419D9AD7B072 -05FFB475C87B4D45C067998EF3215A9E37FB0AA796F262D1786754D9E913107C -22C8BC97A0E73742F79D6ABD2C66CCE64C6C9AEDA81CBFCBA8D1C016F5C7A931 -633AB0EF0BE245D0931E53071A86003F9837C142E53B3D4FCD0CA44E4A4BF046 -CDF448593D2D85F7F07B1274544AE57960A6BFF34EB84EFF3F7A687C634A1A33 -FE97FC48A5D80C7831E99A3571DD2DD5796DD61BFC05F5E4FFAC100ADE9499D8 -0361577C89D25A4D337EC77776C032F6FFEEF4826E82C52E6D1702979ACF2A62 -CE5A88421A084EE624123D6E6A95DEC36E780A9EC9F1331FE1F5E9D954667DBA -4ABCEA60ED770E3DD58CB359ADFFEEBAB9790E91929F05EDC38FE7022574D7EB -22E556404AA74516358D5B9590075D9C1FE57947CBCD4C7EFF1C333C5457AF84 -992A754B0CB4766B0F5B858127A1B61BF2B3AD62683306993B396FBB0DD079DE -96C84E76106A2B476AC4EFA40880EF47EAC0F5E858DAC1A9B99F8EB181B989CB -03F13D9AC22464ACAB3537DF786E510A45AE7EA4B9D90A8332B3E5ABEA3999E8 -AEABF59F9EC0FFFA7B7F78B4CFB6D77BAD9677D9AC71569F80100AB7A3B8AE9B -E862807D87074D5130061E9C02757006F787D6B49AA625A5BDAA921005BA4F85 -5EECCE30FB3D8DF4BA6166C8A89492DB62224A0C29BD564A1244691429FDFD36 -F559BF5FB22FA888F78599357D0E723A692C9B349312A96A8C75F49E43247104 -18F43A634199B92EC4E7013AE4081786A8D4939B7318F416CEFD093A8D8634E1 -CC10D8125EA0D2DC3CC756FEDDAAD8994A969E02D9F6A835403077EC77D2FB5A -E4E1C2B2CCE6251A2CD94487CE5A4C1F3E7DAC460E764A140B9FC1E4085ACBC9 -55EB562779726F89A67570E2FEFA2AABC0E6552D33DAFC08D2719AB8B98ECC3A -05FA1C90E3498322B8B26E02707FB330137E898E9E506F7A2A6DB52EA23E34A8 -B1AD13D1A5D0A91F40F8FD9D09AC48DAC8B0A3F3D6F5F4716B4C0AB3A2F002BF -2BBD53698333FAFAB8D3F80E05B48A9C3B772750B4EB3FB8DDCC514DD3E2D01F -C17205B08F6904CED62F6D07AEFEFC0C9B2E6BE85F7FE444B6AFAF60301779B9 -7331C94C1F8B0001255C39D653E14371B08678978B4794E7ECD9CCFD5D934D9C -4E3E8BFFE9D3D1C077E9A1797078BF583187027EEAC2F99197211CFFA3A65230 -4564F3552334F1CA8BD9861F640D36FE47852934C4264F3673A582B50290936C -8983BD4BB9BE067F6AF6AA8759AC4A8A3267FD6393CF9456DB382F2F9F3821D3 -C0579D91DA414382E200D05621970D3E5516719C3A0572249F8D5371877C0434 -42D71D6FD78EA7EF4AE676904FD9BF23B30568108DC67FF8190ABDD587FF04D4 -A55D3CEA088DD86DCA852E6A0F9FB33B6EA2C3E751CDCAC1E210CBB78E83A785 -146CBFCD3C7DB518E1D78892EC4A21824902A487E9A96E554088A2F9F596B923 -0A624C6DAA4A20E73D3BD5556DF76D4906FEE9D753451B00AF1E1D2504219592 -50DD2BB41F053A0BBBD09CDFADAD67A911EE31D678587D716F5D2479D21CCCB5 -EA00723B60006291E5E2947F0A2CCD10AC4EF0DF4000A1358F3285578A0791C3 -7381D1D0AF81587D700299DF0F4A5032BE80665277C8999CCA1891FDAB8D3E78 -43A024A4FA96360B626C007D973503D0F20A77084D5A96510265E74517B52EB8 -3CF1B8546FFCC2C23F85122E55889EE0A83C7E127C47270BED44492624F046C8 -6F9F742AE75AFD14F6EEAADBB45A0EAFB24F63689919A2C3455BD345CDAF3983 -DB46A0FC48728B2B88A1FDB39FD2B8AABCA784AC5AABC91F7E2B549F5F3177C9 -1FBCF682F1A38E4723B9862FF91AAF3532A4A27E9E0A00CEC702268707BB1864 -B208EAF9BB9814B69A8A8075D67A4F4AD8113B1622FE60708DA5AA3AA60E428F -C0981BFB2449F4A16E259B56F9888FA6B2365EFAB0DED5569B0744351B71469D -4499CBF7FD02BE4C6A85CBEDC10DF237C85635A9C1BBE0CAD05428D5E2C98D65 -D81BFB7DABF55470812E118F3A7A0A487D6D2E07B6CD4BFEE64810657D33D09E -89D59519A4D5AC86B9267AA05AD1014F83D2ED254ED9DFA1915B1D33840AF670 -F34B4E545CC477396EE20C51FC2A0A8E1D57E24495BF4D09F9388F9C601EB560 -BAAF0E6D0891A6594231ABD3D6F3C4F795A6217876A3232EF8D75C0D4B9DA132 -B9E717B868B063DB6E3B1EFCCC3677CE2F877073E92FAA8F850047E59C31CC66 -7201265071FE53EC268F8C93F4B4607ADDE537E86226B6967AE2A544F6F8DF84 -118C0697B40670BDC52F52DE8E55EE31D853AA2DA391FC9CC811D3714DAF5FD8 -A79944792171289D8E0654950B3C67DFD2CC95AFB41BB8C31C5F09DD2345CA5B -3B878B3899996F1DECD4C9A4DBD849EF0A63CBAB4FD7B62F5AAD85EA3B6BD2EC -90D607B4586EF50BA66E01BE3C5CDF4875B00B7914FFAC3DE80322D8527A7A4E -F8432E5141F486924613438884B3D8ABA4BAEFB68955E4C09DFC2F513396FB9D -BCFBA400069341376AB98F3B7F796F8EA7CB1855F7A04BB140A2B7CECEC7BE80 -2A5E0250FCED075C83B662EA5CDA1B627DC8E5BBD7827218DB6C59F71A57B7DC -3AAA94ABBE8A7E722C3557F1A9F877BBC69ECDFB2C22A9B8B2B0C51DBD9FF2C4 -DD16A00C9390A19B7320ABC521A89705E22E3CAAF1EA39524DB1B10562869AF7 -9B019929A5C648E59BCAAEA76333E52EBA03B167D518F8D955D90583459E6611 -3DA6212756C819C613BE40C29A58FAE9835AB409CC660A87D2FFB2CB3214F750 -4A1E189B0E24B0B541496B6C04069803F7F8072F940D3B010DAED32243220B27 -645560A3F713ECDA4B46F34E34D71E5C7F459C5DB5FF8F34BD5F768D42D3C430 -3ADBAA347AD11143C5A8FFE9670D3F40D34148AD71E2677ACBC4C5E70AF58AA4 -AE728F096976C0C2BE634219B3945E16AFD291559C41C4952028934352F35FCF -21B6BFEFF2035062B4ABCAF40E376D488C219918005400C63384817EF68EC86E -20197D6947936AF736FFFDEBB5E33A1135226BD652A150D843D331AF77F0E649 -0E39AF1A6A9A41E0B8A93301E49C2154D85B74DEBC4DFF06C479F3F51305AB49 -632726607B5501D2CD47EBDF98A3D3A8CAFBE306E83E31798921B5691EC160B3 -300BD035AFBEA931FB34DB96AA0B51EA5D610F59DD306A876E81643AB7835BF7 -3335B25A1129CAB953980E855235ABF5F1FC13F162FB2B2B9CF90F059CDE8A48 -4F938EA5EA631E4EDA7A63D91281F5C29B282570FFAF9E569C942B7033AC8FDC -C6CFAA4F0DF4E7C95863EFA6A297461DA2E911334E42CA98512D997B7F0DEBB5 -DA585E355646FB4E7837297EC08733D37A9F815186740D8439521A160DFAF879 -E04BE8CF8E55D7D29F1753656F86F019AF4C3518762AC60F5A2952BE80E59178 -A6EF753C62A13680CF33F75EA58DF1D1BBD5DE332DF6541C7D5325AEA29C91D8 -6075DDC241728CC84F602C58F1A573F298032912F6273AEF60C1CB265138B245 -7FB6135D21C8537946FBFB6315BAFA89CAFE4C282CEA4C1DA6C98CBFEDB3224F -8D898AE736EAB91616CFABF11C57AF0C3BCB07AED9AF076D2C48E482EC258241 -23010ADB742A17545996263B9F7BBF981AE401918B286A66EC04BD99C41F7761 -28D9A8DD8CAEAB77B0F5E2ADF542F8EF5E4C0A59D85D6643F497D1B4264B07FE -1F7EE3C9CCB90B950A548F82FFE5B1126A29FDD09F7AB934CC5F13ABFE59DA95 -FAAD71143AA259317A0E2903ECC927BBB5DB5C77A547F3E8000E491B788FA1E0 -CE8F19C43AFD981B13C5FEFF1DD3ADFB114950E1E30CFFB1239FD04728D8B7EA -68A7F8A58B5D09397115E6E74956B8 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: SFBX1000 -%!FontType1-1.0: SFBX1000 0.3 -%%CreationDate: Wed Sep 12 2001 -% Copyright (c) 2001 Vladimir Volovich . -% See the file COPYING (GNU General Public License) for license conditions. -% Converted from METAFONT EC/TC and LH fonts: -% ecbx1000, tcbx1000, labx1000, lbbx1000, lcbx1000, rxbx1000. -11 dict begin -/FontInfo 6 dict dup begin -/version (0.3) def -/FullName (Computer Modern Bold Extended) def -/FamilyName (Computer Modern) def -/ItalicAngle 0 def -/isFixedPitch false def -/Weight (Bold) def -end readonly def -/FontName /SFBX1000 def -/Encoding StandardEncoding def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] def -/FontBBox{-229 -316 1737 939}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 -69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB -CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 -F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 -F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C -EF25195F68A2A98170E4875AA1B1ED6A435C02C357D527BF5BAE9F3163F8850F -4267F16F7320BDD6979C2F8C665632114CE1D7FCD000F5FBD3E05848929A6E47 -97361D305E2B3EF0D3289006D6D4A92B4915A07861EFFD2EAD6D0E44D7F2BC50 -0393AB5D4E20487C48DB19B78C49FB68EBB7ECED723428C77D753A22B7D69614 -D9508C82BA58E2D874CC9F68A68F2A40B655CEC8A6308B67DD6ABE39F97FAD75 -03DA383F4C166B7EAF7A3ED4BB7FC5E6B5D2832CD0A6587B17539297FED807CA -ED127D2F0B4D1835845D8E3FA03981EE7410C5EDBF3C000051861E7C98A1CD97 -D8CFEF6B875885BFF5832E8FCD91B4780EBE0E908E59EF5D3FA8CC9D67787EB9 -9FF5335E365F2B9EEE281ACC85039C952D301529C2A7B52B3A174115FDBB2268 -D98A22B25EAAC4F57C64C0C1DBC34B0FE96C1D9DAC2B7FF6749250D8502C5C28 -3B8CE334C9E727CD19A3AB4FF6D3339E7E9C3F43BAD7A78D4C7113CD45530995 -E6A70147ED0D3BE8A22B346818368B4AA3AB2ECEBDF089D4134F08780B4CE5F1 -D96EA7AF6FC84DD5FDF8C9EB273059C87A568B0E6B0D41B1745D6DB55C621F11 -5E7797466B74ECA431199CB2C9D974DB020DE52EB9C39B2CE83FEEE98D229076 -8C6B6237B150DFDDCB233858DB62479384302233B6472BCE3E34BAAE8F821E9C -4B6ACF55A88DCA7FB297973FA132DA117E7DE71F434C49F649C3503F0A523806 -D96939D6D04782E7062DB0E069E7156DE7C7DA1E413CB8575A1FACCA04679230 -6F4032B42CF9083332D26AFB6C8E3D6930E9E7AAE06FD6BC3907CE4DF582F592 -96379AE779C820D54A857448394B86C9BE2D4126610FBF1F1B2F374A2244E21A -2B42A9DC74A983963AD571173DE252CD75109FEF87474B052B0CCEA27C458CA7 -BB1E9CB1D3B2959532D51E9AC040EF3CE5D679AA2ACDFFDE672DB5CF41D58F8A -3786ACED5AF7463460B0414B467C22C08F8C635AA1EC6DA06B74863BD647F308 -2B70770DD0A127E16CDBB6D2462EE400855189890440CF05D5AE4F5D461B609A -00F50A56A32427703C2272187E904E982FF9C31F7A82E1D0E843B81EAC0F6734 -555466FFBF205B862880F752C654963AB26C6BED171301ADC1A5B1F05D0EDA4F -DD952913E8B4D18EBAEC0229D1CDAADEBC1F64C2D9355172346B6A73A4466B26 -DB5E3B27B69291868237D74EEF1577F24EDC31431572DE621E19C5260409FBA4 -16102F83081A06DEFDC3D19C90436160FC3CBEC2EB1BB1C8DC65235F1EA754BE -8F665657C97F774E174C189F281C5E79B01793F45E26BD0BF8AD9704552EF609 -57868BD0E17E9A229E759BD8526399D5C30144D3072ED3620F2EFC3BC1526710 -54673E898B8D601E711EF054DAD9670047F88503418DA3E9AA8D78BA655B1C18 -40EDCD9B7A5AC033F6B1E9744D32AA75C87F9A3ACE24BBC3E683DE99B81B3128 -8A2D384D75D4A99B7BFA298E5D64216C70220F16763DB2D4D1566D4CD4A07812 -76A23F7C26E9FA324D4DF532B600A24686CDF900AA0C9D9FAE7FA6EA76002927 -1F2DEF03F4B769A688D193A866F5A44BFE1E3A599F0FAC1A10D674BC0BBE8C2E -74EA1DC605B5F9B9165F9B96C1C3BD82B23A4728AD042F54825AD91AE6AF3431 -EA995BEB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: SFRM0900 -%!FontType1-1.0: SFRM0900 0.3 -%%CreationDate: Wed Sep 12 2001 -% Copyright (c) 2001 Vladimir Volovich . -% See the file COPYING (GNU General Public License) for license conditions. -% Converted from METAFONT EC/TC and LH fonts: -% ecrm0900, tcrm0900, larm0900, lbrm0900, lcrm0900, rxrm0900. -11 dict begin -/FontInfo 6 dict dup begin -/version (0.3) def -/FullName (Computer Modern Roman) def -/FamilyName (Computer Modern) def -/ItalicAngle 0 def -/isFixedPitch false def -/Weight (Medium) def -end readonly def -/FontName /SFRM0900 def -/Encoding StandardEncoding def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] def -/FontBBox{-196 -322 1502 937}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 -69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB -CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 -F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 -F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C -EF25195F68A2A98170E48759F267FE330B57DF626EBF73D2779A4A6B462AE6E5 -19E5878939A488F2FE1094A76925CD24DAD4573AD3CF34E426708CF06E7EBFFC -BEF5595408106E2189F418D17AD510ED5B6A528E8902AA3A5F0FF52AE3DEAB07 -32F06B63E28BB88229E046F4FF8A356BBDDE82DF2A197F2E26CA00D5594725A1 -83A89A36487EAAE1AC312C929CDCE50722FA6C596C261E4D78D6C6ABF77F5CCE -0E410ED74287A0F201140F8D9674A7AC585D3CBC72CCB824F9E1CEBD08AEDB3A -A4015CADF471F7ABD9B0F0AF73A8274FD441BC1988A61799856E4770155341D6 -516CD0E25BFA59B67AB7E0571DF3F5BA70A82798D4CE6D9F23F52CF97CA370D5 -FFD6359959DB68E52196D89FFB84700E1CCF3E2E6A52CCB43303FEB31F296C29 -34B019803C53D8D5DCFDE72099BFBA29C176DA3AA9F20106D6AE6D530A490578 -AA65868A24DD5024A28C6E372C33EA2F6573A6592AE985F03A99884CCF7CA096 -043D8D33EC0550084F5D85656F821D8E06996DB3E47A7C4E20CB4FA8F9A1FDBA -8A8D5E42F16B4FE307D36B86A652C196C9968BB436C9CB66C9CA27658DDBDFD5 -28224AA3A9BDE394CE703771433B4BD8B2867327DCED10CD89FDAAA5663DD04C -0F4EDA21B96627D495493471C6F0A2BFEBFC2951896E3A52824E1B82EC39B16B -F11A8545D54E1C5AF4BC701B47E1D8D4DB124DED5732AA9A94A16B44FAC0B8D9 -3A726784FBD263820B6DCF6ADC98A5662C1DE90DEB617ED5B7D6F728DCE0074B -7DA3EDE577EC66869BDC6D10A4ED23283175DB32F0407570803990AF10B48047 -39898B8893B5E2465C61DE187F762ED4E8577B217C2DA630FA3E70A93D368F8A -1715026139E79E419A5B7A0C017F16CEF082F0FF1D9C196F9E2B9DE1F8475E0F -7B50A348BD2987A45AE742E1769D60475F75B0D8D85732DA28DF03365091EC8D -EA4471222B0BAC8739A7407E3687B32BE3388478CCDD5814AD3F556061535199 -A8147612F8FE12D52CB002A2D66F80014EA3861089AC8F1622266546EDC9CC8F -984BC14FFAF5573603F11D6B6CF11194DBA8350C9D1497290B727E979BFE8FA2 -E5348257AFCF78B5AD0127ED86ECF4043D63503CAD6548D0F2F3D145731C69CC -6EC9CD8DD59FD1C7F22843ACCD63FF658A8C58C74B40F86B92F013A73EA21CB9 -5A499ECF13E311E51AB788BC68FC7BCFDBBF13AE645E83C542A3B026EB61CB15 -309BD27EC19C8D31C9300BCE1D6544668A511FEE990DA3A11225ABB2C22FC7DE -D064B45FB23D9CB14BB0DA1F2F9DA4C2E8D072E8F70CFFD833BFFF0E511BCD47 -A16C17073AC9D62BD413CEE14A9BE91B69F98C73AEEDE6A3DF245A673DE56F0E -0F1C719564F5889ADE60EB828698BED9792557A26E6E104A080B995B8A2F065E -EDD89F309FDBEE7B1B280345683C7598990B5288EBFA21BBC8589E6EE2434924 -8DBD3A97ECEB0B630D6D07846FDEAD673C861CC4EEE6D14EBFB27E2C3ABC32E6 -4EA6C0EBD9E38F8A4FCF1CBE6DEA027C700519410D86F3813394F02060A51033 -30DD39F9308332B7A224A4A4BCFC487D0CF227BA3EE5EB69F699CF432658B880 -F98923E90E9529CCB0106CEE0C0E07DB2EAD8BEE6BFBE255AD609AA62E763B13 -816795FF5F6BCEB846926337B4B8A3706DC71C0E3903C9A02FB6AE1647DD403B -FE9A7FB706EB44130268D5ED62D967B847DFB274BEAE378AA9B6FA0D74A025DA -1E80A0027CB712C1049E230758A2DE86A7E5A86B8B6249A125B20E374D194F98 -4558314A256C554C63B8DFF7822A8B47E423ACEC79E8DA15A08AC4E053D2676A -D74CF36E3FD0DB3A43EA5F06F9BF790EA9B56459BEE6955D3E4F0F4BCC7AE2F0 -68302B479C23EF642100EB801F931BABA395984CE73E67169DC41770B5F7CCE5 -B766F5D2B487A03399B4968C65DD95ED8373F7A7AD84593AABFAC53E5F6A86C0 -D8E5730E808893BADF82963F203BF8846B57ADCB5A230B890A316E4B81195CB1 -58677203751B981FCBAC7B8A6BD1AC40266BF611A5968AE062DDE38C54BD8201 -4D86233C2D47AB90B928C9BF8699D1A13E7D573ED08F73B027856BC96DC3E56F -D29A98AE4EAACA821ACEF9F9B04DB72D662C790D17BCBFDB3F8933AF12D1ECD7 -18BE4E606081A106519CA3BBBA8EFD1F8CF34144B09F4BD9445CF649CAF72395 -712B5F85A86A1DEAE13F908AFE15463FB71C01B2C65AC5DDBDFE1444D5B30ACC -69E0FD328E021294FBF621B462CE1EB6FD26A10AEE723E78F3CA779E6B6A7E15 -FD01219849B6497FA6DB4943722AF79001DCD3F9DEE6E3D1420E455A08DB57D4 -5E12D0E2A9D2105795885557A1811C0009DB48537708D9DCA34E91549C56A3D8 -AE8E55606CA677643FB82F1736D55A53F94F734BBCBE96D74CD4152936C2184C -36AEADA9CB6DC92F990D8AABCC309FEDD4FA497D23E9C78A27595FAF70C64C19 -D13699569928B4DA77817C69EDC3C3A9108BE9A86888F724105C3344EE80F36B -650B643B2423BF5A5405121678BCA02DC9469D380C43040D8CD86B76E9F2ACFA -05ABDB8FB50D9F5293B2C7BE7AD027D53C3B70A9597CB66F5CC61AC7F19985F9 -4EA8B1EE5047D5A37CC93E3C704AA03DE8B811E081D3B0B0BBD26237E283FEC7 -94CEDC09F9077349C96C24E8D18B85A7B5AAD82FE5688E208064BD0AB6082ED8 -2935AE602BD3DC8A877823505DF922C8A8E5A787DE997CE19D3DE210A1A63ECB -F93355E11B89A257114B6A7F5AE6E3A6FEA87C468560148549627AF0285C62CD -E874E189CF1F78C4703E41D7FA628B86507E9E71732DF9726C2DEEF841B74A60 -9C7444D1D2D813AB4366AF966589C1EF16030B59A64029BBB64BE415567AC1B7 -B06404E61479138E8CF1351E212670DD71D2FCA8B192D0F6BFD1AC6EF8A1D771 -165892598B0748B26C9EA50163D375FC63B281459A2519D59B1E037EA930F21D -F005329024B77548F1EE51E864140B729364F831B26C86ABBAB08E030CD43125 -DC82E9FD230281E2EE9B0433771A8A899D8366122FA7C4D6C1C00BB52ABB6EEF -29081882A6BC87B8E5E649D84EBC5B50F0335693231295B2FE8226C328E6F059 -DA7E1C6E7A336E30C092741BA7F80FE6D3008E70A27C86889647B411DF2A995D -D0A6BBF886439B13C0CC247210E750752F8CBF9A743B0CB701B9A7E61D4FF951 -32C720F3693D59A2458EE4862D6C07BC2974FD671BD0D4853ECA073DC424A072 -AAF769FD817E5E1564B5EB0C7138321AC39763F966898561B385AF97652AE4D5 -E2480661F7104B40AC6A90130CAD43D0B767BEFC65BADA583311E5B6EE262F03 -198E0B8F82D792AEDF38FE9400C351D86CDB7C52B7287916DCFAEBF60530958D -C202AA5699AB0AF95D98385807D968B84A7FB100468C4529613CD0D628B3186F -93B271E7972AEEACC0F308418DA1AF98A63A5A303C846C383A1C9ACE97B11048 -23F78C49B1F2133C323F865B4E6D2AA1225323B52F9C586FD4F08000C6F00BB1 -7FFA336F406CC91C048711EF040EDBF40E256299F1E73E53505205ADEF48DF07 -FCB02F5D97726C153EC014F2559DAF8ABC7006F08C2A7F0236D0498B8D3264DF -63396ACE48DFD3C79570D37DD24FE745496C107D365CC95A38617E9571C1AA63 -7B4E4E7AED216B60BD8E8DE59349F07C18994FF414A09045B9BE5281CB07EE02 -3427A92F9CE85DE54F75000CC9DE58D2EFEF8E3D81853E0BA1CAD18D0139CECD -A56F30DCF88F5999DFF552EAAE78982829448D5300BB08D9818F14A9D458A871 -9BECF2F91476B4495F9750FF9322A44B38B0B11741030844DFDAE96D5CC594E9 -01374DC11480BDE1C823F1EC06C9C111953CEEA1F61950C05BB9FE5B9F19317B -D6BDAA8BAC3FF70DFD0B03969BA2F22612B4BEE355EFED7F84DB3BCB2AC04684 -8E3DD50B382998A4D6042910DA2DF65070564E6C18A2C9EAB8C268A8A3577618 -287E0544AC6747ACD6C9576C3412987F9D1C3472BBF278F7C9B55785FFA7D5D8 -E4CAD2571CACD45660016B380CE26B9807513FDD96D23484DD0AB063DB4FF777 -BBFD9AF095C7174704C62901112C2196C827C6108722EDDA95317EA4E7786D75 -0C09528DDF1BC4E4960791DBB5E08A39F1FC64176ADC20CD8B0E809105958939 -8323EDB1EF54E133B52FC61510D917F4EF01782DD1D4D1EE1927A3BD20A6C76C -5EF6BF5F08A5373C30B5E0A7197F6A85F36884B3640A23DFA6BE42A8B89D6D89 -D9312AEF4C50F66B95BBDE9D3B32994F076D1269C3B619C316E1AB71D7CE20AB -C17D4175328E0E6E8E605095672AF75411568D3890232BE6C15C259AEC31E561 -7CE9D77A93C30BEEBFF2BCAFB8ECFC153031CD1AC52516191F8214ECBA866518 -648D3D8BDC5D7D165BAB011AD527E221050F3425F991BF88A3C88F54091C8B09 -B0D8F00844F8C4605EBE9ADA836C39AEF3FF77045FCCB189CB3131235C701CDB -627AEFC03823134F46BCF7A3BA286143939F28CABDCE6C680F4945A75B985040 -01EFFD4053B2D53CFCAE49A624819A95488DD5A3CC69C76B1CB5E6B253B2CB02 -67AF3E2C0B51AB4A815C5F77E049996FB49464F74D0605FF377C5CC9B2F92706 -2C125BB08B9A0906330212962E94841A533B098D45EDFCB4E7DD1C0E0D164966 -7A5B69615002951E80F571B7450F2EBED560F97BC99FEB6BE21270A2FC838959 -D75A87A7CCAD1EE54F8669DF366D3E114638BDBBC18E2728B70126C263CAC0EA -C2F99A936F790E8B4CB06F4227DC96828162AE88FCF72132C6912EFD701E3E02 -2AE569F73DF756169A76CC8F3BD0A976E2D25DC0B7FADD1ED132230D6C539D99 -56444E02C7B6C98B9CA3558B105DD2EE7616669DD6BAE28F83283BFD4D31C6DF -BF53361CF3B055209688AB8E0138F2860266852A3DB40FFCB0E78F80017A32DC -F5C29CFCB650858D06B1442F8C580C56911A4F84265709195AD1DAED7FC1DDBA -2AD9E035A47F01853AEF9D53DA94D7C0D70280A7042968A144019E894E4BF860 -01CA4EA354E74DBBE94CAC3E85E5EA545AF1B4C5522B15A07E9ECF4FE407287E -87395978F11AC308B638A4C935C8D2894784FDA23E7A3684AA579655B657066A -DFE881CB373D4934364E8DB22C5E531A678FD552A2D5D67B095EE66027673F40 -E02FAD91EB50B8F75DC9500B9BF23C4C6B1B47C24A56E0AF3F99991447A1E7F7 -DC36D8B558C00D9B79C37F16FF316FB5446A9665CE151D210F648A0B93540670 -76F88B3EC719E230FCD0A2331D1E9B24DF6AB9ED7C85272EE765C359679764FB -DFBC0C34193E9439EFCC2B1AB20ACD452F67318FABE14467AA84BC39F8E13679 -7BFDE24078C8D01D6B24D37D53FC830929423A18AF3378762504B4CDE9EC0C5D -329F728669DD4F41D320087275373FEEA3A5FD9DB16A14CD271718777AEF2CC3 -9C62C3854E358D3EED44A41A2D1F03F096387341436E4E6C5484EB7CB4542178 -D6B0B4E237F919152F8D9E86229BFCB8D33DF9AF0D1C7C6FAEB9C6D11B2A3203 -3DA3663044B10987945AFC328FE6F40F1E05096B63C5927121444FF89028B03F -6EC8038BF1FADC240E4F7C0F29D16F70989D63440B66EC8B773C12A8F8C55D4D -2E9046B3DCD915A3C53E9071E7DEA09C2B22244FD50486A53B96E199F7C78ECA -9E22092502FED1072C263D861C05DC4B6B73885E3AC77CD9B80F38A49806D776 -571848560BE3E6370F85A4B8D8B01ADDCCDF489CC6FCBE00A4EBFFFA8AB2B39A -00DE9EF2C0573B375CF75E49725A1EED4392F8D780F9CB2509B6551F60D249CF -337C0EABFDF41F56AB44A01ECCA5D14C632C968C9361BE5E42DC9C42A7399B92 -F551E52AB7B7C0355E7F1B35DBBA45FC96AED455C93DABCEB8DF4FB3EA2C40AA -EF085D447F0DDF3AF7CA2489D97FAC2C726E65CA153D9EC6B5E7C71C69E82101 -530011814CA1D634F32260C663899A2BED950BE41B25CA239C077AE34E53218F -B837E7B6E396E0AB49CB67CD43A0683927443CE0E528440564874A0481321552 -0E44FCA5F79A1996BBD7AB4C8E56B08EFBA820D03FFBBCDE090D218B2ABF7405 -C9E6A7DE351875F518089527528EF3F4F7A039B9875F47393186923C5E37A616 -98D10B7269A239F52F58F50D6B38A50E77F656B02B6DFF3EAE8F805D15D84C20 -C73ABE08A2533DDCFAF431908E772862978941F646916C431E0E308517D8CADB -3D8C5F32233104A9F80E163B9465A1B42F2C86A103CFABCDF52A0C87F0577BF3 -4B836EEBD6D957E70FA5EF377C784878759518C8AE7799F35377E9C384E1FFF8 -9A19604AA99CB59E42BEA3B7CA2508355C56BD744D1CCB034B70C51814640FDD -1497802EE753649DBB6117A1B74FDD47BD4F4E78C6F147F03257CE6641D3C5EC -1A9A84A3A6BA2081895138C2DF1726237804FB337197373E3119AB3704F849C2 -316F95BE42F08D47AA3E7934AB8E09F6E413D028AEB7212CA301D20988E7A7DC -6A88F5BD6D7ACB8A14499BA62D73559AD391590675AB907C4F917EB8B80A1793 -67F7DF308F12BD9C984EE6D9A935568443F75E188B20547A9B74D21736FA1CF8 -55063D865B93F325AD24664C9D4B85467ECE18A054078391772A98DBF497EEB2 -2DD2380FBC4E38C0CBC3F1CC17443251CEFE5D7849D734BC9844749FF7C02F4D -F5E66E0643A87E6BE3400B41F28F26C0F4A6979CC50B0EE4C75B3F8CD9989BED -C94649432F2358C8C2CDFDD5BD7F38DFFD8BD31FD90CEE0E95DEC08A13061D24 -AD69B436077DD39A39525BD652ABFEDD8F72FC219C7291C6B3F0FE67C13EEDBE -27EABE615294AE5E1A431EF7D1728B113FD08E9F8A345DAE9F579C5508BE8362 -57E746FA0487DC1879799D0C01F608F4FD1AE5538A2F89574635150C7D0D3099 -371E6AA729F1588ECD60F0E66A4AB04796C0B05D90A5A8231299055538AE87C0 -C4AB4BC1164FBF23EB2C41862105A78BCE295734D57AC1470B4E2C6091DC23FD -6868316364B9FC0C8133A84721D8CC7833598B51D81420F45BB03781F64840D0 -B72AA42E87FD05AF4A75B3DDBACBD0BAC7B2DBA3DC7A94213A35415EE8DE6DCE -408DB7E133600207A256EAAF61837F4FF9CE1E03E7E8EEE843E2E4E40056EEE0 -E6467A7CF07E4D73C5A839F9BBDCA90CBC58D06767918B0BE4AA2722A2768A6A -32D8509F3E3C080F78CEAAC2E92F4608AC9063FF903763E721F9CC044A1714AF -FC5A5E4B14C74D3901F119F04DF26E064FCDC6E29156E0406C7A9B52E1643116 -E662CAC5F8B14B952547E92EF479D9566F7DA7B06C9E2844A8E56C5B11EDFADB -FB9C2639835A0665FF22496D4B261AB5EAC44985F2B8E409E73E461CEFCF08FF -B050674B58E05684E9A79FE1FC31E998D9344F025143778C98161F8256991A2E -C97CAD29745F53B387387BDD3C1962ABB39D9BAD046ED9C554677B7112BFDD1D -ED4092B5D812332F4650FA123C4813ED0274DBC3A845069AFDED9B92ABE56B4C -B2B348F367B14FFF52C3AEEADF5FA2851C69A341B418C7AB2462EF5004F76FC8 -3D45B9D3E8B265EF4A41358355DFF2D4DAECA436BD408395737188974BFEBF70 -AD9543A3ADBEE1536B27831370A5C8593A2B7DBB1040A41878FB037EB78941F9 -2320DE4402EC81EE1F89B4D048C81F97A88BE8780AF14EBBF4130710825FFD2D -739D352143F5E2B9EE5862A24A67E93A161DDF1095B3676EE853A4409C2E5560 -7D7B814502D167C1EFF5F8CE100A807E8B596F0E61E8D325E4F0660D6F0E072B -D8798568C40DFAC99FEBC2B0D19282375E4FAE1C5FB74B5913C87DDFA45129F8 -8CE783C3A191546D7C03D407DBF4E83C8F434B5648961F74E75B5267AF360854 -7BFBBF6CDADDC56C29B4CA959785EEB01883F62FB1517B74615BFF5B59CBB58E -E2E9E0DF6DB12DDE4F5AF40664D87C5C1935010F2314BA90D65E9A64F8E9E6A3 -28BF57F4FC9D8B98D16F60B7201B996A7C66E0B2E15E8C7B66094DAD9B9CB526 -47ED165AF16EF3189D7E2557E4B86194EB2609BB2B9692CC6C28F085E729BAA3 -282C78EE28FD1B2F57BF1BA48D07852E2B840CBB08F461991A79327D40BF0EDC -82F0E602F640B773C7627EAF7A19922B4B65FD1EACFD67F58BD2BC328E633FCD -E38253B7E0D3E8863B2161664E82A7707EC346530E9A0828FC2A6D8B6284C9DB -4B027F9895AF004AA7D07DC68D87C2B199A172E0551A37C55A715742BE83214C -A4BDA3F57514891FD61D4EF00A7EE360511EF177419FF97A7BFE63B5C591975E -184E3B7877753704E4C39F6C46ED173F8C4EECCCB01ED50FAE4CFE6395FA3F54 -FC400D57A53C2963CBBEC87F96A585940FCC74C45DDE542B97C7C741D1D24B4C -DC6D666CD1F60F0A096484397D45E7F68DDF09481F93912BE4F9EE5A4ADF0FA3 -85697C2B0624A0C2C0EA9AD0AC601B97C41B96EC10F055B6DE1FDA80F7D8C5C7 -303119298ADB6185A4DCE8AA40E782DF8FD0F9F384FBDFF0DFF458DED8D8743C -57F3367230A51B399CA9696D4C3C7A5CB7F809B51C753F227A25C7FB64BCEA12 -93C24498C4FBD0A7712ABCC3F6091AE21E7D3D37430A020D9A407E1E57D1119F -0DFE3379AAAD3B20F37E8DF818B75954045FE68D90AD698A57B3875D882E82A6 -513B7E770BAC5694D088A62506D09B74D9E1D937EF5084B5F9C5D739AF490898 -A837B20A781FF0792E75F63756A334C9ACDD59F389D357685AA0D659F1EE8103 -139A162D9638BD7E2A8D5F50CE1674702C3A59AEEA5C58A595377A0CF84226C1 -74996677ABD3E20D27C9AF84A3B09E3BF073144FED6D114FE794AFF63471890E -3AFE741C6258C821D77E8DCD3F08AD8D11580B8730EB6489FD40B49AF07AAF28 -D859A8DB3D672668018FFFFB9FA06EE71BD8C24516FDE6C6A13756E93F1E7DD8 -7A764008B31214E0DF6B79EC022F0AD1EF6861E018B0847F3D994300CEFF043D -F91CCFCF1ACDFFD7A0712B2173E814586CB6D055B89F150C7EF67B62D346AFA9 -770DB3104E46E66217D98EDE2BFA475E0180490AF65DBBA3BA11895B14F2858D -3D1B4DFE01092FB03BF9CE1A0D432BF31C9E7520C01FD707D1366F2D74823376 -46210F44F0521190A4EE3C0F22E3E700093C25C0D663275CFC275592D7D9206B -18B91167663F8C2BA19B1E43F5A5C3750E55B3157D2AC53810088D33169622FA -5672A9CD67F2FA44ABE91B3A47A98F054C8D83D72C702B121CEC046439073854 -F704D7D8B9E4D4A7FB7B49503B3C76B27A45576E8CE8A43918A1B2033F71D29F -2C14D0B612697DBF00A180AB1183360FAC1D9B45939CB36B20330AA232561583 -F1FCABFEF3F797217AB9A8F76700607469F44CFB2993CB0F680BB526FAAD4DCB -66C80216B8EB4AF7416374506C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: SFRM0700 -%!FontType1-1.0: SFRM0700 0.3 -%%CreationDate: Wed Sep 12 2001 -% Copyright (c) 2001 Vladimir Volovich . -% See the file COPYING (GNU General Public License) for license conditions. -% Converted from METAFONT EC/TC and LH fonts: -% ecrm0700, tcrm0700, larm0700, lbrm0700, lcrm0700, rxrm0700. -11 dict begin -/FontInfo 6 dict dup begin -/version (0.3) def -/FullName (Computer Modern Roman) def -/FamilyName (Computer Modern) def -/ItalicAngle 0 def -/isFixedPitch false def -/Weight (Medium) def -end readonly def -/FontName /SFRM0700 def -/Encoding StandardEncoding def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] def -/FontBBox{-203 -320 1628 942}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 -69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB -CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 -F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 -F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C -EF25195F68A2A98170E48759F33528B839DFD4B92DF0482493852C44DC635E3E -0E29551E072F9AF208EDBDE681F2A25022B9758023CEE66E71B499EC03B0DCB8 -776788D7C9EEA9C8A55C4051AFB58C8580ACF5C1E76AA745AC43137D7FADDCC2 -ECC373F673B9F896016BAF3DCAAD7A1E982A9A9D5F459EBF287B057484AC0344 -010753C274C38A6704F869833E51F45F91D8FD54CF7F4EA910EBA59783AA6CBE -A5963B4E5E41841A8CC0734ACB9679EA0341518770ADD726DFA8DD26AC8BE0C8 -93478DEE80AA4676F6E5451772348BE3F3242DBF7F727B6CE01BBCBB0F6B6CD1 -097F6065C56A9DB11299EFEA04204672740C1EAF81CFEA33A414C8A3FBC097A2 -789BD70B825861F9977FE1F2C556C2470E710BB50DCB709DC41C337F18B9BA95 -983DE7ADF0218165DFB1FAC6389F1FC446413E660AF4601F1935AE3801C1ACC4 -9A2A696F645918A8546D5C090D0F9AABBC99667D458EEDCCD0CFC60FA74C97AB -D5D3C05A769932A1905F17170A86E307F730F17B7CBB77E583D20DEA14D76F02 -FF9CE7599E0DC09CAB37336C3D6DC6A91510BD76E458F2F009E24983EEBC220C -572E997C37FCDA62DA400A703999BB3862B0F2C8BF611DE181A1F6814CCED57B -FEC1F3573C3625283CD37815AB5F9C0C6FE819A83091CE1D5DE3923B1BB8BF28 -A2C22E7865E86FB42E506501C1DCCD2CBA7C2AB4307080693F54A3CD885FDD32 -EA5A81E6D7C58B6D43B135A8D63611F16C7FAD20D7CFB9565BC85B007D4DE8FF -D9574FB7FD87333B8F00FFA70F271832CE4DCE864095C3C178662263758FB998 -DA57E0414649B9442625ED8F2E3F711F4A871931FA91378F1D3E054934D4FFDF -86FCE519E27F26A8144C7D57622FBE3174F64A01FB6BEDDF2E6FF27F4B23BB20 -B9784BF61030191552277DDC1D0AE4153E4CDF61A014B2A4EE6C78CFC51ADBD6 -0B4CC365B29EA2F4594C16265668EB5E8C6740E09773393CE626A9D6F729BB4A -9784463F90AD6A52E1ECE852D70775F39CF127B912A2419CB005F9C3A50B2DE3 -3B43B3DF9F517A6D2F7CC78E90219471EA02FC965632C5C642A1A2C17FB8E306 -640DDE1AE69B3F433351054C5900F8D4D18CB36C4EED051DAB0765C871FC6329 -57F373159AC49F917FDCE2D64F2604418C986D2AEAC08FC3FB9EF54D834FCFFD -11FD8DA623BFBD5571921C8D75FBCEB230BBA2CE4ACD1D0A7FFD7F1E17471E3F -ABCF3A8113C5F886C67B0D2F337701B25744ABA552243149770B81E3A60ACEEA -96BDE7DBE7E2EFF13DE5B83BCF6A010D9C2F9CB9F513EE814AF7027587020F10 -8C8E0D4A3F0C3CE8A597F2BF67F7AC49B171E87AF4ACA332BDC8CCD4819F6CC2 -401C41405AB4179BA790D1C4853F414DD105E8402AFA7A9CFCE48ECC2D527F33 -3B8AD05931490409D02F3CC1F8941CA9BC0A19E8A3348F9E2974856105954499 -0F98520CB64FF37AE7FBF866535A1FACCA845698B4C033E07E8E18FFA611DC81 -47CBD79254353F36F4E0AF6A8E4D25E7A0656A7ADCC2A73404EF2F397A3BBEBA -973B5D65EDD95E20DF0C11FD9EEAD9DB2057549B55DAB5D72510F8A9111F02B5 -E4A0C6F7FD4CD6F5A578A1B1BBA3E92751BF4083B295E46F4C3CE71601BB44A1 -CB7EC830F322EA5989BEC7CB5D223E526F0D8902D3A1DF2C2B785F8A3EC9DC9E -F6F1E1AD8276E4A5A5274B96DF29D79EA322BFAEE47366095EC334CBF9C1738F -C0BE8A602CC5424CBACCA8857B4DF7C38BE9D03BBFC425440BE90AF57021BBF4 -61047C7505001D61BE66B1A4D3E6D68ABF7C3BE55F7E8C58229E55180EA381C3 -B8504485E3BA4FD94789E8F0ACE83B90FE156D55A3E56C4B5AB4D041064F94F1 -7A4A1CDC8A14AC86DDA6834EF4E9CF895B9BE09A07D56892AAA0CA1763DD2AF6 -646AE3A16A2A43888777D32D687A6FD856FAAE2DE25C9C7B71D30BBACA149CF0 -B00AFA79E4436C6564C3C8774C04B67839EF0EBFB33505DF478C8C12F32A2F5C -12FB86AC6CCF271460659BD4D6EBE275AC2A9BD780CE9FFD454A2F2D28CB0FD7 -8979602EE49524B86A2A957A36890F3CFDAC3872033E6CA7B01FECD47B15CE3E -8740C1ED599F55E134A99FFE63A8F1AB2ED3D21567ECCD4DAEF355F953DAEC24 -3FE25DC85F44E84ED069BE591A7F2AD06A7DF7557128CDF102258F6637F2CFDE -6259FEF86B9163FEB5AC17852E7B8DFFDD0C41E45F7F61CC55F83704400F259C -896B43EC1A43A5E9E3B86B001846E41606DD510D2C7D0BE9DD17E90DAC1AADA4 -63774FBA5BDB44B280133A26823DC5BBB8E2882171382C7E5046F62361978A88 -83921365C7DBD28DDB3CA10162E0A8087DF237C9582217693A50FBAF52406BE7 -1B86D35F23912234DA3D210C726A64A81C6C3C737A290008A595C0EEFC36CC7A -26ABD744E01F0739ABE7C56E0F2ECA5A8AEE0DDBB535193DB8F882B1BE9D7E4E -7151EAA86B6EC144DE291B753BCA732F2E24FDC4CA8C2BE326036CC04718B577 -718330EE8875B34AB842F161BA1A0BC11EE94FE7949D746B5C36CCA603C70C8A -72B15CFF9D1820E68CC0CC63E3A54F87016BAF8C5B46A2453BB0A1DB0CAFCD7C -199D2E7DBC7D8A8567D8451623FD7A4DC61D98D55F11AE5AEEE2C12EFE28050D -9FCF086634B118256214FDF5F7739EBBF62B2836E1944222C1DC54F980A469B6 -175A46AE3A1595A412F03E16A2194688C683D308D7B13FA06629F652EC32AD5A -F9EFE01EE2F7D960BF57C4692316DFCE9E3FBADF4ED841FD5E3A4295B5D7FB36 -AD1D6303DCB61AAB3121C702BF531A9547631B4A9BC829EF1B74D06DF66B16B1 -97D515100F93AFF40954FBD1CE464B43801A35FBCB962C4EA6754905373D8359 -F079840D3F413E146511ED668CA5275403A02A28FBD48EAC90F7C4A07362320F -B6E64530DEA1DB2820BDB56B2EB9F5E036CBC33861018367344C3533332731CF -1D31C1FC1CB6A9E46A291C55AEF9322AA0787B76732E80276DCC686D77CFDCED -41D9055C9357898A0064C7EEA5F1B867DE401B09EBE71CA5DE4E2767AF75E536 -A2CF9A016DFA6EF00BB3F49FAF541FA97A821C7699772E4E916430F66DB9B897 -52E4B15956A171AD001BCAACD3ECDBCA10C2CDDE6A14700276649D850B6E201C -4D2E958EF58893637397AE47CD1B4DA1C520A73527E0F3C9033409F62DC4A7E0 -6D4F44E3ED2D84B5CEB6B88D6DAD7A3EAE2E34233E1388EC3823D030DD8DF654 -30114AB7322575BE392EF94E3EA3004D6D37C02CA2001E5E5F4BE904EABC6BD3 -9053135647587A108FC78BFBD54BBDD8E09F25D875B129DA26C9DFE4E4526112 -28A8E64D8F940E9DD924428FCEC68670BEBA69CFD455CCAAA6F2FD0E2F2F6125 -859100452AAE08844A356990C46BB614AE3C72C7846B5E158A522B5E424B3AA4 -4DD6EE65279D7C5926D1B557C66D1327FF21FE901B3E17A24453CA57F2AF9974 -24CB87D8777787C9DD5B1A5F8632596CB77E73602F55EE3D3ECFFA56DB1009C0 -5BB2A1BC1CBF2D6FBF64BA6446D5B8ACCB4658D0ECD0C142742CC8710E6F4251 -7B8507C8149EBFAF73EB897BCB334BFB0728DA727DFF61B20D59A681931AADA4 -A4C9159A7D960DBCE77385E78500879B375DFA2AFA5BFCBEC5E332DE6CDA501F -4BA0C82A8E45200CAD71D6DE83DC7BD1F33F122EAACDE396251BE474E1CD0421 -AFDF8EF8BBEF1C3BEE47FEB933A6BCA1396F2043E9B5773B78A4F7ACEBF0C8E6 -59D4C6BDA43FCFAFB7BA2A7267DAFA80728411956761169D95A925148B083F68 -9451BE6D0131B866B55FF09AF3BD0656F584CECE76A17151913D7926BA1FCE10 -8B92B759751E10C76409A0FB7902FE1655B33B822830C3B2E11A6248C7D929A7 -82D59C627972AA618682D0AE03DE66B5196C57B881D5D0462B0EE7B1431E1114 -A58D5237009C7C55C4A8621B9643624794DD9F30F6C3579C03206BF002948406 -A8E35B53E773231CE797F60F76DF3EE5C4DED380B329618C3B80B4ED3B0BECE8 -7FD515FD164B90C46081FBD3C2064534F300477C5CE61ECAE26A40DB639AD665 -9502F90DE95A167DE22CBE1645022A0477E269C4D95D6B663A14DB42FC6D4384 -B9FD83FAE697F01367FC98ABDED489AA7158495B3075A43BC855B9C55684E5F8 -1CFA25492A4509171C1F67D2C08E8FB1A81D6663AC4B028833926C4F52F45A28 -00E87A58D2469CA423FDF2255B0D45388E67F0AE516B72E82AEFCCF76972E049 -2600FA8EC8FCFD3FE4F4BD5FE649A03D0269FE3B9085CC680B1C5F19476091A0 -EE9B14C72976CCF55F2E61DB62F5D16063485594726DBE4904FA0B90AD71DB8A -DDCB6EAA4C14832705F37B72557A6FB3D590A51BC0350662A4098F08CAAF7D71 -79806B176F5A4B26E3E6C6C63D373CD1ACCDACF82E74D2136DC7A277FDB0D72E -63755279EC160FDBE6859E9DD7C64F95217A0845473A9946C4C556603469105E -C3D4E2F0230BBE74792D1F52A58D657DEA997E133DC99D44B8E793E2FE0E4359 -B41B3257AF837DF2DCF4D25B5ABF17A2BE196E5E1366EDBD5C8E840497D01DBA -B7C573C089B975E7707F5275AC0F5C9BDBB254505673655F4CD050C8F45CBD90 -2A0FAE9E741F890D5B26839A647143D1F9A6800D4EC4FE4125774CAC70DE94C0 -A1519C3483556D3B22E9C6092E9598D006DFA78D98F352F67530DB5CBBA6E15D -977C0F4B860EDFEF53751328E391BA09D252A962B02B4234C1E026AFD9B5D801 -6DC7E455E771FA41B86F57900A9C7299AF2A70E6A8858DE675FB68CF2E2C06D8 -BC584CED3882466910EEC2A2BF84375A5B8302EF81E571161FF04167E0FFF971 -DBE1A9D19953B691444E262CD6B7E72A0116E3379AAB8DD2BF3C2672A4FB796F -59551EA794895FF914DB416CCC6883242F7EDB6FEE53989E2081E54D5258A8BD -60E5729A48B8C3E760F19FD1A8E20B38F642D54197C26130F4E6CCB94D7651BA -AE60063291437656EE331F452A1BF5CE9DD8634611FDF0523ECFF6048A67B6C9 -149975A538C936EDAAEF98864FCAEEA8500D58C483D7FF0E0752D104FA177E1B -809739E25CF526F45B6665B82189DF94D50C02D215294D22681A0F9F7F3BD270 -3FD5F48360371D61A02E73CC011F38E34B049EF3BA4D6B84E9BE81F5020C9C6D -8A79A0FD0077FCD06D0FFEC2FCC2DD5ED0582A07E175A0980354F775CCC9E51F -5780F79E2573504E908773850F02E89503FC4D5C87BE11613347AD972595B0BF -D0746AFB81B097572610C7EA038CF4B904F504642CFD40FF950ECBBAA02E2544 -2FC4DB96C15B184EC8C63FE8B1DB1193B8F9615EB2E76E6F8B16F3AE7AB55064 -EBFBA78A7B05DF4C366E7E0DAEF7187295EBD56063FDCC47019E5AD3F62D930B -71AAEC8B88F1F5DCBACC2CBB94628D669250626AF858F9A1959288FFB6363736 -7C81EB98A5748467C5D8CCBB28189AE9C43D83F2E81488637ED5C6424C6D0960 -C4FB2BC02732C5EB8F7753DD2A8F4654B1F2497A10935CE8F681DFF83E7AF220 -D40FB900B820B92DB77892A7FEBC6C8FDD73E0B5E86C8B330BC03489FADDFFBC -47882A58B93EAE36ACDF1C7D5C65ED6EFCBB8878833EFF01F731DDC573AF3EE8 -2DDC0BC62DC80E8CB7A1A2B2B8BCAEE867F9CB65F0340976EC388B2670558DCC -656F54EF7A0051F6319C550C26992BC9A2BF3A718F0E6D9532355D5123A91D30 -C8DE870B14C732C9336649C93E76430950940A49C43F022989DB6405624503FF -1F8AAA2330B9F6F7900517F450A35191227FCD198B217097785D120F399E3008 -0C857E92A2614CCA05073141C80EF295AAAA002172D37C39F5FA2C09BA5A3025 -263C051519AE32FC392F46B6BB9402758407786064099C2AEC2D5C86E975DA62 -E91B6C29F9B59BE5C74895721DCBDF10ECC5E68E79B6B77D1A48F1EC85AC2D60 -FA34AA5ACAB169C4DB747D16796899F819A7F8E828FBFED827D89770D84B4BFF -EDD14033E3B2E25AB9C247FDA0800455244AE2C6444910DCBDBF5317CFD553BF -E4694614F01249AFF70DB09C56ADA9281936DF74F71F2CFBFECFE9886B190BD1 -B8DD2304A53BDE1C33874797D981D981AC1E98CF9100A2619C4A3B17724B338C -356B42380C68F185980BEEEB98BFD21443054008FC5CF978518A50D5DB2EECBF -7D46ECE48470775838C0F5B9530FC8C10E7FE8B87D7FE416B4B81B0EB636E4DE -1AAC22EC83B92A09FA0CCD03A7DFCD4FC2D580998F9E08DF914CEE769EC10EEF -AF9E32278AAAC6CAAE7A5E7662AFA964DF5312F92022C5D8E513D4CC5F0A18A9 -6906514057D5370F1CC561A5FC8F1519C29CE0BB7329C0106A137F217924A751 -071F7636A6C3A72D25A11EE416C4FE7DB9771BF47465F27FD72C7ECECC16593D -E38EB1B2D55012C8D94324C1038D86CE27718681BD43D69C26DD0B3A2CA0D8AD -9A1D51ABCB54D1AD938600D8EDAEFEC5C5AE6DE03A87917E30F41CE95C2ACB88 -6F8E5DB510FD40177B4E700546D2965D92E61ED7DF47148041D25A7835DD6E39 -CECD654950795D08A0D7C797A6FE0A07D0E99F6270C871FEDF9E4DBDF036C839 -1A34CB3E2C22D3003976AC2E0F8BC59461A09EF3A5564F3A8A8517B25EE15BF7 -6A1816312B61941DADAA5F9E8A1A2CDECCBC03A7B6173EFD8DFE1BD25C23001D -95C0DAD9F2A1BB14D6191D511982A5D8EBED7726AEFF2165228D6FB49DD87E65 -5B321D70FBC7D1A294BBD33CF33DAF8A4BC2C999DA93F9BB64C3D4CE44CC616F -A04BAF43DA1C74EFA33456371C541C67748FCB30A352F141B903914003E0EA71 -19629C1A5597FF7ED694F8D90AB6DEF1908A117934F11144E6C68A1B6348449D -BCD6EE569C6800389CBF12C7B22D8512F1A5245E37DAAD4E05A3D794B7D1FA5C -0E0D00ED43E67633AC39BCA169B6BAFF006B69B6D818272612E554BE182281F1 -B3628A6502263CDACA54B5051FBBCF0408B2259EF0317FBD248720F8E4D5B4D9 -FC0D30D42BAED7D0D98AADAEDD95AA28CBE166F6B877F7CC251A1A6B032EFFD2 -64E7569C5E7DAB444162C212D6A55B73A04B539C69C3A973CC3F6DB72E310B73 -572A556E126D289B5167DFBB7EFA1993445F29FD2B297D0CBA19482CECBCEE7F -80EBAD6D2E6D5993AB753B490EC5569B2DB12942BEDF7A40109543A0E33F06DF -B8454F8BAD8A8ED1D017A68C7A9F57A11962E3CB7EBBA4BC62BC1421DD7E62FB -DEE63C22CE0688CB38FAD877C8818CEC5F7D18EA999ED1B7414F479BEA165484 -DCC9405131AA659048AC21384C28631A43B722839B5D76C73FBDA5BD8E129363 -F2F130DA97A0F043F08C6EFEA7AC8FD41420C4CFAE093323981CE217FF8D1052 -2CFA6C233373C9A04D6D535F422FDCEEEFF00D8649F2868EC52EDE61B67C0F61 -6611A90F96E9BB87EA87FF6E8186B59D99604AC5A2C17231E0DF91E46DC72505 -3E3E262EAF87F740D2E01478881F66DD0D21798A2CF51A1943B8063CD10932FC -7C074A1BD61474104C3CBD3D29031466E7411364878591ABADEAB2550914DCF2 -7C6B9730D932ED166236573D8380F20E39783AB0D3E5B383515C177B9818D3B7 -D3B7ABA74066DFE96487390FD4704DE0024936D17B863049DD3C91A0EE8C67EB -46779DCA5740C355A09077BE453DA07F67DF4D072AA91A229C4F1E52B0E67A56 -39E34BD9F1BC3527995D087305FE9CF9E7D74B15B368FA5A70728E161C69E821 -015300142A3443BCC8D308A87B579F8C7C23F16CC76DF6BFF8170AADFA5A728C -31B3352B33A999C50CA17B7D076C6009475F81CDC71293A5809F6D43CDA4983D -20B805962D3A5049AEB66851FF6AAD3B1D842958E6B651789BDF83DABDAC0B20 -D2C45B2F76EDC73A2332A8F7611C697B2358EBC0358DE506B7985A34C661DB28 -13651C520AB24E0D3850EC9F51D84BE4537DA0FA7E0C342D3D61C69641C09833 -98E677B451E00AC3127FD7EF01053DB503773A3FA39B1D4E94090B1F032C8103 -3CB87B0A635A3BBD3F94AF1DAAE06FD6BC39061814FB4CDAE4E7320FD0816287 -644374D8F83A266C47DE3DC6B596D3DC87AB035DED1F804A399D527D135E52C9 -CF6A6877852BBEC3A0C295D1510ADD011D365BE2C51E7612A80F3D9C39763163 -E56C5E1C9A35D8B773A8126FA10690C9260DBD8815D319AF700A5FCF65476B35 -1D4032278D13574FC2C667638F1C83B9A24918730C0FC37425534BE0A0AF6993 -B5FE1422AA7045E7A9BB9C95F6F0EACE21073B0644E4901DD854D2709F17DE12 -E30B96DB62E90026C231610AB9794B39CD9E0602BD13C3593FFECCF79AF452AD -F17D9E84A54BE377B54EB6D9BD1D20BD56E495772C702C4FDA23DB576384D456 -A6159313B0C2720DEBB9432F01A550980BF7F3796AA817CE3DAB393984BFEE7C -64ED54DD390F067EBB85D9935823E4FFA7E954CD121204454B952104FF25A308 -FDD23BF1D08E7C5893D93E4F21F7C16E9B21C62F2B79922B1A9B23B06E0893AB -418AF962394550504EA68D06A0AB66A45A2B1A0D756B5C7DECF1B0E138E55E8B -08FFA75E0E4DD995D035F1FB391A6239822F22289B07904E2B745650C2695930 -D3D5AF7802187C22DC9FA2E760AB1D04F95B4C11422AE12ACF74C361D81EB5F8 -C9F89BA1AACD47D5706D9F0A6B016069E90783AE6AD73D8CDF09FFD552163CED -06A1FAF22F143CFEB7394D5B99D465CF35487A11F4E4ED26530CB1B2C5ACB706 -A5C1853F9AF629DA7E638C3346BB7DA15769AA6C705BB50ACEFCE078C19369F0 -F95BBBE67960DA4A413A00CFEC4DAD2CAB9951961FFFD41CFF622F57F0BA79FE -F8377A061435DD0EE57F6801307A4C719FF10404082E069ADC2098B971664CFD -BD3F1808F705FC0DDA50D742B3DD3441DC391D232034070D8745018DD993E832 -C7087545BB7EBD0ACD83CF8ED9E65D60FD9BEFD2D0497A8FF563004DE3BBDAE5 -80D9FFBAC5936F1E1041C7C82BEA9D33ADDA96924138EE471C943E9F2578C0ED -9F0FE81A58F720904E41A09C8E620280BFD37113EB593027705BADFB227F6B94 -555F9610FA63248A467785F34513440D734C53F0825896AD0DD462D8286E23CC -0CCFA96436A09A66A92692ECB8564958BA5192E9D7B19BE34C32D70AE84699D1 -8556A92C123A3E4A0D08987AA9E2BBAFD0DD1940FDF9A4B7DBAC147367B175F1 -BBD9459018AA81D0F1D4BF85B1FBE305A01C62062EC6480F356EC5DBBB5783C8 -294E84BB9E4B7E58955E2685077F066B5579A4C94BE60E4F803AEEF852C12A13 -2BFF79C0CF85CC81333971CD93C9FDFE3BBDD14A68CE87B7D9973555CEA06B5E -9322B1A6CA9DC9E2EF984B5CF57A3C63B8A7569637850D2AE40E2C99E18907D5 -1ED4D40256BAA74303D3F2071BE5C83214F75082654AFAF4CCC70AAA293C0EFA -703D8F38668E5B029DA47528066BA092DC73480762C5FB6D70BFFA48734DBBC9 -00398534B47160DB99A579EC88E8BA13A7B8DBB6040E07C628ADFA0BBD27CC9F -F45D3E09294CB02100C7649003F84951DD642136CBB1D714DF8ED2259395F9FC -F7BD8903616A802A195D981BE9C9FE203C53FFF502ACA18CD14FD71402EB3502 -8B31B84272A26A3DE2C2E28436CF9546D1A66FF7F24F46B803D45D4E2A9B63D5 -D06DB1786BC77C86D59EF3AA782D160F9BFCE4B248333C5C814FD022A35535F0 -DAE95C28705A11421DDB10AD9A3D6C4DD4BB3ADF55F4C8A7A1D1586C00039806 -CEFE554DE1FFA0ACDE9B6BF7778D7C7B7D71DA1ADA92747A342F4E4FF5AF0218 -974CF2DFFD420F77F92C688BA3152DEA46756F6111B519233511491DDBBA0A2B -A18D2853F351F6215737CAEAE6F16247F6C48155A30A3B5A5F84083C72896BBB -F3D9BCCC58B4FB170514406A9A18A4ABF3AEC932F59D55EC9EC2A13AF37C691A -7520446FA1266DDEB7A64A1A0A99E4027C18ACE894B28C88DD46ACD5F72204FF -176E12C62A3630C90CC8676E4BAB64361F3DD921373F4A1F897F01997D24E9FE -88CB321570A99412D0A69C377DDE8AC8B2776393C75219832783FDC16ACC0186 -CEC13397B5DDE276EB0D8B12B256913E5070675B950F3AF6BF82772093C6BA15 -1711258881A3A8656C0C5EE499A8D210044D0E9F952CE31AF4E17CC1F93196E9 -A924154F41D051FD93C488DBD72DD54B96DF1275DF573E4C7BC68A05EB709358 -E23E24F2A6015198078A27BBE36853CEA97EB561C27273EC391D3D361F27B3DE -B241D1A62CB567BC1E7275C6311EA1F81B834C73297332C338032BF4EBA18FB4 -CFED469E2451BCBF639E389961F56380DA04C4AF200FE0F2066BB058F9C26C5E -B7E28467107305F5FEF70CA241D0CDEF4030377B0EB7875A1B125267D985B621 -FC39F4A8F868D6B0A8696C753A50CC0E74977CCE7A7B7DB617FBCB3CD16C29CF -8F8F6BA06BC35EEB95637073FC26EF3349C67E25F2CBBB081CA44CA48BABA007 -8A0AC1B8AEF5E3292CED27F1F0C287857DAD3EA12433669FC487660B3C019D69 -D5AF4650A55D337F12B58DBDF17DDE3CA45312D7B0EAFAF57440AEE816773EAD -CD4DD36C3EEB87C6B3C79BAAEFD374F9E0CD71A7D5D51EB5688187B3AA4BB903 -476FEC7EF998C17E1BA181478BA5733CE1653627C2BCFEA672BDD0706C4DF71B -A27543B7291FAC2FE211F992AC7A7D0A1C30A2A22C16F67E46C2EC172858409D -442D2CB77DA2D90F257BB664B9BF93568CB220B2278973D5F246E7ACBEC569D7 -F9D1298895F65E12326EF2141A4436086A308D4FA31635484CB7DA3C5942C58D -E7241B07B85087CD094EE00DAE9A20EBFEE7BF8BCE7D61CA9D4022EE41ADC729 -ECB5AA19FFA0CF414268C4ECBF3063C504E3AB6EB3CB67BFEED5893239639232 -83A1C142A2A2148EC0B081D72A703D5328A1F444771BCA405B26527885291E88 -F499FE569595C0865FAF03A38C60445C170F0A8919B4D2B973CE656E5089CAC1 -6F64BEDB8003EF517E7AD0841C8436C59EF20421165088D9D53753EB25502A50 -C51EA7C3239E3DD2239995B7280403DC4A8548189C21AF07C0D361EB5A164F1D -A48863D0C7A833EF780721DFCEF25BBD0A0B92612E81751DF1EDDC95CFA997B2 -02535B53CA95AA7E57B57E3635DF30DA78AA48958BC3734014EDF2E2C3C22817 -4CCD901AD9E7E7296E1C66EC000AEC174BD407EF9E2FF67494E212B30198CC04 -7FA084AEF76C7DB9FF2C8305926E51AD6D20490452A2D42D06649C3B8BB5DBD7 -3871CF0BA4B78252C9F8B1FD55EEFB5131BFA2BC72F9CF088C618E37C5303E14 -07762DAD95D6D7BE289E41EAE43D2A03ECE6B61A9700E5DE7BF39BA0965DC030 -DDA4016A760B530A81C6744B50DF8A912EBA8E906E9638799F3C684870616299 -27CE034EC6631577D41086C34143F401E6166947B3C96BD3F38EE230D39F55D4 -69804A40EB951C9DC6E4C653DE2541979B3F330CA0BA37EF4B48B441463785A0 -CC6DACA85A9214DC989C163879652DED2ED22E4047DBC44A9AB9CA1361612272 -6EA87CA5074E5E36F3F46AD1CBE9F5644B63DDEA4206E93261FCD6EFDBD2C70B -5234CE5442661FCCB32BB13CBE2162222C042D0A51DE2A47FAEB965CA8070463 -6AF299652B6615176AC7518B7D4F8D376FC46CF6937C61BD1CF2F49BCECAD088 -DA0823BF66F340E3D277E6D7FA46E38AD3A5AB7E7B752EDBCF667062D7B84137 -EB3990E25CE9C1352A83877A5AD37474F7534D8EAEEC9067C13FC71813B267AC -85133DBB3FA6FF397D8F74A19169354417E63E4FADDC9FC1B5423DF29639703E -4E24729D073F79F8BDD7452CB60FE1C43A290BD11A408744E1EC0521F928659D -C795BB1196AE1160145D3BF26B3EF78BCB81FB69539BDD6C22AE6857A8546B3D -5F8A71867FC42DFD220EE219ED209016CBAF3AEDD69D18BBB97E0F920994575F -C2A0EC86609F812568642683A65C1F5BFB591FA5446C3C37310DF15E126F0554 -49C2B07980A945F6D6E2AF41C69AE12A8606A1C9A9018E271CC223E4B3333A9C -3A491A2451BC13F1A56D3199D004683C0DD91FE61F116482C90A677644F35A37 -C46DBBBE5A622C19507288E28B83F808E924242A8EE5408142A6BFCBB5229888 -5D75298EFD28F3F4EE31184A4FFF586137CBF91B85A64BEE693F920D587E0CA3 -DCCA1DDED3AAF623E395B4711D69548D1283B04A4B2984B6E89DD50A27964E4E -9F815BE0C42CC62C47A61B7D67B1047527F04566CB60230107C49D1532AFF59B -67094EBDFC3ECD753ACE391122D26129A364A6E4AA6BC72CF0F8F428B999EC8D -13C61CCDE1549E2A67A9585B2ED15D02F1E9EF223EEF93FB80CDE2296F774B0F -9B33B92ABE283D4DBC09198D47454993DA72659E34FD779787BC7CC263DFD03D -96E824D1026E8EDD22E25E81035839F926F00412098554C9C6E61905BAB698EC -9A0F37D62192C2765795A969DABE55436E270D396AD7D782927DE458713D72A1 -D8B2B9A001C8198FDCD2BF6FEF5E56C38B4FF622DD47A5EA6D980C198A91BC57 -E0C9375BDEE41C91C7C636272AF85744833C42D64395868642384B18F71B8A7E -146508AD0F19ED7A49EADEE9E2CFD09AE7ED8733F8BB7AB0A278DF2858F70623 -8F9E663CC6B4D961CC47E3CE8BFD5D45AF48B98680AEAE0847205E5700D143FC -6E56F32EDF3DB57F1CFF1598F5BCB06AC53BAA616F1CE3A0272872917C769979 -1FF653D88D7C4BAAFBA4DDBA616D98E84886F2027BCC7F5C01AFABD6D337964D -25A27D85882992CC142E5066A11E62CF5677FA6387DDD60AFEE69D31EF0FF4B1 -D62271725C64B690ADEDA39F97ECD4FF1AA8A5E3BB3B1BA1C110F2B396828215 -D9B5E8156DDAC7D152B57EAA4A0EB5306233CD4233F3CEEA9743C2BDEB03C760 -A97A914018F1CF0A96F1E2859694A4FA2434474DCE77FA2D4AA336F6489F6C58 -D20CA26D273126228E3C02D8A5BFE4B33FDC0214FC6B946BA07D825037BFC6C3 -D9A392328DC21737522D04D949726B106DF860AB3113936DE2B88F9D821AAE89 -4CF56E2CF620D73833CF07C91E60AD09B1BD4322E51BB6BE5A79D432F7531EF6 -E3AF2069AC043799A378099D570F5270A99F9EBE3CA063D0DC763B3D368BEE9F -ED1127289EDADC595BD80080FC06070AFD2140840D0492306A28FCE01682BFFF -18BA8E48CBF164ACD3E9DD0939CB2D0C53B1B99963A46D265EAA1B798DE74D84 -87093079AADA3FC574231BB37ECB6ACF0AFF4603E0D0E191F7DE5EFD7E427E68 -4FBD3ABD7E78EE5D8E46E85D0C1B9645D9DDE0E87BDFCAB81ADC114F1DA38FE4 -0354CCA83E15D19F822B90A8E3F8797C9E55ED0003200CF56495FBD5DF251BFD -4472D773F06DBC7E646A9027D9A4A0CF0CB96FC867553CFA98E8BCAC2111530A -C1144846788F63A2B35F6D6F254F6F593F260FDE652AF510B300C62630EA9474 -437E26880F70E28F92EC4E1BEB7F6D60779803796A578397E7D47540C6E30A77 -DC4730380E48B7B0231A0E4F6FB0D15CA028302D43B136B4EFE296DDD061A9C0 -5EE6CBAA454AF5BEABD6B399D187CEBF35412F263EF0205C932345624EC0FF39 -6BF0FF11F398BD1E6A6297D02A37242C790539A7F5942683DCB472D3BD46F1FB -B4A95BC3CBB21C545A1A57DF730AB1E6687D416F466119C7F3DE1E8B27BDCF00 -37F42B3F7FB1E54F3D85B54400066FDEC97F1228D717F63E2B293A18453E2A5C -D38D0DF64AB2FC04FD490494337966CC36F2E9DBD18F657AF2D361278A015663 -801E9CA8A250434BFA5394D8946CC7B64D679E91238D3246585E901DE09D3598 -A86E85B4A50C1C29DDFDBBDEA63E7113A394C451FA958C02E16D51034793F71D -A17B1035BD431F7DD1C4F503A6DB7744095A03A937EDBE3A0D93B1946CCF7CBC -BA5370F812E528C54E637575077843F9EC6DCFED973217B0181C10C96BDB493A -BD08F69CDE5D25AB3C7843A62E04DBD97CBC25C514C80237F9811B74F878E624 -6FB1869E3A013A985C4858530E8EC04177E0B386ED12AD96649AB22A42F5686A -1853AE83A1F473B4656D2CE0133EF352D2A2FE57F5B094B3845E68747DB56030 -3D27F1680541BC19DEBAFF1882C38726537E03ED68CEDA0534DB3893F7EAD80E -240791AEBB77714F29C84FCC78E743386877CCF89E94C8D62A4B7A5986FA07FA -FC2AF55AFF298983C0768CF30EC623910DA93C4A471BB1B68DA5B2B7328618F0 -BE546364B76248091064D78B5802B0E0E946D0DA2F37BB308441284CC9706038 -32C934E878EDB5FCFD907B8839FCDBA142264F3AB39A7826A41935DB115F5DDD -AB63FBF3EFE85CB04F3CC3446FD8D86209602125BCB5579211A50C0FB239B7BE -F323C147D842FC71C3A32C5D978DE389EFCC9B946EAC375FF96FE00EDAC887FA -0FFDD5A5232DAE91D1B36C4222A4FDA12F8D845FE593375F22F89A4FBDD80716 -F278B8FB3D8E003B5FB73C37F6C534847169686613B4A8DDD28D1447A957F482 -FD1CA006EDDFC956AE94818A9AFB202E92F78097E2499B5E907F6FBF58204193 -07A9F13E62BD1EE3FA0EA82D4B4A8AA606FF1112857EF86F12798447241CDB8E -61EEF2243AAE185CF4EE98E79B0FE4F0BABAD33DCF6704454DB0A8D0691ACBE4 -F24ED862B9035F96EA404389C49828E66A08BA8E7D6E3D21741EBABEAB9CC9E1 -640D6EE109B93857CF29A6E89702320FD391F1F7A588995158ABBFBE00C989B9 -5C4E9E325FEDC4A05F1C8CF27050FB1547609F82C9C5E658E56211C41B8CFEAA -99F2C49CBAA451670DE1772E2B53AC09F701C499A48F98D8E0DCA2BCA7EAB3FE -D4134EC0096839B0D9A96ADED7C5F97BC0E11AA64AF5B1B7B1DBFE6971F5BF4D -7559AB056C63EF1CE60B523FDD769ED6723800B847B082CE32F2DC71E78A9535 -2F8E92338E259998B8A12FE1329B64CCAB8C7DCA0569BC5A58F1610897040FFD -2CE6C572A92111787F750CE05598B021D3F930465DE23874BD78A0D35BCEB6C3 -7766ADF60F3BA013E8340DBCF4E7020DF7F8FDEC349E1A692CCECB15AEEADF99 -06F3D6550CD4863D14DA4516A68823B0B2FCC7F47B131595029D3C87AB682FB7 -EC82A46F013EE477D8C1D08A9E5C4DC674B48F5F6364EB2D3621ECE9A3592DD8 -B90691B263A18095AA22BAF2D46BC111548257CF04C01842BCE6170013FCA827 -5FCA4794ABFFD5CB80FB4F5CED3096538474EA757ECCDD99984CD359B428F4DA -B17F2F432E8A0E2E067ED9FBA5BD137CA0C5584CB46814E2E2473C65B2214F0C -F77069088565BF1ACB613ABD7A82D2DF321DA8B3E92A15F2F893911F485D72AD -3D252FDE7BAABD964506D26E864EB713DF1CEBD9158863E405B2C16D790CEA44 -26F8314708FCD74F86D78BEA53B81CD29E74CC1B04AFF6617B9406DEFB7FD1AE -A44615E932929F4F0A2787D1A8D51D777C7C45C6DAC92F7538F4CC2CCE43E0F9 -1F88A407B9CAB5E094163B99D4C322CBE25F18E0AD664127E79D16D81084098C -1C063C131AA27A118120414E84DFC8B9C2A3025B53EEBE9AF03CE57F3DEA6CC5 -D03536974D760C1E734E1F5C25A7A34F1E2C18038A3C9F14C11E3DBA3AF10CB6 -AF8D8C1970A5B2A1FF3928A5DFE9192EB55FD3B412D20F408B7B1316309B98E9 -ED5F55EB5DEC8B09F4547C544E5123A95A3B3A997F5A8F768512415A1E3C8FCD -E6861E79024DE59F158895D5D18801AAE777808C22D3AE33DB5BEB20C663C8D6 -7326B3CB0ED3A5DD613374C2E3C006CEA3C1FC7BB3F69F4F3D653004B9BF83C8 -7DF8F42AD90458D762B27701D006C67C0C0327ED383A1C49783E4CDFCA635B21 -8FEA611DC8E3092872B4AD7DE34320C3CCAC28E7F552C61789FF79173B979E6C -E6701502F0881633ADC2973885F89CA3CB3B96A5860898B17B776CEDED2143E5 -AC821F9CCE54F8072BDDAB17088063E4687FF54C1079794CBB37B88A89639437 -2BDAF37CF904B485109417D091CB376971A83128781DE7DB5052C09B291335A2 -82DB7065686A43395D90D1FBFDA8BDE095ED8214CCE702F249A8EF8F2C3FDCF3 -459FFA35D40DEE6F5D84B93C1971FE5599AB2923202A2D7A0C319886CCC7537B -281BC9BC2905005D0F0912D4DDA6750BA4E33F6584EFF5541CEAE787C99471FC -D1D5E959FAB922FF95B8BFDE03922890404A22822901FC57DF8412A02A40069A -6C7DF4D5BC45B505EAA44A9149B0AF4DBC71977342215880CBEBD4B3D7F7E41D -B0CA512BC19E847ADE48687EC90DB5346A1A752BC578678E28CCF908B6A32D04 -CBF3B9443DC4BD732C3D4D67657D7177BEC7A15DC2C92120ED337B08ED13B13A -32A0AB9CAAF7B9977DBDBFBD5A4DED107D33B973A8602436088ABAB4F7890C5B -24398190F2812D21627E2CD2F30F8E4BF6009A82ABD5D5E0966FA0EE62C356B0 -04EB823A44016E579E724FF2D0EE68F1381F20A96B5D536262D58705EFF6F51D -E34B5F7BC89621CF950AEEFF1FD89E1EEBEB83DE1CF667FD366D41701CF11592 -09EF326F2B88B9955A96E32A02E28251EF9FFA8EFC1040AF2678455A96473CD2 -A97225F8C93ECAD77B478B6D51B70AA6D7A9A4A0B73D58470B10C75E2913734F -7E6657F480E09DED5232123DD13B9FB5BF1DA7697C6797CD19399EB8FD6B87E3 -DBDCF54B0154A1C6564ED336D1908785A8A5FB0B145BF6ED7AD91C02D2E565BD -F8C5A5F0A619E7B28B9A30BA16FDFCC5234F9891D3291CA8B27EB2A8EECE4ED6 -6E1DE553F845D3186055BE35E51C4C2F78178F93B12FFDCA3CCC1122AD68F12F -2FF2BEF754A88535FA014CA1A958760F581E51B2C9D205F67F76CA8A73E835EE -9BAF73DA150DEDE5BED41C4B37110F01BEBD3719739EB4DB4AAB9CA76F92C205 -9AF5C08B5F2DAF9675A7E07322452DDA5D8349061A01093C86555660E5D84A64 -F0034AA438655B50123DA3B6B3F11DB84A6D954ED765423ABBB9F45286869F07 -D3E7D68E53029914301A839CEF831D963195DA8AFE09C22F0B6AC38CBD057027 -512B802B53D6B1F16EE945B46B841C72F4AC91A7E6FBA7 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: SFTT0900 -%!FontType1-1.0: SFTT0900 0.3 -%%CreationDate: Wed Sep 12 2001 -% Copyright (c) 2001 Vladimir Volovich . -% See the file COPYING (GNU General Public License) for license conditions. -% Converted from METAFONT EC/TC and LH fonts: -% ectt0900, tctt0900, latt0900, lbtt0900, lctt0900, rxtt0900. -11 dict begin -/FontInfo 6 dict dup begin -/version (0.3) def -/FullName (Computer Modern Typewriter) def -/FamilyName (Computer Modern) def -/ItalicAngle 0 def -/isFixedPitch true def -/Weight (Medium) def -end readonly def -/FontName /SFTT0900 def -/Encoding StandardEncoding def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] def -/FontBBox{-210 -359 1376 844}readonly def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 -69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB -CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 -F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 -F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C -EF25195F68A2A98170E4875AA1B1ED6A435B5950D136AD73C6971F428B426C43 -EF6BA04718C56B3F4BBCDCB96EA318696C5D8219438F35CDE7EB43EA820F8071 -ED3A1711AF5838D3BCFF9EBE45C1D0233E470FBE967365465526E1B356B5FA9B -EE60989352F1A6BA7384F7882FFB0FB2572BC58896CF6D5CC0FCCE614E95AF5B -661862F6A9EAE5501CFB34B95B833FC180273FD88D23FB68AD872E49FA25F76B -C922A11DB6F8C1C06897034CCCF52DF7199EC7D17771C8E640088AE27CF1454E -34B0DECFFADCACE80C197443563ABE34BC422AF9C65141D6A215839C521CDA04 -DE75B43810A7E57954F25FB8514CF3F1A0996031F3CD9DC9D37A8BF28C7295AF -A8094842C0528401E61EAB53E4EEDF7820C74B5576C30A61A98D3657F7D40FBF -ECA60C44B6EACA558451A23F10AB2350E40216C1B074C0CEF3BB61505E9D3AFA -D0E54D16A6462AA90DB9EAD539D8CA243399DF4B1F0120D28B7133DB7D9E1FB6 -3B9308A0B937FFE2140DF6725E4FA9F123A262F25401F4124B7B21B96144EA5B -B7804086A958A37F1AF271B4E42385864622093CD5982AB635B1D953DD5FCBEC -F9094062C3BE52EE0A67D1F14DC6447B613F66EABD8F648FA9EF53F7B4BEA58F -3D31E45BDC5B055072F09BEA14526CB74EAAC483E72C05CC9755B8BF267E9B67 -B2251E029F1CFE2A71A2CC879076B11717232B16D5EBC945DB067EFC870CE89C -529F31DD59882963BAC745F35E0F24A387A2891C43C7B444B25607C49F25EBED -86B1CE2E4E2D17E888A6AE69C64224F7C9334D3290291E6F3874F9F48564FA53 -9BEB4B99C836653A3050A893EACFA4DE898166FA521AF1D2FDC47FD4DC345331 -9ADF6A0D1E7491E51313D6BF89706FAE2CEC255B464D479D6EF8743FFF28036C -80CEC4A9219C8F4A9B31248F03AA07329268F44A317997D469E768C4461C0EBF -AFD24265AC7840125D9C77BA76EC22331C2DEF9A2E85A226D4DF1AA509737DE5 -21197C67E3159951324268E51CA72EC227B20A080808C7300708BE33F3599991 -D07DCC84F7721741FB17924690AC44621F6D7A1C21BC2531C8133652D013BE71 -5ECE4EEE1DA1C4DF97A1B435BC1AE23B20461FC129994E37BC2DB86E5487C9BD -B503D6E697ED90E3ADC4B74DD3B682C3C75A985380529B43E9F27F411DA3EAD2 -EF737DF68F9858E539ED637A3A637CB9592937F848EDC787B34E644F5CB871A6 -339B8A754EC9F02CD6AACD45E5B15CA0787876D75A38C44652325C27444C5C2E -E1F179055AE55D2C4D4F12B5B8758C87D68C611D1066A9D8C620BDC0F22D5DCA -B19AF6D54931665D840B3BD946646F58084A7FE5A196C0A0C76BC51B7434ACE4 -CCBEBF778CECA243AA068FF90F702ED2F3DE01FADB7CBA2B969FE5B436289CC9 -216E51BB9FBCB98945611121F5731533BEFE65965F143B00A26A6DD9CD5BD012 -DC48E4BB72EDB0F4C743474905B1E7DFD42DD947DC91B8B94FF94A43F0C27314 -3E753F3F77E87041F3E785D5DBF5A42B5F5DF1B0B9984E3474A9C4554A086B80 -EA65DBDE0E5455263040268722EF4D1102CA1D4A04AA7720241888D3B8A97F5F -335EDA4BCA1FEC7EF283ADFCB4E87AB110217E0A3BBB290A575B952A8F16F10A -FE9208DF0CBEBF6566D47CC0AFC93110751B59EE6DF8A23BFF58788E63CEA653 -22A747EE3489CD1A6F52BEFE8FB3D49A7484798BB629601510965FEA5AAE8458 -66983024934FBCB6531F907E7278FD0770E03965BD95C3022AFB919E0E520BEC -CFCC48F891BF88A3C88F54091C8B09B0D8F00D4D261DBB9491F445114FB265E2 -38F5DA8F3183DC23E00484C793159A4BD8DB7219686FABF7B8BB808537ECD6F2 -2EAE4ED626CB161A51C896786645841C76735BE0C2165334CBF577829A5C77E9 -66173902271E7160B6C5D7DD4D7B0874E9A7EE2C5E078834B951A4FB26544488 -1CD3279F060357ACB962EC7A5CAD2E7DAC2D9C1612EF7EFEE399E838013770FC -07531B50A9326D5103C15E8BBB23AB548C2BEEC0E0514DC9EFA8531FEFF6298C -4728CD0035768FAFF64D5C0D1285707759EA2ABF9EF3AE60FA44AD025E2A2E41 -B4F6044DACCB2B04465FBEA8DEC44C86E2EFF0CE244C8BF9D183767E2A31951C -63F5E9501D52B96C2466FE194D253C3234BF4B8F436A754751D77B78C50CC6E9 -E86B1F59A4199ABB5C36BC967DF98C1B17BA3BBD4201DC1B8CFDB99D1CB98EF0 -95DB83EF4631B548E54EA57F452E3896BCA6B4188453CC7AF118BB135E705123 -42821EFFFAAE8BA4181A6EF2D2CA5F50626F2651A7FB656BE873B8962C3AFC9E -C243CB7399B04AD778AAE62846C0FF19688AAFCE8461B3D81A1F50D0C0688716 -06D4EDB60B94C6AF35DAA2888C53D6247D7A1CCB22A9BEF7AC54A52EBC6885AB -05948DAA4E8A44E85FE91C5E0625163FDF2249BB8C7BEEBD84C16B027A788F40 -6EFD35D5F8117581D1D279868906C02981DDD3EFFE84CF9087B5735A9D4BB3D7 -821516E8D1CA8ABE871260D756447BDB6911FE99DC850849311E3CAA83C7DCCA -EAA4022ED2D17B1F65EE64FF20157DBAAF817F450003E8B8BFAA8A9C9653D2EC -56876CC04A46AAEA702B2D3D70C5768C0AB3334CD4B64778FC640962BD87EA9B -A0F21A0132C706675AEB9135266315EBCFBBD358676837ACDE00894CF022CDD8 -965A31C4AC19482CA68151B2A144319FBA904D879C910CEB15799928220DFC4E -CF5B4A77D36B2A1CE58CB3D2CFD0D1237B3FD94524971ACD40094856B12D9049 -B4A3BBE5E4577DA0EAD2428EBC3518950F8F782124E92B59FFC977DBF5C007D6 -32AD61BCE88B7A49D7E74CE274CFB186696DBE630BA7EAC1355C7A8D2EB1B539 -41ADC76733F8E5FAC431AA012B9194054F8C0D715640D56BB0DA8A1AA943D844 -B4F85384602B9306D371684AE1B93C6BA9E50BFFF3BE09E104E14EE9649FD4FC -798AD68FE377490CB2ECF9F16E3C80DC2BD05C14EA2C1BEE87B1B787568C9986 -0C48F7B68A00AA79BFC95B08EEFF57C4AE4F5A4FA1AC7BF9404BEDFC78ED012E -1D8F2129584DABDF695E6C2ECD03328C7D0F204A3B093CA9123BA3B044560FE3 -C5DEF64D7D71D4891C14F42C1AB7897DDBA70762B57F8AAF2CB8F2876AE8152C -09A3373BD32479CB48D746DBB6357102E277B63263A28E978DEBFC432B64BFF5 -E4EE4268600F85CC0EC177111A6BCC76399717EC8EE23296F33C16CF345CA680 -9E0920A9BF967E563B36DA5DAF39FCA7DA9926147AF043C6C72A7668ADC77E5E -F93F5C89FD5636AFF9BEC1C0E35C4BE54F97363B5B6A2CE58CB48EF44CA9EB43 -40761A8FB358F5D55533651D791F5D8481C6B74437AAD1B718404261224F7289 -90E5BB9575E230B0127A819A6E27C71C390C32EA39D15855917918D731C0127D -5465D202056EB5EB568FBD90D3A0A3264F70046B4736889D386F4E1114344F77 -AA7948D6E512836F83C605038A8FA0AEE394CE83436E9B3CCFCD63C4A8A6E52A -5AA8471D287F1C04B6DDE1FE1ED34594E64A5F5F8934D935205CB32AA47C18D4 -42FD9E99F94B35937A2474F695ACE12A66F596DF870A3073E0D1703A1C6A73A3 -71375FA8CC621CD50860AD79D295ECE1A7B6587B86897AF068D2B7D25B1EBC12 -9EB055DE5359CF88B77A6480E975D2C78B61614D261438028C8E26A9102AD156 -96B2CF5678A7EFC4FE1F03B5161952592E533C82060040611396581F1A77DBFF -8C55231B26E708F4E454A1FE2107B371CE5D80AE672DC6D18D1A5DBF53364BDD -D7DC535257D0F5F53BEA58A7E0DFA3C810B88268B86A3EEC2020E990AFCF0D0A -ABCB55D2BF52F2EFE49FD9878200E31B407B8B557E0D01D16A142C85824A38C3 -760AD42D773507EB8EA56A2ACE521D4ED29199EB733D598F7EFFFAAF0DC9A6C9 -F828FC71A679EDCE7A35DDC3AACABC4CA83C83E407FFFFC7383FDACC0F1A66A8 -81BA25C36C530C88F6424FE1BD52FE08476689354B337A6CFE211D8D39624776 -55796CF77EFC7DAF2CA7A39AE14F2D0A58A1A7C65F656B5E89CBD5264C2DAD1F -4AB387EA6EAABC1214B58008A2FA7B1A00818F911E727EFE61ED7C48B0F9D65B -1E974A9E6FC3D89130FB541A33C18EE274856C9BF0F7B0D33BA8EB7129C1F444 -CE4DE1B824CEE0EDB2890D3E5945EF265D6DD1B51CD2ED4CDCC5145DD07180A8 -849721E4E4D545C1D9F66C7EFFE32530B02636A1132336D3C21252001FB9FF6C -56D848F46BE01BBB437B2273D5C097FE972352DE294B83455E878C87A991E6BD -4FF89E060F1B93C3CC6C84F16F64FFA7CA0CAB2E8860AB6F61FA0EB60F558AF4 -C9729EC1672902C044289BFA8B7CF2671C173EB2574007088A67BE90FAE9A0C6 -5B29FB256F0D7AD9C42307E9F57DE4A5542CF83545BE60C3D0954E2ED6E6F3C9 -E56868A62B3DDCF692FDADFD2B6DAD75A7F4A4B09682DA32066BF35501449DAA -474827891C562C4C0CD113BD9D19DBBDBC64E6F59FB422A94DA9D42D253B440C -C8D54A1B07AA761A7EB309A88C5D9668F6C99690AC6E54D998B8E441F3161074 -E3B41F6053D276DA96EA25D2E4C752EC153DCD59735AD3211AD0499A5B9EDB35 -A5414D985880E0EB45D64D88A870B9935FBA7CFC215111A40C5BCAE33D14D531 -C77AEC1C33CC62876C71311D6FE24AE46FCA7003A22251C6FEAC36E5893F900E -0E553F4927ACE6A313FF48C562950D1B9DB8A6631974ABA413D5B4DC61C35CC6 -91C59BAF37842784111027AB24DFB3ABA3D3529FEF16DEAE8D919C83009E7784 -3AB97773064B3E71305AB9DE7FA9E6379DA6E19694FC2325AD6DC1446B38B2AB -5B38C362FDDF541E5A2B076F4D900E99AEC0032E11D8E8DF94FEE7440A64DAC8 -E53E1063BD783CCDA519B1B3997620BB2E99D991D64047A5758ADB937DDD11D6 -0912E555A74ADEABE6ACA9EAD96CF2C11B51CE78BB9C0ABDB48BB8439B6CA23A -8418AC936A40612764D8E27354230BD298EB33D9DECA68CDF4835B961DF1C0D7 -FA6E43AB24263FB23EC2B4B337CAD11B818B9B0E66A12004ED71E4C55AA8BC09 -9745935F062BC327EAFF6A2F3BADAF809B06AC878EA65EAFB4FBA6E16CDEACE6 -AF49E83746B3382E3EBD06B08A26B3C704E637F8F4A6F6A1C0F6EBDA160AF440 -4A212F1CBA96FBF72CBD3CE298B4028E29C5C0470C1164B9B443A01AA1DCD71E -36D196951E1C8DED4F198DBA7A8E2CE8C468D67481A68829A8C530D25FB79FDA -553237E371CBD214054BA9FC6F3B6DA6C7817399A631F15BB446E2DB8F2C33B0 -C9BDE11C460A0091243F23697EDC3EE66D9E70943B665F73F8A8842787A468FA -39B09605EEF2FE6BC4DA19DF5F562826CEA8A85553B4E306A223CE4EA639E0BE -937D726C89FFDD903D40D33E727B29311A08C665885366C0A81C4BACE810ABAC -E7F22FFFF84B1BAA88D51C54EB589A6568E2942E46B029F2CF536705A880E4E3 -BF0F08F586A85B20A9B5773B61D516185D744903A66B75F8C04EFAD3BFC04541 -10A0F057CB7987E0B716993C403E4AC4DF1A89D840042BB77F38A85B06C566B9 -EFA7C9EA0E27190E3EAC23A7183C4B311BDF808BE66F6C580A811508DBAB516E -40BBD70466A4C80FCD9929C1D816AEBC41CB947DFB110A5B43A02751A5546A0B -6F3E9899442769CD26A4E0C5F4D5016AAF1EC02ACCDC2308FB27EAC73504F41E -DA8E84C69CBEDB0549603C0727A5F62163EB8198C8572F1FA15874669244F944 -B0AE721A2BFFD0BB0674D6575AEF4C27BD19C32886971398C48739486D7B8A84 -26BCFCDAEBD1AFB7A7ED99D62EE3584257054325F621D13E70A4B7BA4D8698D0 -3CF2BC22C2C7D09E1D0D4D02C5009DAD1947C8187FDDC20019E76A7776F236FA -968764FF657D6D256F683EFBE41345CD0BD1FD6C79D15D867E142AD6E6993375 -D0ABCE7BA7EBECC4E9DB22A015221EBEF7C9A696C4DAD9C5C5A42A78EFD1C11F -0C84656A6780715C5E152957FD1F94EFED513C70F7251AC329B0AF0EB7884D8D -E9C349DCE5CF58EF5A20705436FE0658EE9CA27A890C1ABE9D7A253E2DD2510C -B723392E3F9A74C7A219299540E5BAC8759E8F9F8AE663005CCA4F7C008105C6 -77BAF1DF07C5ABAF2528C5D05CBD98E5C545E92F8E77B50E8355308ECC575F3D -E18E174F6D518807D02C0E738842A9804676D4B1EB01B9A03755668C1ADD63AC -B5AC29593F93D4857290DC1397C44AF56DEC6294ED7896326E24A0D47CB4C623 -348F3A1FE8426CA4881EF3502D264D57B39D8EABAE1329E588AD8CD668493CA1 -8000AD32EA9D78890B7DB63B131A1F7B87EDDFF259C641D160F82C924D3BAE8E -7BB33B6BC57F6A6662759B65A8135C8E1DC7088D6279E7AE6D25E81034C170CA -7E61C7D9584070F4FBE9D0CE98E412010BC15B247AE43B58F8DBF491692E8AF2 -D73F6A5AF8035C49E4CE27842C5C2B88C96F84D2D1A94BC62D842200AA9AD445 -90AD5F6818CE0FAD86BED3ED7AF5D06C23A7B1C0E16F3CA88CAF9D859BAF4854 -C5CB185148CA6727153880B989E3687FDA4BBA7813F98DBDD946E355ED1F3452 -048AA7F0EDF2F772B9BA1D817D20E8AD164551F58A49FE2896541CBFD4951615 -1660B838703BEA7F9DEB3511191D292D294D50C9510CFD28D77A609B503B9735 -F814AFFA84DC3108ED658D753292412E1BD20A8B45C65DE14E9CC2B83BB642D9 -B12104F83F5B68A71D6747595CCD064AAECCACB1B85D1B6ABF06A38B85FE3341 -FE450335B137CA80207D88867A43A9D4FDDEEDCB981BA80871AB1502D80DA733 -95BCA835DBA77B28211FD91795806B801DBE77B0098EBF827C53536033120294 -4BE1362D29F526FB10D79C837E8EE64EA3D8E295AEC15BB017C8D18F4EA1CF3A -9B7F2DD155061B0AA55A9E8B8DEABC67CAE0D1413220403E4B57F60152B430C9 -6E9A0B88732560D04E5E9C71F8BF7919570526C92D517B2DA362619322E10203 -4B5EA9FD024F57E82DD0F8301E271E252F8D170CA31B2961DB4C9C60E5C19306 -B199C28ED9C017E0305A0836C5C74EFFD302C62835F12AF767D539960E642100 -B0C0EBFC022651EA9305286E320BE4C135BA6A821942472421D7C24D4DF2FA84 -E7FFC88946D757D62386143C32E53BD00CF49D459E5ACAADBE434C82F2B3EB1E -58EC96F58BFECA7110F15E19FF489044CFD49630415285BDE6A9D8C2DD263F7D -1B4A8F90B145751507AE3AD1E179B5FA7475BC144DA7AD07DFD4D3106079A36D -18771FD02C7C4569581D55725B5F206DB3276A13CBC0EB3DE7F9085FD69CAC31 -A111D98F2099F0E770C5299221A13865E896742215AE645B8BF2FBAC45EAC426 -B659FDE76FF925F924FC95B24F82C503D49FCD5008E8448ADB78D43F01605B95 -0F3AF6BF82772093C6BA151710720D88FBDBD7F91548F44CF99EE1E646A4F9B1 -8CADB5695994BE6A1762074169263BE355BA6F7181D35740F05E52C3B31BEAB8 -E1BD4D7B418A019F2AEB94773574AF9236004A1297B981B5CD5FAACB58218CFA -01979D62DCAFC235CBF69C99E171AC8A5ED112E6F2E395697DC8D48E670C50DF -969F3B5FC6FDFE3919CB75C2FDB7E810D7C7DD6EE60F1F6915AE90F7B49BE821 -75AE419A2BFC55E2BC2157E635E6018AEB195F99F5CC39F2BB5797962C8CEE07 -36D5CD05544030F0D1ACC86B8C168CAC6D44274454E4AA7CAD3A4A2F8C580C56 -911A4F84265709195AD2886162183BF33E8AE06DFD0A4D19ECD6F172DBE84E05 -2EDA61CCEA24C675AA7545CB63A34DC535F127E668C52AC8754731876E7F8F1E -95E0B76A9F7B6CFA6FCB9D760D309A8D33A660729F9E2E1A1F760498C875E93E -C67FC8D3BBA23AECD64B49FD662131D2D940D8D5E5F3015FD8891781C3A34FEB -774510C33915559DB092FA4DB7BDB7431E5F8A5714E0044D29F1946C997C9550 -8948DCECDD8194409C9107A29D15A7CE24DD0C1661495F541CD490F800A3848E -8BFF0D46BC4B109948F718AE3F3838F308B512C2ADE58DB756EAAB2F3A8710BE -DF4B7F7C38809DC48364E41B76E2535EFFE243981CCE9FAE3AB1C7042C2EE290 -7A4F67CB1609A79265A38ECB9E0766D8032ABE75712DFECD2A617D188E5134A2 -7E8A5A106D86E395ADE5035CAB53A30883AD0E478802D0CC5BB2D006660FCCC5 -1C00E86B378F07A32CF7B87A3D351E151FC5C0B3F80E91D5ADB4ADEAAC81B93A -06C7114F4AD6BE959B74509EE24E3CED4B1FC719F4390767ABEEA1F8653C2ABB -F6384011FCB599AE191A2FA2AC15CA290AFC02A09FFABB5F96312C2B9A22BA4F -3C62EAEA569259AFB5A96A0BE5BA264829CBBD273E3D6DD2B68F6F4201E8E71D -4CA126DC312F3BB0F94AFBA79ACAF57A1CDD7F7328DF1CAFB920B8AC2AB00DF2 -FB0A2B19553AB58A29DB3439B125CDAFBDA90E38E1552C6EC33B2DF2C18AB0FB -3774815CB1180BDFDB355963489C3175DB5CA612B4D67F8498855822597126E4 -FE532300C341084E1B1835F9158CFE83C4413CD2F16FCF27146063221F5FCB8F -4793D691586DACB628F3C6FFB99123DEBF9510FCABB4488B685B409A70D139F0 -6A0282285E5F2B3F2D460067CEF741400C570F8402F971C275EF00278C493B69 -266831FE34FA75D0F69C92390E4AA06F9D12D51E64D053409ED44A232B3192CF -E265A0F34F72531A3339CE5E1ACC4E17A9631BDA6402DA9D7E403F56C74837BC -BF3F167AA8A10AC0EDF889E69E407E0E4EDC260F3F33D3739F5910527C9A2CEB -A09A2C556D7C9235240A27C8F93262B6330B97295833BF165A46C57EEA148A65 -F470304557D3C5B733CA80FF41B8EFCDEE684313C171B4C8A862F1BF8B03B7DC -0DC3D0E9E5FC8771BE5A0BFB05C3494D63FA5F9F7F756E3299B26701295073CC -BEA51C346638B2A861EC7D90F14CABD2248C5CF72BFC26639574689609412B35 -FE3B3FF28581F2678A10433A5DCE9E5DDF6AFC7329E60FF71BF765EF0307AEAE -D1DAA9F471A0E0CA7D0B08F6DD1C205AA7159C29F617BB3C8FB0C0ABC55E08BD -B194865146A487F3843F681B037218C4BD5C7372217EC944B173EAF093D7AC11 -07B194B82ECCC74DE4830ED08047B935BF6B057D91C556B2CEC807E009E610CB -F667B8F2F44590CEDA8D1CDBC4D20F3F418BA417939226593306DB2EF556B10F -19B253DBB3289C0A616ACDE90B4B72C4F2DDF20BB1BC364E2B9ABA45E3C444DD -FED494334254229F2DB30E74A09791A69E8620A52EC3A8AB36E6B2D68A182D35 -F5BBE508C03E2B60F679A1F1FC17CAA481C36B3E67F6CEF174EB4396E4D67A9D -8209061B2554CFA14094C68240A8CFE8A3B1C00B087A33F5E0E810790FBC010F -B4106447EEC505F322C4F100B33D6FC446951EF1E3B7BC0390E2A67D5E1A1260 -4C2C2AB6A426B8B038E2EEDBB1F63AF389EB1DC7F29214E8FCF04076486737AF -D40B431C32FC363DB28AE74D7C08A5679355542890EE54BAC37AF9DD15A04141 -3ECB7E4D69D2D9C00EC73685E74E7773B9645F0239703B35D633875594963FAE -9EFAA4666A89658D763586E7B93E692BDE864848CC732DF73A363CB67BC496FE -4D76F4B79A54E95553153675A672E0AF0F5984604A25E73649993EC85472487E -330E0B4C86BAB4DF6D611220029FC54C9D6A4BFA4C36107AC5008EB66FCB803E -E5720B14EF205A863CBEED9B500C937EC155BCA00FEC77B493723D66AE110706 -21268AAF3C59A2933BA0298D1F27766AE938E17CDE33D8F1363D880CC0381ADF -48E6BDEF3B55BD82B626E80F5014FA64B966511D4AF533B9FFECAE91870924C3 -113CEF98FF7C1D3D46EE22BE0725E3C0DF14AB47FD565D5D0014ED36A34C8552 -C571ADC7C213662058D44B18786727F28CB660B738180B560FEDFAC0D9CD8219 -B2BFD3852D68726C2EE2A9FE11D0A9AC74725E3B3062409183C653A5765A068C -5F247BD87472592808C26E1C8B3F494F898277C0AC298D9DB49E020A36A8F9E1 -3136D7021D818A876F13387AB6FBB315878EE15115EEA81B9EEC3438A12F2003 -9D1000959B5F5A5158A450EB9F054F8D44F2AF27D2D6F83477110748A275A915 -B5804A8F3D278C01C6A7DAFD44C997A0DBB618A40B63613D07CFA3D451C51D33 -03C10894FCFFDEC9B497E7593C45B8F5C2BABD5289A526DB2A67B1F3601E0B57 -1EFB462B1AB6CC4BBF92C09593CACA2C796F2DA4EE87BBFDD82BCD03A208F38C -A43F5908F4337D5CA78B984479B2CDD0FC2901149EE9F13F344B0B86E091280B -17DF4FF0C26CE81F92620252A98957C411A2A2AD2CFB7E546D786DB112283208 -818DF43427DADFA4314247750657977FAF513D0D807D48989FA2FAE78E9CF89A -2AFE21B84C2C91416191F3E2E8D867F7A98ABC7B725C97CDCCDF8CBC3604F2D7 -723852474F811D338292341AC42031F198BC59218088C0A31863B47F0DB0F163 -84A4F1E539C8E196B4A3FCF660A6A05BB8C3A5FD56C0B02B27FBDAFF95A05E1F -43C55B706FC2A5EE52040D744A1DF18D435619D86DEDFC1C8046612AC10A3681 -4D09396F41E0163FEB1341BFC6BE641A982BEE3ECB9C7848874DE8831C777603 -EC9DEB70018F340B6F054E2CCFEC68B7B05E2A8E412461D41721BDC769BD67B6 -E31BC9A983B145A78A4561EA8F903E297B8C2C6E72A18AEFD6D7798FACAD3B73 -70933611A6C3560E6F1C40B84D6AB8483612F7CB94A0D0218AC49959D1C3B2EE -24ABD913E36FD16208E6269C3852C71FE1D42577951735AB30E65E5297896E59 -359BCC3629C9FFEACBC97E5D20DED2112F66E7CAC5380EC67D7C3AF7108C06B5 -14056CA27646ABA7858456FD04C16C8EE6A517B122315925F704336249B64FCE -B1778D94082239DC40998268A023C7F9BBAAF71789EACBBDB028FFCC6FD160D7 -4FE0505B23F74E1A074790626E66646F65133D7E3F4F0AD1FDFA816635D24120 -2B5357270FC15CB041FB85D2F56AAE471155968573B4C439ABB8FE5B55E9482F -8C4AF71BF68325745A149CD38C1741A6771CF60CEBF7927D5D7BC896F525ECD1 -4BD25878595736CDF90E1BC0C46F760BA86B250C9B195E7857A167EDDFD6EDF5 -CA7F33929A42C4455DC08A13012C6B8EAC49BB127D950E619BC943CA995EB9EF -6686AEF9E5FB2C146D133AB4F7E2FFFF44E01700F6F031FA39C1BF117197243A -AC188D40DD39B82A1857EBC78C5084966CB1F824956ED9E18789D98591F262C0 -C5D6F8C2FCE9A151330C2463DA790C85C50087CC229A5AEE62719F4011CFC3E1 -A07E4C3294EF2E50E6E7E3968593B908CC73E801ACDB8B645C2143FECFFF5C77 -74DB00EB9774CE7C64949B1AF21EC1B218848E9E29CE91AFCD03982615563EDE -73605E33B1B0E7E740C7BD11BEAC2CF89DB02DCC30A54D6B60C19C386F9DBA9D -0819EEEF8EE302DA291E90B1D70CCF6BD5C958579A801E9D4CCB14CD4E03B197 -865B66EEDCB85F0EA2FB526D70A757CF8A7C5B37E05DE8F78898E727A5434373 -ABF98B839D0AF47E512F124913EF2A09918C89EE934DCBEDB8BBE36315E2A2A0 -30D3B7C9D4BB8F738CE8E686759EA931BE4CEFEFF3550A0DD64039C230A6A9FB -F40CDF07EE15DDCBB38C2DAA5D9E328843BFABFCF12E93C4292186EEB8F51235 -51ADC3932CB05DA5AF20B551159F13B93D9B5040D04A29EB3D64BC3F79B2D06F -BCCD7C932303E57E64C34D52A553E90C85A0877B57EDC3FE976CD6A3524D2581 -7CFA6F32579C54634FFD469D060D4353F0965474CAFE59C8C1F11CD1B9BB8332 -F72F8A46FEDC0851DF4CFFDC5659ED8BEB0E329312EC88BB0D08C5F12D2F5E22 -4BCCA17EBA9D1EA2E407FFFFC7383AD24F4187F8F476030CA1C8A71B0BCF4F1C -290E4C968ABDBFA6D35CF856DCBE432D11F7F39D3EB87A8D013D6D80AA0AEB49 -B33188EDBA9C09F62DC4A7E06844A5089ED60D619956FDA33CA1475325CFBE1F -A39EEE88E8B556C5822207ED746002311946570B724C597B33669C7EEFC573A0 -5561D4341C21CBAB14E583324E5B66DA0A753CCB6E4C801131726766D08794C1 -D9797196E98B8E3A5A1DD18270374B095CC3FBE4B17037C055DBDC12C846E02C -FAE2147CAEF216A5A1FECD65990AC2C15E08EC30F880F99229A9286C4E65AFC4 -73409A183F82EB2FA5E5B60CA51D1490C53B9A81FDA289217F14F95651290FA2 -1D59E8456073945B10B7644561C15E5D0014ED36A34C8552C571ADC7C2142B29 -4178DE58D98192144970EBC5B25A613492A174655D85678BF3FF0727B94E23FB -0A1EFB195DEAD35D80CD4D1C6EE919C34735F10B3E2FDDB5298E72FB76777454 -D420943A4876541551C769EF6C0B1EDBFCAC616DF1A839E2DF940F9A074440DB -A4375893FDC73080640EE3EF6BE87EBF525AB4076263B49784AB7D637241BD2C -225EAF9E732387D4FCEA7D97445C1DC9386DEBD1987279C753488E52F2FF97AE -49DC99A22855EF728B3743F2B9496B3AAEAA48288A3818DFA171AC54CE1D6FE2 -4AE46FCA7003A22251C368E759A57C1B1D67B5F907B4B1304696B77343F1742D -54356D83326B0D545CE6B8DC49DB5726A3656FEC57456870BD7E64EC7F6DE890 -4092A8B6845AA15A81595D0492029A3F4345F9908DEDA9A35BF9298A753B4360 -FEF54401B7FA5BA81CBDD4A9A4810B46781661CCD72C20F5E2444EA6AAA8137C -474CC789F9566A0DE3C615698EC35D335F66E65680859673EE6A440A589B3603 -90E9A8A5416B446F1CCA55C9BFCF1FD7764794CA151C70B380466E377DE82A00 -329C607B703A9E530FE1BB6705F9661760CA5A4D28C00C9BBD26C8A970802430 -17A0AB8F65ADCCC409D12F86A14DD4A5C7DA308F5C5C3C70A89D76AEF549FBA9 -1D657FF06AABA5BC25C9F83F4652E8B0010BB095D1BB8CC8938FE1A725F848F1 -5DBAE9B5C7F3767BECF1C2862197DAEBE12E9FD441015C20F8A2C7CA041DB79E -42CF5856A0F0397161046527138CD2A6B83F242CD7D3BBE4559246C9FA7615CD -1FFA7D72E763B487540BB51DAE959137EC348899D7652E9A512A4D6804B4B23C -BBAFDAB3FC976E0DB7F4D8FD546F0A68E6973464A7F23BE4AA34C545F35E0F24 -A3824D17FBE806BFD987609F4E2AC1F6C8A56F2AD7BF3AA14B3AE79FB3CAE949 -DB069E5C69D4993E654E72028390CE59D54CE093637B92A283E72839A9806A70 -E8ED74EE7E53A7E4B53006DBE34E767090910A9D3DE174AD6ABA512884B03BA3 -C0E60A55961A476567275A2C54FB59140F85B887E8C2B17A5482CC1BF1A0C9DC -9D7A3AFDFBA7D7963CEF2742BE14F2B4C476EC9354A759A85F77B928F8E2E6B9 -904BA52EE91D736A70CC3AC0AC13066B2CF6DBF5ED05609E3009FA466B17FA0A -97BE72D58FCCECB5DB7221EF2057500237EB1E1FED95683C903A99C7D9C0CC4A -4A89B8BE23C75AF2781AC711EC68B29FB5BB1F3A6D5103C1AD19F9A89ADBF284 -2776BDA75B3CEE6B8B16A472C9A1269BFE3A492B5749D402CF176A499008BFEE -4C5F7BF6960C8E0FC0D69DD282F277DBDDFE4BD695497861553BAF0EC4FC2FB3 -4BEA516535300E343C13B7ADD37B1F6C29967529A4BAD58E1F82282E4552EF40 -52EFC81F7524E83F7239E6EC34630E3DD28B0E0B15E423290FF879FE8BFC47A8 -6E49037E8773FE82B7E0A62712FB9B0C033EEAE87C5EE1B4EDEE8DBECD8C5EFC -80A220108282768F39E9641FBFA6CC820B82A22191BBE5C1638CFA5B1303F17F -B746D97881EBEBECC416209F3BB8CAE9B1539EB6A8721B67003BAC419B073DBC -56F0FFFAE7266ED5439B5631B2420339423A48576F652E61A78ECCC81FDF9807 -01DBE5BDFC566A58B68454EA4C2333D775D4E176ECE2C70273F41162443F70DA -337620EF06BC9103D7ABB95F3508ABFE1017DDCC5C38291E2EDB6B87A3710F9C -7066B862C64CDC8682F4371E54A8B358C7B5EDCD9B5D8222102AE686821E08EB -A5177C9745B8EAE3A1EC4F117A22B0C1AE7037731F9AB167B820AD80DF62C405 -A550BB7ACEF3636510604ED2D6C44B2BB2DB81ECFA40B16226B9A2EB39D15840 -EDA7AEC4B64266481E4F07321F68C4733C612F428F425A1943D6F8511710CDD3 -BB5767487B5266E5A4094DBDD786B1AFF698A4E2691DEBFDE89719257F780623 -83D2C1A29078415ADC8A8D23BEA699DC2893D4857290DC1444A646728330B9D0 -ED26E6FF885E2D243E3BD2BE2F5EFE3127C302DDB1E87FE23F11E21C8A8C6F95 -0DA342BB5A92E860CFCF81F4BA5477FEBBF2BF15C36AE5102FE3B76F5D2F9876 -C108F561111A87BF5A78A036958D506F0D9E1C10C45238CEFEDD60D974075C16 -721BE2E738CBA1275687CE7E0FBEC4EB740B873D242A181D3022FE0F3C65FF93 -374B1C7F466D85131C0EAFCED360A9270BF7C049F570B5184EC0051F70FA13C4 -10FAFAC56DCBE7CD996573A6D0313F55091CC5BCC1A675A618D4012B6ACB6AF7 -0F12FF3ACC84F0E494A30CF8D276745C88DA2EC25B75C01085EEE69AE2E2FE28 -E7EF6933B10C9F7CE2061F36A107702071BF7B2C3FD3B8D5CD433FC2636CE834 -0DE56947F7970B76BE54F518A09CDB7F557F30E8A7B10F602B7934BAFA5000BB -921972C220D291372C1B05B6C1427F88669A1995923B5A13F14B2B3C2C7D5C61 -F187E979A23EB33118724176D9A1530D401FB487532450064197078DDEEC01E3 -0AD9081326C9D3A7343DB2FC155A510BC2131C39B17A1E279BBE7401186B355E -58AB8487FFC56F020A0D5773D1489DD7B6F1BACEE4694763B342DCC668575192 -24814F28DE13B974FED7474D3478BB816106ED980BC9994C48210070AA4CFAFE -399853E3F9C47153199DD531E1FB405D9049F0BF2CEA26F4E397C0F7F51592CF -4C952C8B7044767539C6E314D908EC23D286C4935E67B3B9339F338F77149907 -16C2D5D77E67CBE2333ACD6F7E5034A9ECF725A526C6D9AEF0762EC59F4F080D -DE019C00578B69CBF60BF5CAD8E57397FF5476EE7A86DC0BEBCD356D40C53D50 -8EECDD32B10DF6141F4C5264B9BE3BCDABFC49721A2578B207C8D5950B844325 -3C759F02782BA38C96187E050534E73B9218216718410E69CDF6E34092818476 -9F560847BF8C38EE70C776EE7A114A4A817A05A3F34F3175576E4531770A00EA -4279C811155361073F65BF9F09CAD5C9345E05BDC9E879EEEBB609EC1AD41DDD -63C927878CFF6276A54B70A66CB292B593C198EB9C0AB2645E8040D2A098AEF1 -086AAA8EDF209EFC9AAE47C91A82555B3B2592FCAFA57D0CD8DE86610384E4C5 -4102864A275DDBED2464E20312CFD99DDA77D46407DFBD19FAC6A39573E02E96 -FDBAD4CF2B0D79D17114BC75D5437B64D1159EC8596C01329CB38269BDA3E9E3 -38FC1235AF17FAA093A03ABA1F25989A475E324B2117A94A65D609E95DD11CF4 -FC0BE4C5532A3ABD21F49B35B7EE0F61393BC976B1D2CE23F32004311A7EECFB -4CC59352B03696508616623C00E7FD4C56E69547B5F5B9E5E26A35D18D789AB0 -841E5820FEA8F638A46CCA01C5DE1A2A9A74137B8F33DDB8DCDDCE93C105BDAC -634953C121E92EA2733D8F29E936CDBF37CFDABDE4D99752B6EC445AFD7EA207 -100230F364A51770A7CF13A8250B9C1A0D252777A7696722D1D562D4AA249D1F -E4F0B9952DECEE2BBF6631ABAE6A96D03FCF803CCFC1C9F8D78750CC3B079243 -344518F7408D79B93F9B37BFD1A0FCB1710F359A649F669DAB577F37002871E1 -7B2F024959C0B43DC6923464D018EFB62536F7C52F7BDE58D9816158E8C6B9DD -4C3BEA5DFFACE2B5C030A7D2F02DEE4BE14979CFDCE5117CB2E1337A8DEBE30D -6791EC4E89D76172F263EC0E28EBBDFC550CBE12A13C8B2D6DAE2C3C63F21DFD -8B4071EAC1A6A4D7A43E8902A5E8A2DD3A24389AAC09586077689354781239E4 -8936C705A92BAE86A97EC6F6BD97BF6CD7E211F0363C070B8712C34ACFA17AF4 -40569D8ED4C1B320375342B8752BBCD7CF8463EBB376C406BF6591E6FE5E557E -2106A817A02E1AC882503F4DD682DCBC9B6C458A3F4A53139FCE87F14739C514 -452805FABC555605418D851BE78517A0088802A89A1D1FC0384018C2D56A3990 -EEBC4C7CD636C6AE76C2ADBA3125358ED3BC4DC803082D16C3E275C94163D689 -B7A043AD54861C74726264C1BB05480AF125585F7C89C334C577F78D8EB282C2 -06760D8A721F817284B06862E7B1FE67EAFA4CAACCB1C6945362973ABEA2F092 -A3E45DF945866220E6749780611DD23E08C45D70AF7FC68B14E0F24DC1ED9D74 -EE64AE761F12FF22794C96F8B565E8CA669BDC27B97F4A0F15C93A619D23382D -4BF0ADD34C400EC269707EB08A5ADA04CEC21FFE4B7B27A5255D6884C7AE701A -4596C87ECB908FA96EEFC59494047EBE0D2FBCD12F18CD543039DD09679BAFD6 -4EF6E130EE238AAC05BECDC1B077FEBD0D485F880314EBE049B2DF6C7ABFC840 -E57074709F7BB73513A9C36DC656C72A66D3A4359A8DC08CAA7A5191F1641754 -1DE0FAD43B86426AACF2158538F0477F7222ABECE81AF10F3AC45F63D7A5E98A -BC7B33919F11E16B73526B039A6BB32EA343C41B925270D8F5BB64BF440ABF0B -ADF1D3B55C7FE80F025F85A1FD11E811405AAB3A4638DABF428F8BEC2DBC4AC3 -6FF1FA24B54E2248DBC10CD7454636E97E399A7E06CBC677F0352167E53BB561 -5E30780458319CD708034FA5D50D15A83A0B408603CDC6B2E6E8EE3FE354B64D -87C7DF67F88416B4684E61F33BEBC1561BA8D526E8D6153D01902A7B60645B15 -35CF943BF2862E7DA76FB26E5EFA07E8BA7691178C0D596E109FA7B11F311123 -D77041BFF4E49A593F43BB91DFB1915C098DBE87B454FF6E93F270C2EE8EBDF2 -768EF528A49FE1202B31E51622EA3B992518581F1941B689696FBB73F3CA4D48 -000164D053409ED44A232B3192CFE4CCEBC79A9BF8A9FB7F2E3054A705AE4325 -CB1E30231CB0DDDDA3414F9F77D3FBFA2946EF02C97B3931A2F6F08731634F31 -FDDC662402BFFCFA1BF557F94B1FE9FFE39CDA38EE1FA9FB5C750F71C4AB1797 -7A1A7BEBC63A333B4D5F9E8FFE14EC52AD6BC703EB775EC287FAADFCAE91E8C0 -85B8FA4718E8F603A3CEA0D867B9A3843CAD35146BC03E2C654BE6C207EAFFF8 -8871EC117AF693E5EB6F32AA7B5F87ECEE98B147FA6DDC951DA66FB4F34E36A4 -502587042C7BF9804BD0F19256EC5A6D4479CA0965A7A918BFCBA0E1FFC84865 -E2956B23FE914F02167E4F1573A4CB68BB2F0FA2C76AD93B70DAF8B686861D90 -0069E4CAB1F6556AF49420037A908AB9B06BA8BBA99AACE0B524CA6B3611F7BD -56CF5269028A7F27D4C865DAA62EC2D4975E4C4BABD353D1BE1FA5202AC03166 -45AA6E79F82D3080BEE08DD91C16E50698C63E340D8906BC4BED2B581910D933 -D8A3E7CDB48B0D7C3E3FF2C103F769CBEC1B7ED0E2E65C431A2C270E9F700292 -BE7E9636ADC6BB45060C94C54B1A2A942B27D375490CA2CA59A52AACA65D196D -846AC0DCE9993C761C9D1C789B9A97D64F2FD32F3598C8F095B673A1B277789C -3C32B95E2633951FBC2E5C31D2A58E09065562D1DF151237137B5A5828F3481E -E03232D0A0DA4A2F1D8CE9F946AF9F7CBC582239C8F87677EF0729F6A6507B35 -E8B56FF433CF8586CEAD196CFC2ECB2968F4ED48C4227144F9CFD841A9D8F9FA -E80720E2BAF6E34745916CF64EFF4AFBB2C0D93C1D85E0635BF92AC4DEF726AA -CE31E32FCA39C37DE8DFB217422F43524E56F4739E706965E71016AFE4CD49A7 -1C7040444074BDC90FF1692F84FCC3A3D588D038811B7C67647CE47734D1CC5B -C9A9BE0E1BD3D01C6ECB705D2B910FEEFF1AAEC03675699D94CF5427105BAAE4 -25E5412FC4A75203F2B3BE4E30FAADB18C03FB174B84787F644C42555634A746 -81A192E2E22BAD052619A6CEA8564DBF7145BC5F59B4395881CCBAF2C42E4AF3 -5442B0E0652B44E449388FB7817A679888650573F1C9F7AD7CF20CB97F9C9F1A -BCE4D243A13CD55176366B5B28AD89C6C140E306763B3CF62F8D188F20809FF3 -DB7EB158489D1634006A9FD5D1ED3DEB4D9C9CDE16A6122095C0F97115306585 -F5423A84C87C7BF119A77328520E40365C86A939704C561DE0ACAA6B4D82E60B -C6720B050C37FB5A2F90A57149A835B02533C33B93EAA774D4E491C235FC89C6 -94F5BDA0B80D40BF0E8147397C75E26CA957DDD557CAFFDB72AF86488817BF82 -D908BF63F64AC0C5B27D74B2CC4C702BA0CCB76532F18575D38EBD126E622D0E -2DA54AA0698E72EBE0105DD7FDDB8145CE371C46D33F56C836BFCAC1E50BEC9C -1246FECFB2B19EA03D4882B82E16DC573B59817831914090843BCAFCDB8BB268 -10372F840D0156BBBBE2E2896CF3E5B7B98D9A4A9A2438E956F584599D03BD07 -C6659ADBAD688E2C594847E28D80D586B1AC6995FD6E17404345DFE38FDD9699 -6D3588587B2B01C3654B195AE60787DB399CB81A19CFC180BCD840CADEF7D4BF -4E499EBBAB0AACA2517D9AA7AF0B6820671811D63EE05B49F9F3C45B01F05655 -2345D693624E2F4178381427F5AED3784CB873F37B5371F35AD451C122C0C55B -CDB22E1F984F495B141F1375478DBB41624E57F1F0D63CA0B11C9C9735DE70B6 -9A1739DCAAE01F9BD3725A1D370DF51062DB9BEDC9492C1FDAD99D999345F5A7 -79E4D4D153235E5476F0B3A59CA465156722E45EB0B39A6BC253ABE045D02E06 -83AEB792A8E045D37C587DE43BA5AD2E24ACEA6774C91E41E88B83E3351CA83C -F517684ED5C21C084ECEF4405FCF7B543310B17221420768D115F62427531DFB -61E56AE4C363C341F1F04C99F38773F2EC3C62259F4C7C403ED553B9BD63F7A6 -50CBEA7F0F487587E28F976CF20A782776BE7F9624688D7A5C89C60EC5FBE63B -EFFEC0446D20B76739F372C3103DA920D1A1F542DF2520F9CC5B7F2B9272A073 -5C681B612CF8BFDA13612D8ABCDC3C595AA32928A759EB7703F10907D61BE216 -4BF79359D1B296E7A4CAD00C1F7BC958C7B556C5822207EFD26576E76D31B23C -C87BAAC65D3ECCA28EF7FFAA0FEB68CD49F45BAD15222735399B0306F96000E6 -FA1F1AD338CC17E17E0CA5C1F43AC1C08A2B50C3C786D15DD2581B17AC9F57CB -2100ABF625BFB2F9B3AD38AF09C75219398DBD3FDD45B5F5A18A5544EC348CDF -220FD68D1E5F12D02D00C3C5BA1F5D192C2FAADE11879DCE89B9ACDFD83095F1 -24486B43B8ACBBE65AC89A7B37AF86DC4E4AB89FEA84C466F0ADD0F75CFB4C45 -1D34B2C3DE31E4E520360DCB5829CB45EB3ECD1D3C9C550C26992BC9A2BF3A71 -8F0E6D91FE2FE0F6E7709ACD520B9B4C47E0081BDF2752F35E902FD0BB89B5E4 -69FDBC4831EE47591A10D6B7587CA36C8712E36D1C8D87FFC2A6D3E4EEB355C1 -0F588799D49C30612EE3079C4072E6FA901DBA4BB4CC54F9C3D880C5207C8127 -480BD8B8588BB274601B3119FE4CD94D8EE405956E3B9D418C4407E987DD1659 -74A8C447AFEB06E4A4AAE9DBE321EC7CA8CD79BEBCAAA4FA7A54B4EAC9940F6B -866260134116D47650F83C296A65B677F99CB6978AA0E9ADED4A97E92F225C6F -BF92BCCF21C753515F7C1D718777D5413F93364C25ECCB32D60ADEA0BFD5C81E -C0AD7DB21F765FF70EE8B3FE8E10A40C93C99BB67781C0170356357B3542790E -BDF13123FE450883DECCA7FF068C88E79ED8153105CAE3818E1B5BFC5D5A5784 -E9F1842149E54C675695018FF1765181852CBD82C7828B790D5A9669A707B677 -1BC0CBCED5F1607B675D19793B5C1DE396B43AA070D345E154801911586F2061 -A45D8BEA5711A149908D132DF202E1B5833C7DAEDABA4741F369EA4ADD2A345E -E25B121F5A2A231850268EA0A8DB0CAFCD7C199D2E7DBC7D8A8567D6E3515949 -BF12A758C3C38D3816323CE98F9B1BD0653924281F254FC8A135610C3E738CDD -A1505F27504B85F0F16989E85FCA275411E1ECFADB4574821F26C6740305C40E -91664D0871D43F3AD23CAA6AC4AC771A78332421B4ADEEBEA1E478EBF5015DA9 -04398E85186420ABE61F4165003FE0BF954410455F1E1CF98E1CD9BCDEE59699 -3FF175F92BB48EE7E3D074F0471625BCB886B6CE99E03905EA5790FEC72ECAC3 -0C35FD1780852BF3248D6E1D4489289E815290381463C72BDB9B732001252A29 -42C6C454C2EC2E3CDAA0BBE84CD94A094C12DCD950DAD2F3EB28E8C2E5BAF75C -A04E7D99DB37880CE772F5A9EAADBA36DCEA5054940D797AB7E3961E4A9DC844 -1FBAB5BD7E68C13693EC4D97DCCC8F893A69874A3F0293D687F8117DA7414B8B -B7EF455C242812451BA9E1F38575A2A1E49D9FBCB26AD548F07DFC738AED5790 -00BFE3D82563183AF540749D88789C53BE64E7BC67EFA76F4B319D7B32722B35 -CCC9B8DF7A40109543A0E33F06DFB8454F8E31A1061ABA7C868BE71E233B74E3 -5560D4F674DD6AA349720167FC7767739B2771C9062B9B92C239C0E8018952C7 -AE3F0134DEEF9DC00FAEE97A20A63399B28E406FD90CC42B3CAA892AB93871BC -EC8B55C960DACCC650EAEA2383627BF5736BCA3DE34E6215CAE3278AB3E9CA87 -CCBC6CFB22842FE646A1E2A3BA85107930B66DC486A1E1F78EE5C35B5647491E -885469725CF356762F017408E65818FB07E86DAB7FA029F067A65A571A5E54AD -F6E34988D7AF69F20E64783502B0495F201E46DF12ACFE83998EF726477292FD -3F1743553D9D26389FAE433B5CA2007E75A36CB09FCB96470F81292E4437C8A2 -8F5949E502F7D48121F5EDA252F0C02D7FA31A958AECFB9BA08D6A7388E3464A -38D1EEEA64071722A5C2CE7BA89F220A096D9D9F6D9DA7DD0EF8EA89875F1BA7 -2CAF550116688CBFD9976419943DFDE42BA1351FA2B4C0C376BE3EBC32606109 -5793E8AB02E2DD654B33E9B2F6532264D6FF860CA83C4820411C64DEFE53DE75 -7097F9B9BEA9DEC0412DC1E7F2FD6BBB7A442C60C270EE7CD449BEB637BAC68E -68513D645170342BF3F5B6B2906690D41B787C20A359A0CF417AE9DFB34766B7 -3FEFBCBEAEE982C7FA09872CD93228D9FDD97CB2DFD3A8CECDF954E651B265C8 -DDB4DDE2830A14C0755F198610715497908DA88113F2A9135365ACD7E6E3A7BA -B5B14E461261549383C68DFEEDD25CE29F2D27E7A53EC4A1BBDF2898F79D701A -969C67C80F1C6A1B012598149E38DA769C53E983739B9E045F1681269E24107B -CE6BECF3FCBA1EF02347B5CE65D99A38C4418DC3D038151619C6FF36619FFC6B -21212750EF57026C436A844B59AF0F0EDC11C6CEAAD6D5DBB7A177821D9F63DE -FBBD6E5E186ACBBD3FDE3B534D1676FAF8121DF0C1C992A844ABBD3EAB3F9B1E -1CDA3283C0424B11FB2A612DE94BF4743C8ACF765712D191D61A170F8DAF390C -7A5378DE013FE008DF3217AAC6D52F763A923535CC35763C2B61D2B47C0AA75A -0AAC8706E18BD37D29A3BCFCE4B471F99A317941E18CA27973FF22A0D0A5D885 -6A27D13AB23F687A366E412839A1E3B88E00AD7FA9FA045C41D5986EB0A40B5A -64EE578CB6385FFED63B16304AFB4241A91D08B46A45900A74132F3E037F3F49 -26F77E93CC404F5BA7A5D9F8C4C92A234BC8005B4E4671241A61E61D9492F9B8 -173A6C4B9D8F3151A268EBD36FCB34A44710846BABE1EDBB90D57A46B2993438 -76CD50E2FF8265F103D9C3B46E57D19F344791CBFB5F5BAF705B783CAB4846CF -A15B31A005C2E3031A6B81AC3D0CC02D84D1204E0B540FD898006CEB1ADD9053 -DC1472EF927447DFA54E1BC558F3D4512D1AB5534D73CCF860F4D5E546A4A5E8 -86251E3B1B30472132ADDFC2BC4404BBB07BF72C738BCE8FFAA6135D164A5719 -4E1E9133C5F44E0739678FDDD206F4785B04C351B1F1DCF0DDDFE2FBF0567790 -6C9BC097C00A71DA032BA85036B11511FC54641A6B9763034716220E340B3900 -6E78E1E17DCF8DD2D5EEEFA6DF697ADDA60AD2549CE4F1D619A49399D391E7DD -2A15F01E915C11EAAD0AAC6F1B527131E7274EEEAA28E4DC8398A231D3A44BC2 -9751CB1B2D860519384E909D9454FBC1E9DDEA7A46AE14E617E96C5195A29DAA -B15D42B9817E73A24025E4D686FE17DD515FE0CB61A4A575AEB7D0BB7B21A441 -928177663BDF60082659FFD2A78BD26EB218149DB927D7A893731B17E74315CD -86F0B80DAC54E27051D23EE8A56FE4A9CAD18D0139CECDA56F30DCF88F599FFB -C52E4F30F56A0D4608DC7EEEE87EAC19E8DB993DAE9900211D9F79E244A59B27 -F237C95C7824C90A26342FDB0DD55434CC97FF33511D4A1879436E166811918E -892631B6F065787C8C1DD5A11EBEE1C6A61EE417F8E4B45A1A7F1F50DFE01589 -E5835B0DD4BE4C4AAC9C5F0C596DFF489F6126A199A07F34F791BCD00514333A -4FD2950BC177A79F525549B7449BE2C6C8BB8B9202B5425263690ECBB953164D -0D78C30A0CE1F30EF236BC24765B6D63AF63741979196DF6FB2F2175C4EA3EBF -4226FE968C3672FFD06208B0DD3FCD9E0602BD13C3593FFECCF79AF4585B72CC -600CD3A21873282B98F5C481E2D0012A787FE5831EFC1FE1A5127BD552B9ED71 -E62A9A50627AA65BDDD1B3233B9397E1FE9BEFFC43989B5E6C1AB2DEF8B54FE0 -42CB75D5A25F3767DDE167F368E66F83EA29A812824BA6912379CEF50DF2BAE3 -64717D4768FD426A85C5EE149F191CA800EF6358DBE6DDEC6A071CEE8115D7BF -174FAAC6A8F403271FF26B649EED25908E20988FBC4C0D0F3A2A3A48C18B5AC2 -DA8172A2FA4CE6BC64D5A1E9F9CE271D4EF02C7B3F4693DBD40C23114AF5F611 -8F174FBE4846B7575C84F336D46AFAF3B6AE9376E4B2B5C0EACB21DA081374BD -FD3EE818C316B7D3FA7B56F5C509A9702D2EA19ACE398A99303C380716DFA22A -CA954BF588F136D430251A144601DA87D45D7133E72A58E0FE79C07C7EDFEF9A -2FE1D23AB12476A1FB849B502507EFCE18DFEBB2722067AA0FBD3918F7F9AB04 -315BCD13B77C35BC9661B3974327FE71850C5B34DA1E28C32DBF60C14CA596EF -E21AE8BABE1CDC157D383CF8F7473B92B508491317B3A7BA41DB5929C1528624 -27E6DBD49EC5C8E1ADF63DFE9E3BE2B2ABD660D2BC38E64BB6C1DF9165E00D29 -054A5911CEB7B90DAE29653DE98E34B94F82E516245AB0877A8E26B0BA474841 -88FC01B0349E045E151E287A2E692C941D88C63D583D1AA7F285320CDBE800B6 -0F67191E6BEAF8EDE7C2B44A430F38CEF6AFEC51FEDAAD95397888B7D061A338 -769616C7C50FD29A563527BF8623A6AA5846D2821F7196DD6DB0A566363BD13C -EAEA2571B27421D56596E6D3C83F5D94963241125C817D6EC5AD4F5B979C9634 -EA4E4DDC2DF0864338E1E66F20BAEC0A9442AE03B50588E9EEC46E9AB8FA9A5F -A8C0F144423F2D8F9D3C44EF68E4E09A0E2F984F81E9BD06D9A9A538C0CCFAEE -25746A9CC00F1C5DE9D0FFA7FE80F879C3B5E9DBDB4ED0FCECCE0E9E710836AB -97CBA97411B693546A8FF6D529C5F085BDE380B680EE3FA3FABF2B71AEA4E13C -9B978671AC30C412906A5BCF8807DC55E18DC0E5BB406AC8A317527EB8E0BE0D -8C70324795007691A3D3D3A52C0091F2532C4C19976E04B58E79EBF46A2A0BF8 -2FA89594BD032675C7663104C34F7F3C8193412F69AE7246FCA44E44584DDD2D -ED389F86D5FAE60EC412240A40A111F2D9EE43919C470B3DAC800159B494593D -7F7FE0FB41B994AD131029C4A51B637966E0E20CFB779E822E278087B358D2B5 -82137926ECD14BD2F3E9EAA488381A17E9517CA33B6AA606ACE7A7807738D360 -D0744E4D9F0204E2B7F80CDC9C4101F8F792B686E5AC2CEE1D6D1FCF229848D3 -2BF2E940115EE1CBED4DED0EB9A57805037D92124A03F3750B21B633A1CB91F1 -A62504A20E63D93D6F504F36431A14AD355268BE490C90D67851A7C527379808 -1C4E42774A0E97819400EF939C69F5C45FFD14F04A546FCE1B927AF4B05017C8 -CBAE0BCACC94F1660E40A493A34CA5B39325259209D09EAC0C3342F4C4508687 -FB49285C7A49268B60A9384DF835A79D24954346C854C033A1BBEAC0DBCF5682 -A6E25960467011A1D594F9FDD3FF2E6133F47679259B1445DA68BD3AE4E609EA -8C3A730322B176195BA14C13C2C867491364D57119DE9D994558CC1A4F8BA05B -F4EADB44E6568EF1704E6CA60D1774E48FA186DD9C6A371FD36C80FCBE83B62D -CCC0A090270EF6B410D7431A79CE9ADD196DA187E37C930DD68C9DD396976956 -DC37D0A1AF36CA73F0274FA86491AFD607912408F17CD10947DEE04887001CD5 -0B760F70914696A7BD24629ADA33D46E968C096BD2B59BB74BFEF13AFFCDB4B2 -1E54033E02EAAFB0B27AA4A0E19D5FD519D9E111AF73D816CBD4695F794F087B -023363E3A5C048FEC738F84801ADCCE107A624033BADF6D86FC17A3D5FB823D7 -893239632144E3313CD15986D288315D5123A91D30C8DE870B14C732C93915F3 -AF57BD8382467DFE44E88EE24ED423FA9366CD074FF6977F7A92752FB55CDFE1 -D00CBC019A6E3A33777E2B5CBA7D7E7BABD8B7C191B2796A7672ABFAD8A0E6E0 -543C6BC5312A4D56D8154CAF94CA23892203527007145EF3E344A7A20CB27D67 -C5807A4AA045C640531F5E5B8F702D27757402E83AAAAFE4966BA885BE5235DD -3D50A5332AE2C457A2C7848EDC71D17A71530F250436270D47365D45E70C5E51 -FE4EDC6CDFB7D0DDE027849BA59F70939ADE4894BF36A317D699542AEE0C19B7 -D84109778F73820F99C82F94D32E1AC7E83B733D482100AFA168DA703E5526C8 -88DDE12057EE597E77D486D159064B8EF9053116194E625020B56DA1BEA002FD -41E0A53BFD6138EDBF43070BC392C905B89E456CF2AD1F7C8B0165BB593B8731 -354B872BF2C0BFDFA083B6512F7954BFFEB4B0D68DD18F4406AD9459756FFD8F -5C71225B69A2B2DAE2722FCD1C1B1B5518CC3FE1D4E398F015DCA2A94B5A8BCB -D4A5C099364D7C4FF94778282D3F3822EB425F396C8D54E3B043C69974C84711 -3B09C57DEA203DC8B6B1A41E8730A84DD6524A30DB6972368B7FBFC2902DDB98 -43E1BD0567637EDBE3895C4E7B3DE356FFEC90CFAA907DAB2AA2B453BADDE82D -88C8C0DE4ED8F7853E85D3B4A939545360E6A2BAA8096D5D15D99DF877EA14C5 -A0169689BCDA6525C35B175A6FA113F7E427E992F0F94B379DE46AB43A2E4B5E -97444065AC974779796CFFF55D0009242FDE6AAE4A8B7760829319C95757ED0E -54BB483F8358472EE4F6D347B2636645E6488BB7A286078BCEBC6D07A2A38620 -2C7708BB58CC8821DC4EDCF67B9D4C4DE6A38D9561E6832B9A48D229099C635B -9141E0A4C063F9B77AC66EF78C3451886FE7352CD15484C14A5C93C7DA0A77B9 -FE47B32F16617538D36792B8F9244DE19D75EADA387E7C0D6AACE0AFD24577D8 -A9C8235215980E635AC2EE59B8343EF850791DDF81662D8BA0B9143D19D72064 -752BD89C6FE4B519B9FE8F76F50D957D0108A7467598BC640B4ECC3FCCA3EDAE -23C39C62C3854E358D3EED44A41A2D1467F730726317DDBC543DBBACDD038E74 -E25164EC572BD52008BA77756AD40E704DF8B3E9C2190BAD524A2FD68F1A2CD4 -74FB4FCFE62A6B412F9FBA2D7218262B37A194E671F8048376D604F360F30580 -8CEB9BD6E08AAA72B4749DBFB0CAF953F00B01DF377CAF52034887368138328F -B60C988A9F02D9D3AAF31C2AFC29BB0727AA5FB2E416C4E428F414C57699C1E1 -A68667C4C42DDC9F7AC3A51BC16945370AD05472C33C523F93D29B32BFF27678 -597B870AEE83A4475CEAF64434C1F8941CA9BC0A19E8A3348F9E297EF70CEBD4 -10C65F5B887EC0E817EE83CF122CED3FFE42B5C7D78DE4D0D5BAAE8A4A4BF7CC -EFA471413D32BADF2FE050CDB6C3DC6BF965C8CC17A2884DAD18E0EB09FFF008 -59B3500AA6626CFA1D2C8D9F2F62F3EAAB6B83C21194D8601F2904FFDFC47257 -630C92770FC40666D91F1E8E8733E447B03C10760E587AACB0E431E03E170CBD -A9FF1FC234058F1B813F43FA03987F7CCD03D310B9ECA775B72B83B702613D56 -B94E058D1C1118716A77D1049AFE447C0A3B03C83FC4BF343443F2B9496B3AAE -AA48288A3818DFAC16EBDADC9BDE7B0E0699B2F10CFE04F2969E04BDAC98F463 -F9E234C13BE5D5861FF5DA96E5409D6261EF5051343DA41EF7DEDA1A84C8542C -3963B62C01A3039E9969CC04F55F83322736121551E49E7F7642785A87B9A26A -2191D763AFC09588F5EE57E8013859E42458EE6A9AC264CAA46AFBED21C71C6B -D2B618B3695A3D7F5A9FCC670D60B0D05B760719B5E4002B19904882579AABC9 -161307EE061CB4F460AD9C333DDF5AEA237BB8B5B2AAF59EE3232412E449DFF8 -8D61A32A729AAF572C4998A01B280870B95BAE53D0E64632B9FCAB8F189B37FA -FEC3EF8FCEC1A1B7FC77303BE9A0B5873B8B6739483D4072C5C5AE70093518AD -9000E3CE315A45D019B3C2E2B769844144DE624694FA3894A680A7A220DE0CC1 -F2CD3BBDFA87FDE5511796085996B99730BD1B359883C987339A2FF91E929A21 -8662A364AD55D1AAAF6A11E154452C4AF42A44BEA21E708B5E11CEE44DD1C2B2 -7200E233FA4EA43D258292F8578DB02464D1FF79615304A65FB7C4DADB7D5350 -419E822E60BB4553A5088E3B0088EE32CACACE97F2E345C1A7344ABEC0D139EB -A085A7D4E739C9818D6DD30C92CA794AF7BFA73F86C0C524A4CB8F29EC3AD93F -A9C3AD263BE4F8E963EE35F073005F4B13EC2D8FFC9BEC0C1836DF8B985223C5 -9D2CE7B7BB26FF08ED361E898D8D6FE65C93925D9241B808337F8907DD71B548 -8A941C64D12178A2B8DBB6040E07C628ADFA0BBD27CC95887840BAD1BC57B7E5 -C3D80FD1CDEE64F322776540C41188F416029A3A18F1EAE7C5B5574916DB0C7D -2F8FA27453DF91447D16995CC62334EB6FD4A28CD0DC56E9BC4B14FE8D65AFDC -98697D63FC27737640F3A294588DF91767DC7A412707B39C1C2FBC208B2D73E5 -CD6EC4DF7924D62EDFEB04EBAA1445531E1CF98E1CD9BCDEE596993FF175F747 -D268DE28F394F6FDCB6E34435AC61CF99CBBAF9B5A61D32621D5FAE49B3D8B81 -C61241B36D4CE6E1F57F7FB987E81C3147D42CDFB3B665F65B481A766DFB21A3 -6E4C642A07D20988E7A7DC6A88F5BD6D7ACB8A1F62468C7203ECC022C0120A16 -DD84FD33EA5F1B4F3D569FCCEE79D31A4AF6733B6246132C32DF5CC083CF926B -B118497BD332FBFED4BDB2158CE07717E98215C37D3EB3CEC9A6AF3310889438 -048C02DD5F5B323291939A34CD390BE03EBD13FA9C76F082FEFE54AD9C30ED8D -F04BBA6FD66ED1FC30CF49136625E77057F669992569E9AEDBD94269C2CBEFCE -0C191E92CBBC6408A9C824F9A2E394EE9589432DD04F968558C89D12E0158036 -7108B85B438D869CE8C7F8B077C2D91AA03C08EA55A8208B058DE6FBAF6CD275 -B5E46AB314067BDB1C51BBD2C4C1BBEBFBE8389D46908B07286B5AEEC6B30517 -B787EAB33C987F1FA2B6D8EFA5E502FB7EB698A4B700DCB2C667987A51DE0F5D -DFE93E9EB622F9D9770F069C0617AC4609A15B246ADD331478807B1EDAC16875 -81B6906948723B14D175945A3C89DCB80E953C84221C4A19FA7CC1FA84F0D42E -7A93B344F08FECE42E3B2998699D33E3C7C77416A7195039D8F91F4149195C4C -0FA45C5EB8C4CE8B85885E255C7E06ED9C9EBEDBFB6061F8B1DFA46199EA8888 -1CD76B0CC9A083B06F5AF66ED5A1053A77F4817FBCF046B7E3D686CF1864660A -46E551364122199525D77F9DF706FA92C15FA05E17E0DC93A95C4D46B4105E30 -21C3888F966D005B6FFF950A4911CF4FE9B3F0441C04FBB938830AD88DE3EC39 -7AF9D0BAFA2E17269DEA860D77F7ADBDBF3D8D348873F5C76E69F8AB52541562 -9F9DD4E29F24577C867FB162D97D3CD6C5C0FC37CAB195372FAE4B1D56F192CD -D6CBE2D7C555F849CB46EE4E8A549923ACED6ECB6872B5A4EF12D2954DD2D526 -3183F55C57108E2F23774698EFCBCBB6260AF63D7233E10A6C56AB5558A3B67B -5F96B6CA723CB16810453FB990F1E06217567E4237E9386C413401E2B1C99EE7 -8D73260B8DB9132F37E345D96F8182479992A3367E850F9D9D2208F49A456F1F -12AC4A6C56190A170D23BB304969B0857BFC16F30531FFC2D3463B820158D15C -9C050CD4ED2FD3D131CB5104577F675A4DD2EA85383D49E615B25D88F0F6601C -05369962E7EEE07A57FAA48B43B1A1D005D575C5CC4C592ED9167A5AA41B2D29 -A6E2AA2B176826D30FB249F02EEC1C0F44FDD4DF74A8F70C079AA25223AF3359 -A61E8E0569BBC5DE72D9D4BA55F2D3F8E8A7374AFE2BB1121234BC6E11CA3FB6 -EA6EDD6984BAB0B56007BF7CC58AD9A476727F3D33DD13B9FDC1B6B67463B18E -1975C9CFCC1A683AA3B3BABDA1DDA80E3BB53D78035EE6521D41AAC9B1A9ACC5 -F02B837DA85D258481C92987AFAF70467828ECBA2AC350044646AD370B0F1FA7 -D771403E154150F99DB1672296E2823BD2EE1629AE7A70CC048CA441BA58DF6A -8B3FCDB6613D3A0124F41EBE36A438361E21F854BD89CEAF1BEAEAA1AA4B118B -E85FA56E4B7AC108B4F0FA2804E0B8BFEAF848EC469D611E0EF07AA173DC6D1D -CBC67B8753AA3E658FF77B7565896687DD28431EE75598FAF5E9129EA14BA8FB -EDDFD071262E0838E33DCDD190F68D2E20757CA37AFCBF3AEF1FA9A2DEA357BA -4A89929F29AE099FB05610B99396D166EAA7C6598EC696CD7D58D8EA58DB48A1 -65A439409570DDF9A03CCD80180FC3378181D99026877FDFE438990E66EFACF8 -7F3698667ED21140E9054DDC6DB3FD91105FA0CD19EB71AA518F603FD1B6FDFE -F44126492149370676FF5A7212AFAE99B2399045A27A735BD32589AD2AD073CE -41E565D115026AD9C6B81C6F0EBFDC63445CC494D6189EA60612D4407DDBF831 -2F83E1F2F8BF6AB7845058AC9C9181B8F8D46486C6108D40C19312CEBED38842 -35306D53CB87CD3DE08AA4F174F5B2C4AB9B2B22D9F3F7695CE74A1FBCBA0225 -52BDC3FF4410786185C04F21DE4D460DB6E43B8529957A36890F3CFDAC387203 -3E6CA7B01BACD9FC35FB5C14DB4A44C1F3489647FAFF364F98B3319287500ECC -A91AF7655F64D923DAD3061B593BBE7A0BBE3F1109BEFC01623757144FCC244F -442411E096D44CA34B00B0F3D0125D1BBC15746C93C0BCD52F34F7043B31D5FE -6FC2A7316B6A73A4ADF8718B3E30CF0797DEE8A94B2DBAD869EADDDDFE0C86A1 -B5EE8B38337524D9FF5495F231E450080716ED92A9E6DD973555CEA06B5E9322 -B1A6CA9DC9E2ED3E9B0499E211834D7C78D4B260AA07B1D1AE328B395FD92966 -90CCC73AD6EA7834796250216CF1F4CD8ABF006B6A50A3DB3333B694B10CF339 -FF01F731DDC573AF3EE82DDC0BC62EF781CFAE3BD558D7026DB6D1E2CF5F084C -E3AB663C143A93AF46D470472C11D6E3C39A564DA23E9EA8DF8BF3A5E3F07DF0 -39E95FCB1DA44E2622631D967DD0B8B58E8E24D0224008C351F87809E70578BD -97E1D02402D631041D63D458C1DB8F222EFDDF2C4B915D4EEBE9B17608A32F44 -B26DA28481F353411F9774670DEBA48A53AC833F4251F04D159DA667468781C5 -231721BE1C76E177175CDA66BF46C25E84FDE4F468DBA0B9560D738A1CADD30B -07362C6495FCDCF725F793E1D5B4975437F7567191209F6B7916CD9B58424616 -77E8ED3B3DC028E715FC9967FEF0B00AB87330CD580EA19FC75066D873540863 -5CDCC0156BB105B6495EBB1A26462835C09E8235CDCA3224261089F5E99B17DC -C21F4C467F7FB83486FAB7E75099FDBDFC9E518A43713BA46ECB346BE217A2F3 -DF3E3CF74999B1CB02B5249208B442988AE5D9431A271BF6D16323ACEE55F1FA -62CF9AC0C97D5A2EBDA229F9630955F5E06F62F72BACC9B6558AA3E60D8FD4C2 -DF9BA1B8CD46D27DCD006B524919205F68F70D1081284AF072BE982CE3592DEC -D3A23016E5E1564AB11EE10C5B09E476E049996FB49464F74D0605FF377C5CCE -A06F0329E4A9DA39D4F6EC8605C490A58E18732D6E93B7070BAADCE2F9C95A76 -CD17A696DB07E68AF9089DEAACE0DADC5290ADE2BEFF9FC918F399773BA58BAE -417570D2B23AC1D16D0576111071F9843E7E405B5D57F356EF4AF05ABA3AF2BF -9C0EA3CCB2B7DC11D6579F1C95577ADCFDDC4A585780D02177F2F088D5CF0C73 -1EFBFF595EC6B1DB8B028342D5DA1DC1DC3AECADB99F18BDB43CB2164AA3649D -1BCC91AD95B811B91EF497A14237C3B5EE1F6785ADA67CB799C6D54471947110 -4FDEDDCDBA16CCD839D917D5C10B78C4A3466D34DF751FD9732B6831FE34FA75 -D0F69C92390E4AA06D22F07496BD4E3E80213634B10F7DBDE3F534AAAD5F9D61 -BC16E9E38A5A389180BC218B420B371607F5C2E7376B7BF06321F4026AADC529 -565CDA5CFDE66638344880CC6F85A6E4576CE5CA9BAED5748281E5AF0F1E4F89 -3C9187A47B4CD8A4945D046E0F7F825A0759523FDAD891125F7D1FBD0A60B14F -481665CDC62F4AE3766ACB71AD779ACF9A9A2BC3165FCA696BFE121E1D69CDEA -5149029A46B9E1B59954F7007CCE1AC4F1465E19F5BEE29A0514182B9B957365 -12ACCABDCDA1EA2EAC3C1C4257740EB8842322AE7DD3DE694AC27D5E787F70CF -E71FF2C0BD024F25E569BFDCCD456BCA6134F73F11CF8B9C160D3CFFF488CC65 -C440766587F62859D350DB066AD380471D52712B846F6977A815008BEF5AB6DA -89264846E4FE0C6A3936D0F99657223A0A35192F3A5B8292EAC86B9DC38637C6 -7400E0FBBEDB34B6AC1E4520E1A765BAFF3793FFEB5749E0AF065890A9267EFA -8B48A66C608F7CECE80469201E64134B6F0E06263CAB0ABE5EBD5FE2D26F7730 -D33F20FCFB008D737650D73C050BFABA8C25ECCF847B4FA9E9B3EB82A1277365 -AB26198523B43EEF9E9FD0EF852EB0AF79A5EB6A574B199F17717E8A36B9F577 -7C45E675842E9483EC5B3A2A45BECBAE73627C261A141D432524FF9BFE733F50 -A7FCDCEAAAC7E09BE1703B8FE781EE6D020E3A5A7C0D8E2A0870049D7AD9E574 -8FAB8C19C50BA2BE98552911AD5ED98DF3323A7A8ADDE84CCEB80AD00468239A -9079DD2FFFB98E6181432F3C28BFC2E503F0E1AF77CCD52BB8E3CB882833958C -A66E537F4DECD492A52B4D84F183AF761F112B5C25157E4D9109A2BE5A68E8C8 -E2BBB1FD203011B1BC2E1EBC71F5DF033FA446BBDBFB4A344F0A7750DE134EC4 -DB095A4E7D6A1512E1753B82E9A3484F89500A980FF5B0FDD7C26FFEE8887428 -4F7220EC96E7B534C21A1B3426AF9C77C744CB7FB9DFC30F0F781BFBC8E99339 -6B083C93E891FC6F543C670DFBAE15CE91EA3D89D7BACF8C6A5F33C568988701 -EAF0C4B0F61DFE6F39368C16F61F24BE1BDF1ED890D5328776F8B18AE46B65AD -01CE58A163E2E0753A66DCE85044D5A247AD2DDF5FA0E5F1E246CB946401926E -D334CF173666EF7B7465AF4DD5363D788F73437794836C78D3737C42B28588FB -5B0B3CA9789F2C7B3D24F81C40D1D1C9A93EB94D553D542AD31D6B6D72E59CCE -ADD4EFE91D35DF767B697F74BE531D3B1B7E41694B03D9959B42635197E55F03 -1964060151995222E14EC3674511D11C7E0D12B455E06B4C58F6E68F8EFD7D52 -C2A8058CF06EE121A7675E8F0AE43962FFA9B926ACEAB59CD22AED3C4BA274B7 -83740163AA31AA7AC5DFE1197F5F7B0AD6FAA5A61E49B2592F55D26422533DEC -D96F02C52E1FACA47658522BE4AE1C62CCE9402A35FAC32CECC210C2566B1037 -798938BD3FAD9A644A43B2497D9CFF8F3FE6FAAC42FD0E05506A827D20B9116B -2289C0C576DD84A2CF56F2216D58A02E35770875252E8CED1A0852A271019D39 -DB5E8E3AF2D53367B1E6EBD9A7569EC47F205BE79E4E04ABF82BD903F8E63B58 -A378BBED7CB6E46DA5D925A2DAE53876BA43045EAF35E317740E876E5B62CD35 -A5CA39882C6B0E221189A0700D8C5DD5A5F8DA3FB4477F133CEE733D2D8B60F2 -12402AB65F33C60FDB1228C5AD909FEC71E4C55AA8BC099745935F062BC327E3 -1DE39622A2029AFAB81DB3E7537C3F8E25BC29EBA7778C1D27AC5EC62364DA6E -0C5EC40A6450A33EA49B2859775D4D411FE04B82E49D2206783587C01C312732 -D86FD0CA9AB0073385ECB1C467CDE5B7D1E2FFB85160322A183FAB4D42E29B14 -68389BBF90BB149C68A54E8A86F6B312CF1062FE054FCCBAFCB1FB0EC2DE7A32 -DDC37F6523FD75BA74A5E081E6A953D42DF419FD475F9AD75D13D3F43680759C -54C91A0063A07FF5507A34F401D80161A57CC1CFD18A091D701E90C47E1A084C -CC8904BD693E1A090323A44ABF57AF10A716E899EAB7FB62C529885778458815 -0491DF470C278AC43E97DCC8E42E31FDF82448E35AFC5F90AA018BFD44E89BD8 -64CF63A653AE5F0301A06C16AE2DA06F85ECF5FCE8F7277436BC5777E2588F7C -4889627A5EBA53AF2DD411BE8E42D4B107335EF0887E795766249EA1ECCDC25C -60E8A3DF38F27B1A7A1DE94536A24AA61A47B1A58A5C8D82A4719B2A623EC9FC -FE5B319DE2507610DDDB610E0F68F85FA61A4A98EAEB075F254983510D1427FC -2BF3DEFED5B3F3E0842FDBF0B4BD869BA3570062C5AE28C23D313121A755CBCA -72C9373CC8A7F947B5895E3B48C808487ABA6CD967182D07C139A2F87C2614D3 -548AB2DEE5B8AC751E38519F5EF4AAD6612EB7C37A8506ECDB2AF78D7C582160 -35DD2D098D3372D464D2F80D67D92527F7A73A9BCF43682C3D5608ACAB6A0013 -74FE99A300E041D441ACC3DBAB6D518EEC5D8C382B31943816E86708A5D9EA50 -B80AD13C068C03F974AFFC81025F3634E5A4D27431B1DB18CCA974673C286186 -8DBEA1BE4201511C2196483CFDC0453807E41D058FE72F1C35C614E8EF883AF9 -7D367CDCFFB56C08BB3BA4E1DF255585CEEF4463EED877B19D9BFACBE40AF9D6 -A3ACA61B7267BB58C245637BDE582428E743699DD44EB86040D5140B74ABBBAB -05E14F6AD82E4E4E4FCA5A7920FD3AAFC7C279DA4B6D3BD167A542ED2E43D8F3 -0485FABFA601A1AC1544BE674E4BC9E312110746001D5988A53C0483DEF88E7D -5E04D3871C20F384777D027C71522BD15FB90240EA61D3372C8EC2A2714C544F -CABCE014D24F21CCC067636A69B1AF18796B7FCACC9105B202FFAB666A8C88D3 -FDD179F26B3D26D7F5B1FF2D9C5E8743F566EDAB756423433A1807BF02487078 -D0278A68E0FE15687AEB89B30376B33ECCA2F24B71243CECD91DC5AE4E7E7520 -FE5F6D7C8E3850373B811A70C4E6AD8D4A8251CFC397A4B4DE093E154C1CDA2C -40EF94409219099B7B5FFB13D6B3AC539802981F415B3B6C5F3F28CFCCFF76EE -84451C8758731207DBB578FD4B00DA83A4CC00B5599C78917D3094538081675B -0B825ED15589CE492D884C0ACF2BC4494DC0DF29342C28FA232E4AE96F51B5CA -0C0BBDB7D33C07FFF4A2ED31221E15D1673E1E8A73785BB35EB5FD10C2485C08 -BEDC0D02955A1DEE8764F4E855156D95730D32E9C705979394E136C12C193A6C -17512383CB27BA3B0A3E30210D2664BF91C73AD1A8116CF81E253CC1B2444C04 -CA2BBA3B85BB230DFA63D61677D2112421CC41EC1BFDA7241890659F18E99987 -62B6C788B98F89B305B1BCA2F63E8D2D7ED3404015B7A2A7EEA73ED0D6C2F4CA -215CB8B49D8A8C7A69B8FD123FABEF33D123FEB521824D87D8B4CDE4650B1163 -1704A068FEAFA32C01F50DD76557378CD7F561861F9DF1034DE2470D2D3CB01A -A1861DBF4B44AF32169DDC5089643986EB635B3386E362EC7CBA56DEADA4C60A -0A51B1A0A6C24980220873FF7F3C796FC5664490597DA5F2CAC7C0013B1B4F7F -7E929E57450B9765F71037620E73A80390902B271721AA252D0151D7DE2478A2 -B21D9E2966FA78AAA7B20AFAC4C8572A5A86D808F1DAF906C7334F8CCD3A80BA -07E9AE56AEEA8F908C92A64133024A5D562ED72A737596B2563B6865FC8ADBC9 -3BADDFEC1086D96CAE44574A91266178B2ADC607D752495F20DFBDB54D5D70DF -178A67A0BEA8293F44EFDFEA96C89165EBAE7082C8380BC3822DDC41E023D259 -F8606453E9EFCE8D0203D05AF8E86B2E02DFD3FD273E7BBFCF97DC03E4ED8094 -BE2CD5E3F1210A8ADB7F5E116DD1FB0641EEAD89438F3341909E4A774DC4D4E7 -764D973E2404098BBC33ED3C398CEA6B311E0F445D51E55F29045C839EE74BF7 -BD4F25A109C34DD931F1B59DBFBFD8AE904DA4FB0E42C960A28F18196605C38B -F30515A1C8919DA7FED3A6081AB5054879C509DFA61A3E4DC49C7C8CFE9373FB -F5F87E91C556B2CEC807E009E610CBF667B8F01104D4ED66484DC2458A29AA0C -CCFA596ECF3FA247231C3CDA0EE906C5A341D76525EF692D42A6EB876FB0559E -4BFD6EEB311F9C71D3840D3453236B8F2324F5FDDFA4F26EBA2E5A803D1A6917 -E6488BF7469089612BC578D3C0C8F85B49E54FBB28E2127A06C26FD439BDC798 -153083023E060292F9EACAA9DB8D45F1E9C9EB1816CBB6A93A5F188A3CB8AF2A -2A4F5C6A224E3E7405DA63B05F451A01A993B6641CE7A431F739AAD6452420E3 -6140620979205FA03535AF135263448E11EEAA9C42FCF442B147F012B77EDE09 -B538737124AB34397B5323ABDBE6267DE71E19FF4F6F07333E5E409CF9B0589D -C8378DF3BD4BD4BC1E8864C9C22485E46A2A1E295EA5F92691F48CB1CB2A2340 -094758795F33F5A80361682F6D838CEB488F17D7FAD781C77B1090B02F88666E -A23E30B3AB6456279DECFDBBAF8A34BBCBA6C09E2E8FBD40A040FEA55B70602F -800098F033DCA8C0AF1B92810779E16E88A263629C6C375ABA39B22002D97686 -805748E73146B462B0C69172AE17D6D6923243E9D94AB560158E090398D30A99 -5C2958D703B1359443E2C528A02E13A44A7F157A504E908773850F02E89503FC -4D5C87B43F60B3C465857507A4E38F0AC2431DEEC9C07444803E1D7D2B8C90FD -AC2EE8ECB4D53DCD3480134D1EAB291645748307DE1610FF94FEADD64D8BC6F4 -0326C7F478DDA036BA52BACD1B37C45E2B75F62B451FE15B3FE94019A96D8634 -369276C0308838BE235E25DA3D226C596FB81D4657B1720DB4702BF0B74B352E -A43F483463B01D37D363139490B630EE4DA9912E461EEBBBD33AB0C871AB4417 -7E4F68BA74334D45C4D65021E8B58D8287D6241D2D9C19F54D415227752D7D79 -AA1B89FA400DB65783286EC71D79EB1292E6BD02BB5C388195E801FD9036FCEE -385C1811F984E4B591F2B8775F3B6640F89349BEA0C53D690900696B7E925227 -205B20BC26151D66893E312892B18CC5189BF04B9F008088CF31AF7FF1EC792C -2392B10E3381F2284E4B4AC7C631DFBCE50B4075604E5AB320C2681ED768ED5D -FBBCC9D012809A2993780F5054D8BB60DCCACBE4ECF29B9F2A238886C06656B8 -12C6267CB9AB614FE75D2F96E1F6211BFCBC959D5B4B1FB77894E87D2F4D2657 -C64BBCF7A0477903CF2F3D58BD5426CC64C9A6BC49F41D3C2A0E058452170319 -28B5B8C1AB0D167E0872C810064F456FE97CB84139EAE7D0D2463DD455B6CDCE -9FD3142D5124E10E9DBABC8035E584840B3443B1DBE0E24173B967C2402ED0EF -37E1F832B804BC2F59133A3681403332451ABDCDB1C48D70BA565A6D4EDA8144 -E784A305885914FB1988E1E2734FCB76124092E8E4A28F16F8E9805BA1E816EE -9C9C3CE461C07435AAB8B16C688465240808C524116832D9597BAFA71D1982A8 -ECD3854244CD04C0D7EA50521D4867931F753EBE44B088014CABC94A95A9E281 -23273D528804530BE9B1FD33A0D3C3D21F72293ED3A231A099D34302E504EF27 -ACB5FA3BE4C9F3BC5AC4D3C354E86E8F460277672409B75AC1A596F4B54DFD41 -61260DC50D9A823679C5C6A54C0CFCC6AE6C08B6B69DAE76FD256E105FAA95DC -608117E4B8F212F5EBDBCD1D059EB9B938EDED6090827805580CFFA67D8BACF1 -15415321B15C46C571371DD8B809FB3664851171F1484EE1DB31EC8FF38DA7C1 -450AC79E75E81B8A2305925D54C8A5048F2C2750C7C26C6B3D476DD6D79A986C -F3F1131706DF7747C0CA6D9049DC6C3A7DF1549051AAB0C38E846F34CE7F4CEF -4E6B6918B78F4F1ECAE6A220130D68511235B3DA8EC4BEDA71B62BE15618351B -2E204656A182EF76C11033BA3F903CA4B7976EF7F29B0529D0094ED2067E5929 -9F22E19F8B0CEBDF0156E4AA918DE4B5AA7C0546EEFE2141A7A833332B08822D -8B28D23AF2A46B9879204B773DC4AA566AF9FA33CC1668386084C4B5FA223C90 -1B96EB26ED2C41751B7B27558341DAE930887DA88B44EC85586374C30DE69F41 -B8CDFD1E93A79579374E8ED14AF1EE15BEBD59347C3DD89DF2468D2595DC8A61 -FC3BD1720A252A0BDAF42BE2AF52203A72745A23C1B123DBE2FB5DB44953610B -2F858899EA9E3B76C1AC284908F08D684BBAF6366243BDCF27E2CAC4FFC4091C -4A83012FC8EC38BB341BC0FBDAF1DE7754ABC6EAE808D2DB7954F4E6E82BBFBC -B54A538A53914FAEE072847C5C723F3F9F222F06FBA3ED09A42D6082F8C37EEE -AF0241F07D3153372EF47802FAC2EE63F9C9744F5F9865C092592B075E4001DF -7627996B37FC44CF1DAF42501F6ADA9AFB94A521229267BD53CF08C274B617A1 -90B28997777000658F086521013E2B15E695B78D118369633B39DE354AF0CC2F -4608E1355492D289690A00EE5A04E8C7AF674B3DBE88C899514AFAAB6321C56A -E925A468F5C1596FB1C695EE448B9723C6CDBFB8AE2E0CAB7A4F734D58DA578C -1773437395B14824F0CF299322F7ED33CFA6496BD3B27137D36F9E3690AEE9D9 -24A38AF7B071E60BC0FB06BD84168662CE09F4A38DB14ED04B5133AFD91A323C -F4AE8A2054F2FFD1C4368FDA7A8D584AE68B5E48BA4496D75F380A4044522206 -9D03AB81695584DC74F612B98BBA19FA6BF1EC5DBD06D04F1B0D36D485991C09 -720325287B2A2C259F7A4E7D7BA2658331C8F987ED0D3EBAC5933E778D743DBF -83BACB647E014D8D770BF7878BA9A0164562652B960015CB654F0E69AF44EEF8 -C01495DC6092A55BDAC3C59EF50046ABBC79C963CC00F7C9D38252BD9ACF0FF3 -1A876CCB7EBA5E43A3F0A9FA5C65189E7BB448DFED141B06FB1669DC1055631E -88DF65DAE08A6ACF17ED8583065705A7550E81AFEEE7D0F18931878BE457C233 -53D510D5FC075CC13AF477F1FA021D670AFCE1784AC101C8819F550ADCADAB11 -4ACF42BE8CC829767363466DA50BEAB3D9ACE76368E2EDD239EFA59C713442C2 -594B4F18B6637C530FB9A64218B34C7D0AB4C60FFFA5FA6B6BE561C23B4BD263 -D0C86DAD4D6972FDA3F5C465AA59402AFFD1B15C57D9F6D0F37943059DDE6C62 -F678972AD507FAAB162ADABDA9A4FE19395C3DDEE1CC4892519E79C571E63B90 -9C6D068EEAA373F29A4B09A9949186086B9ABC743AE3E7D09B7313995933C117 -87C4EDD5BE67392EB08E48365893E8CCF4F8F2589C3E790FA8EB136BF5A4AEDC -B2E1009DE94CDAF8847BD9602957B17614F64A56E865CB1000F842F01C66D69C -06A1235756985ED1242F038821CD376A7814E05FF2B18D5B5DC353D4E45F5843 -52A68183C43629A34D30FED56BF5F514295D127E199CAB5DDCDABA9DF6B25EDA -5719D04ABBD212D7B6F66FE20EEBE1D7AAE0A9FCBA76E21432C9D509C7B6B045 -44A28AD70DEF21BD5D5D3B508F95A6E4896292AAABDC4E6BE5600F17726CFC28 -3BEB5BC500BD48BE92BCEE565843EDCE09FE678FABF061F21A2A15549F9C6969 -03C8EBD991DA56A7D88B7EEEDFD4AACE36D919399ABCDDB2141B81F19323F243 -20983527554313BB39029DA04422FC5C1E234F1A798179DE5486AA60231620CF -DE5D060268EA0CC2D1228A1EFE742504CF42F011767D814F587E1A4687EAA216 -C40A8D70172343198E91F9BDB69CCF84EFDE1727B9929A968AFFF1DE01D89461 -11EF6CB1382EA4AA5570B3C60C7C48F741E43F74F7168DE56F9791DCE5BE50DF -5FCC8E9EF7E4437397C8D0DB156020B2361BE557AB2AC3CCC1EA754DBD2AB2F9 -936F40BF0650299E3311D525EBDC48AB545F887B06CA0A075AC1069DBD6025C5 -9B801CD2CD0EB5B0EB2EDDDD24F5CD1C71D1EF56C1AD44F462526E9E2912EA73 -3320A3121FC6C37004639DFCC6067BAB7BD0DA3A2B3732B2A754C96495FBCB7D -CF1FC14D6B993126911642EA32C499AF92C436DF97DA55FCCA98E50CB0B4D38F -4C24DD07469C13A8DA1ABC054224FE9AA6DB6CEF0022CE55E083DB40611B22EF -8A40F84AC135951269C208F0DE9BDCD2E3785B1A99FFEB2996A8DFD71609DD12 -BD3B6FEA4DC242CFFAEFECC02EEDD6DAF26D6BC385CA2364B10678C12DA8B745 -DCD2833298C50E02CCEBFF5DEB9CE3DA2D5E84288D7F63DD283BD2180F7E58EB -B8CBA3CE2F39BF65B388956DD060150C42CCAF3B99888EEFD9DCD29C79E7637F -240743230CCBCB4A392206649C991CFA7645944316ED1760D926B0AD5F892A74 -9EEDE457282918A20279C5597E7A24164840547ED1C03D17A08B7B26F7EED905 -59DD0EC8C6995AC968860D26A728703F8C0262BC74D49A0F8DFC39A137B44FD1 -36B7068CB2A19F03B85C418BA3973AD00969E4DC1718F94E0A4D682BBF7123EC -0B8D695BD1DE6C9651A4EAB6B7DDF05FD53ABB642E4EFE3A6D4E81484C178CE7 -AF9E655E2B95D1EF90843DB9E454EAE423F714FC9DFE93D8EEC738A815A43C61 -9EB5A96A479EEB31534BDEAC74876F944322269C662A63AFD312A8BE2C36B011 -D0E68795A8280660C85266355BD0DF42993375DCB40440E6A1AE3EE46B1B000C -188AD7DA050CDB91F98F05E784DA742DC3119CFB702A2AA53C9580112F603C89 -E54C44F0523B91279DA3049E973009A42BB42D125C4E492A8D5E0F57D028E702 -D6D579DCBFB937F8B04D3321B7D8E92A17E171FCC33A720A01887958116BCD4C -0404668EE50A4C808524266EFAD3BBF8CB6D57FBCF9990666EE10E4155905C1D -B6300A7FB442E6EF4771C7CD7F26AF6901E8F5E1323DFA7E6B7C174FF61EC768 -242DA6B9B424D818197A9BFA73877CC3031ABEEB51F7A2B2371FF0FB3F661538 -7B679E5B1B00F00AE4D22ED641624B5E5644D13F8D0E14299D7FE9507F4B3D73 -CC6F243BDE8DC202701BC635FD0CBD4078D3E75148379C9D12FBE533FDA82928 -07879C39043D94CEE9E3980DFEA127C455631F6B0003421507F5DA1DC324E8B7 -1DD031605FC74F0630396FAE502DCD45D2913015A2E190F174E8236D94885897 -5727C25CA77DFD3403187DE17D622DD5DEE82298D78565A53E31B93750867BAB -ECB331596B5725B1DF9405CC4D3C090B0759B635EA78FAEF35876EFA867DD625 -F6C7326C7BAA4EC6CE5A2861F8B5D1434E24C639B6E398E7B190EC50299E2421 -358FDC085DC19CD5BCA32D32E8239280A581B384F2C8DB8A3020AE6CF5B05172 -043EEF80625ED5239EE5832F14677FF67B9488F1854D1DF35CEE7B02B9A66115 -5F851620DB80E3626F7CD2C097D330874FC3388F193F14729A7486744E6167E1 -7CF63919B80719F7255547EF214B703AD5ABA97F45085E34B7B57A7C2465C2BE -9B5807D20FE9B911DEA468718F80109507258C74077CCED9ED9D59194DBFCC1E -59941052F6CB81BD3E7D8BFAF1BFE23F3E3317103D210AE077ABAB51296F8636 -5CAE88E8ECAE9380E6E8B43168EECA559204EDC07B00BE4056FF54788B2471CF -C6FF72C5E47C50479CC2285BA2BE43D2F8F1E3CC07C06F08AE5D37F1F3C62908 -BE8DAC50F150B48503410F2EBE52C5830A34647669AD688D6F8D0E119BEFD431 -3BF06100271DA8239306D371C292083CEA44278C04D9951DE7ED8418AC1C4930 -4FCE12D1D47197A1E8B2EF5C3FF1F238C62EB1F420368534666729B09636AAA6 -EA37F4BA8A7257AB4163FA275B5400D64C77CECEAC9F4E9EC6EF748D7EB6FE02 -3577B34E9B182D30B13402B5E896775E29749033D84718E23AF2905046AC3585 -F98740FE96D894589AA3705E0CADBB7CF4FAD8F81437EF7A3C1C655B742844C8 -19E8F58EA5AE3F537DC7268640A9D51935A13EA788366A7DC48FFD746383BA34 -DB77DDDC99B11D3A0995F47B71A30DE32F3343E586890448C295B8119E2966C7 -133EDE8036795D0372CF72683E7E11B192023A05F3A9DFC0D38470D6A2EF2884 -43D4185FFAFBA55D5B51A73E32EAD43672D6F5EEA5530B41FFE5A9C7752110D0 -99254F9AE2EF587D73DB054474F3051B6475778AF9AC50DCFC4F1178EFF87067 -807096EFDF37598833C0ADFC0F51DEDD13CFB2934050B2D97FBC1807EB920627 -8319561BA81F29E528CB8452F013A5E63BD14BF07779F2EF4C9521144EC2C31E -ECFF8BC892406D370547B2F5809B5DB70B332C051410B2C31AD85B08C2B9A6E9 -BA08F7A237E17B7B2BE6F9499D1C59CBF66F1E97AFD5DDF2191F7927C7C2CF35 -AF1F47FB1D057A092926353C2B18353BAC388D0EAA43ED842FDFBC3656985B9B -C058C5017E42FFB4187E1D788D7319AE087E665F3336A1B74C809012C91DF448 -79F2B65DC51C16AF6106F8076AC760B12C2AA6750A3E32DE66DD05DD95F849E5 -4A54E3DB8FD43D152ACB6A365A4929732138DC3D840D1ECDD23B87F2AFA45CAE -52E23F1CA28109A895A39044D5DA9C36E57115D3C7BE2BF1ADB87A16D4884D0C -B668672B1668414165D4DDE0F0ACA82565F8289979B77D912726E6FDBBADB523 -05B4D7A6EBAF0B3B124DC3092AE4043F08AEDC5F6F5D339ED115BD4BB1602E72 -E5645422CB1810121E893CA5B3182BF0E720505F2A8A360BCA6ECB03E0BEC9CB -37A26717F10101597BACAC9191698F615E9A9EF8FD1FD0A762C52E5493BF8AB2 -5A74A3B0011D159FB0F8F17231BB1973913FAB2F5711A802F040503C897493B6 -3688EB894032A7B69956C3D5A43884F59EA0ED5937551FC62A42263F3CC5F7DF -0D4CD131370B84B6652FF35CF6B70B228238CC1E3F78F3DDD564C01553871225 -01754AB463E672829EB894824055C2B5F4E5E698ED89A0443C92226D0A9034EF -E217C6992C1DE2E8890DEC32EF16DE266BC5E549792AF65D4621CC50867276BE -B8E5C2C8EAF6A324CB5A87516AB3EBE991633E72D157CEA8A32AF8E53ED13F61 -F3F2047B1367538D70CBE32AD7B98B953E58C8E79B7207C1FED860D7C7D8F1F1 -8CD88242705CC52C92EF60A35AE1C61BEB1B77A0C487AB4E0A5C30948B1A0610 -84D6F2F7B37B28FF68AB3F8E91B548BA9BDE008DE9DC97654F1C2ABEE411FD64 -6CF09DDDADC6F93BDBFA53B31EACDA96EA4AD8E922A332756C0006BF6C350D49 -7A5966E8BA66AE7DCFB88EDE0611AF2434D8BABC47016D64496502CF2DEC222B -D033C59EB3272DD5E67767764A562705F430AEDCA24CAB0C1642E0DBB48E254A -CD5762CA1EE26BA6D3DCDCB3AFEC1C124CE85829A0E77A942A270889C611A304 -8880CA94FB8A2282F3E7F61AD66D7EDCEC35914C07B3C0895D71624757DD1F01 -B7552C8508CCE29352A9AB9C5388C395C8F8EB57DFD931C3A41859EDC85EFD7B -C57613CB8BFE25D53611B17B9D401715B887A052B7FDC6F834CFF5323229A332 -AC6570ACD495062C2959080CDA2EB1F3089E371A400932E83C061E2F5AA1CF81 -2D5074EFCA6D62C63BBC33A7BCEA326A645BB8D65908B194F49E7A194662757C -84149FDF3B5AA99C7FE890F770F24BF0EDD5B6D4A207BA9D7C30863A9FD4FE9B -00125EF4043596384C7ECA3F5FF605EE38FC54D5588F254793B05D6787051E17 -11D7FB845CDF9A696CC7166D08686C54A202073C576E43EC98F5C293F2C310D9 -EECFA6296E8EE0A258F3E45AF80E6FC65E79455D0243B21C6203E779B35DDA40 -430FB12885F84939528F277AB246CAA870F2BDA764594B4B5D018ED197522D81 -81892FC14D5D5704327672FFC0853CD3A78CA9E16607961AF80E54169185BFDE -C0471010F66F61AA7D33264E13AF5428E8B4D43BF350AD2D0D736849CF74F08C -2E595B5CB46473453F08E31005F5A8C56634AAC2322B3DC6CDC2ED0D384BFD63 -B0B0FBF27333756B134F5DC44CC7C4204FA2CCE365DE53D05A048EAD143B02DE -C5669CBFAF7BF803F4649745CF3D16576281AA8303719A3EEB388ACF8E781A6E -2F0819B2F8C633018F40C7B670BD8548138D965CD5BFF295296C07D8181C98DE -D1600C5FE9BD673959E43F5A816C55F844853A43A1390905B9A1247B481F4894 -4E36B9AF0F05ADE224F9ADD39B63F25C7C26581396009192965D7D3E73A86FB6 -61F8DAC86B4B5F992B20F69D69100F848A9C50C6F14427E0C840D8981AD4943D -6726680F4DBAD325DAC1F9C82B1AC95E322B183535F88800D6CB97FBEC126991 -0A53F325F457388B3212E2B5E1DEAD71D8D051EE0995E1658ED294AD0C6C19F2 -B45AD05846CE0148629B2622979167033973BAF86726AF20C1F20CE696E27313 -E0E7906D0CF0B9E799D413ECA041BBC4DDCE755BD5DAC2B76E1CCBC67F0732CA -74C2A42C6AA8CA2D2FBAD6F3DBF0A8254A24305F046B238D2CE008BD7A0F7673 -125B6D7DBD8CD9246F133714159FC9EAC5B1C43081E5382CB8D3E447DB71386D -805F013F539AFBF51B8A2235AF34DDE24868B51AF494C8E42A6958C7943DD81C -4DFE6FEDBFE8B163376419F75DB2F539196F2EF384D56F65B38BAE191B81C8E3 -E1E7726F8FB8BE6874BF7213B32725EEE143F5ED8275FBA233697EEFCFDC5A92 -CF27705B2209729B15E3FCA7CD96EBBE0DB9122207C65BD7633246F522FB2D46 -B6FE50C19EA2D0BC5133A1BBDCF1DE22F402EC2C37C485FFE5C0358C4FA18B8F -CEC354103878B1F6BAD6AA0A485E9888A434D3CF691C8329D2B7AB0D9DB2FC7C -61552C0856078B0D73F09B7E99254FEEFA8C2A8671D4E200AAF52229414E20E8 -AF5925EE7B0C61D6AE22147AC6E5CED1265812E10CFAD2F366C7FAC2958E8AB9 -14827AF3147F4D3DED4DC6A8AF569682F9B17BD67A54841914ED59B33D7E40E3 -DBF5A8BBBE86C3B7E5CCC067053FB9218B9F0876247F3A0C3CE06444409C391A -43BBBF008A587B8A09924ED83279DBAB133F41AE117648EC9FF59C170DB53BAE -8D49D7FFD80E874C0D0B9AD7B694FA085F2933272227CB20C3F2CDA00A96C665 -CD059F9D2E438861E1DC923821C411B8CA8DA5A21612FAC30EA3D869B01EEC8F -8D45AACFD0D0298D739C52FBD2B0BC8C96C8386A392ABCDA29051F9D8F5EA844 -8D83F9EECA7B6DB7CF3EB1F81F85FEB96A471CE0A5B899851097AB3D63131BE1 -6086D914B3986307EEAF0D0BD650C2F0F7C50175868E4864557DC8790794393E -9D57D1B9D0726CC14B48982B45CA14769BA0E0FBC25830B1A8341324F31460BE -88E6AA3592A3E5630F9A5A7DF736365C978747E396D4B7A59ED56E897B9CD8CA -94ED805D4B979F672EDF9D01A156EBD6F759BFB0BD9E5014CF59B6164406EB86 -108FDA4C92ED3369056F515952EBC711B48A11AA75DD9EAA736B48B2C8E05F59 -8FAD1DCAFD29FCCEDC072A4497E0BCEC768DD7F7326A83A8762C5F07050190D0 -3F765F9A23E49B75DC5CE283BF407B61C41FC8FAE5B6063502BBB511A88B53E6 -50E53F218FE3B8EB0CE7A3DE17DEF300A74F6E5CD29B1A9783A7EFE52715290F -60E78618AE931B23B8AF61945CD3EF4BF7A363128D2D2CC0E0BE3E927E785844 -73B0EDEA9CB3BB8778A34676F9DC31DC48229F7B61428ECC8436DFF41A63D274 -6DD5A0E19F82BE2ED721E25AAD9AD7D55D9AB1D817D7D3BC7FD5C64D3A16402F -E5F1494D4DCDCEA0F7265B72EE4FBF8B6B783F2051585205EA4D2723A1AAC86D -E8945BA2670B0DF1CFD4CF47966424A2B570900F5ED0ECFEE4EB534BFA54E2A7 -654F8122BAF46191F03F02E29351E2E7D6216CD5A633DCD52D9D63FBF8DF6779 -276781BB7C5A850F5F5530E41CEA047D0D2C807CD433780E85BB852F4544ACCF -E4C6FBB366F7A62C5F2F7C85D405C70A393F19ED723D596FE895DBA8555BFF42 -AF22453A88DE11127877EED1E653CBCBB37CFE724C74C13C1FBD430C0985BCC1 -AF8CEBE773F16264A8EA498C2CEA83FAB54AEEE9237EB6994DD36D172ABD4630 -7FE3917C571B55225EECD22A4BF03D4F47E483CC610E517C5FCD8986E6EF5472 -8671720DF6D159DC239CE689E60BA4F963A061099C65CE43E10796555B004357 -923373FA1666448B261FA14697B7287DD24AEB4F2E6D004204D31C2DEC90F7E3 -7C5B329F2AC730EF375262773306D20014DC28EB842EB2216C71D2BDF8600B71 -4E5D9506D215816FDA6AB7A0B8E98C5022D70F27770D1EF50B49601586E35ACA -3E7C3E54F289F4F8449DECE1CED8DF3945B80DF9732AB827AB6CBB0868E054E6 -099A81A50646FD437A021DD43D19F307CCC435457E0522CBC740A4B832D4894F -A6E93662ED89F434EEC68384EC374E5666E0089F246AA367D8CF416BA95B9207 -574CCD04AFA4009F6AEC51A24C3F3C4CB3C8B2E0A1868C8DC50E32BC88EE206B -F5A9AF7ABED45C44642D6E12E2BCD765D4BB68E5B02749884DC6695D76E9AC93 -D5B6C0B6F294CA9CE5A51CEBFBE78F072EF2E1374EAA8B74A89F8DFDA665E984 -266C686B3CBCD0CA5CFF0BD82F8AAF903A033CA7EAA8988817B526D38C76F0EB -1D7A62B5FD190723C24BC9E051F379CF7A681F938E504032AB465EF32FDCB4BA -8A1ADA22D5C86F704FB070771CDB8F1E061450ACEB3442A12EFEFC021D086CA1 -CDB8336CA04FFF6204B44B89EABB5EC6F251FA6BDDC4C550EB0C92FADDAE7374 -791F256E229BC0EB7F13FD2D007538B53D86CF7CFA0F7EEFE463E8ED1EC24CE7 -FD39DA67C23143CE793178162D7BCDB1A1A98B81C6DC7AFC814777A5821149E5 -0391037A6EA0FDACA0BF93EC305655AFD2A018AF0787921CC75B1810E86D7378 -DA8DB8A352EC697CD9815A4781CC2E0E7A961E5F961294FDF18D8C1C4F74CFBD -68DEE0CBF24326C67CBE64092201B0BBF54BBA02F57C80452654C0D8B4DF013D -771CC70762314D160850EB1165FB6603EBDD8303C398D3F545CC3C326B32A288 -FC73B1D805F020BB9CD98993C0362AA367F1EBC369AAAA6ACA878034CFA6120F -3437E24DACFD95C89953954D025BC501DBD78BD77526650B80380E7F39F724DB -957616303A0F8D9668DB0E55C07E4B7AC99E5FC7E639543B6AB14B3A44994CF6 -A038E33DF3007700DCC225679D861DCA1D43A289624D771EC6DE5AA0A6514F2F -298E27DB25DC8D45D2F192136441C66E4793DE91C917AF060774E76C767F7106 -2A709223A78EFA80093852F303477EF202502FD3B5021750669C4AA4A63D84BE -B56B1A178F537FDDBF77742E3269A086D5E8C244A7C1EE575EBD6D652770488C -BAE29DC2FBBEAC5D77CD6EC7AA078105D60BCF0F8035B4DCBF75DAF21766211F -3A9DAE4BDC772163D801E831E45BE3B57764BFB7AF0B905FA1DB9BDBE39ED7A7 -E85ADB3F07668ADCA70F406C9C0E2CB0BC33B93824C58C038F2256ECD2ECC6FE -8D1A422AFBF33412A2716B74E1FE44F1D5F782AF6D72D69360E760703DAD5E2A -F0B4BFE753AABAD641B8FC4B5CAA3CFC155685B608BE3891C762F36090812A85 -3453492C1D2E2C2755CBF0F4E2400B4A9AA8403A6CD8A72C274A30657DB76782 -A5610A85C44892C7ACCF2B30A3EFCB4FE58D01DFC828B9F160027EE9BAFE2514 -92690FC5F1E2930A0FAB61F15F4208CF9AB05B5AF4A1EDAF9BEEF7698C1CABAD -86E92A6C312DECF312C75EC0DEA63A66201395DE2B607FF56E476335A942CF53 -C5414165F5CA4B20D61F21E5960547378FA8AE0351394615B7025D334E31F153 -84A7A642AD5626F4E130C99C50CFA2FE032E096EA1ECC01DDE98232806CEDBE7 -FEB6A7FACDC53653952B3342C9C0FAC7F46CF70E0C2F6DA8D3146394A477E9BF -5F1F0D559702F812FF59C546E60B92B410CACC1D780C565D322936B25E422205 -D1B77761708D28CDCDCE30683A9AF46046DA59F7EEC548B78BB55A2EF07A9BD4 -AC9807320B94E8BB7F2EB39DCB5D89C48FBDBE17003C511D858DADEB923A180B -B67E7E1346B9B5236C2CE21BD33644447B1E0BE7920ECD96FCD032EAA5E628D9 -2F0EB758B3D942FE1DA935C0E09C4AFE72D5707EE97763C7F7CF7DF022248B00 -93140D8061FBBC867002E1E40E195D553494446639B9957F568C9CD266FFFCF5 -401622EF74732D2AB1E86DDCDD93B5D9AEF7B2EF6812162823A1A1B8AF1CECD5 -0B34D6E99CE3AC269095E4DE4D4BFCB7A12726601F8DDCC5A88C122E9373C38E -EEDF1477B87175CE1354BF2CEA55B879248AC756C06AFB27711B3F61379B4041 -ABCB1AF86404F1C92AF8FBB995C0745390F34A22C7D574CE5C2771D9AB025A1E -B5AB1FB004A6FCBB3DF83C8DF8C863815B2397D4059F891203C9C0C3EB8DFD92 -B6F8C706C80A3C7C6704E656B19CB89C40BD83B7E823F6E286AC1CAAF5526F6A -74A23D4376B6D9751BB6BA608A24AA26154E254660A3734A82095A68BC7E2084 -595BFE7FFB7285EF65114248F76545727830FE9E3A0B471FA4372AAC1C9840A0 -854624D0C02FBB5C20279AF5DC062A2573EFD6481E8DA57A7739EE3E7F7837B9 -E2CAAF0AC1AAC13B812205E7C1A65A98F0313294B740673300073214BE66FEB3 -B555649EB823D7B528261CC968997B56CB8C90E5FA4F04E7933FB396C4E5871F -C316DD9522EA73C1202E300DC5E4E743B24BB915302B467DC4059D1837F95E55 -D08D783616A2C868F222ACE2881E31EA5B3B57FC62ABBCE9288450CC64BA50BE -9F4BEA29CFC75695F77BFADEC65EF4561CD570E966834CAB6D731D196B24E14F -ADF86E74643E09135188AD6F9508D9D6DD31E5BA9FA92DB0AC1E1875A7222A53 -458103F5CAB00B70666EDD2EB08E83E7CD7A700237CFEC61CED095981D7A82E9 -929CBD909852365A49030A593BD266017EDD740010A50A9F001CA3EDBCD79646 -AD489A55FC9B48A7C765FCF9B212584CE1619D9037948A8D22702F2F36A5788E -974C88CBAA776EB4844506C7A9DE71F0D0325970B57916BD006B4C939ECEA725 -3BA14AA99BAE0C91D0DAEDCEBF1D915349CB9D3AEFC36A99B69857A73077FAAD -B6FF4F3B47C4F1C0AF1364CCC46DD4840819ECD0955CDF610F8A574A8BC0A3A5 -9B704870001860A888FB046784788324B83B2710D38B18186F59BAD37BC77794 -FD7B73ECB5A060B8992C419F9337453C130677A14DD23E9C1A092EA099E28A06 -D2EA0CE381936E033F2E48F33D9A18ECCE3AFACAE0CE118891B767FA3DBD9D49 -3ED3182A68E4E056D420ACEE2C7B20F6C2AE042D3DF60D70B2DA4527EBC0B3FF -927CA3BDA84FCC1ED450F8847FA4E59E0030969C215477B5D7BC0CBD674B6B79 -7C28FB5A2CB25405DD82892FAF806F2D0025232973DB70F7E345510BD782D5BB -8C722232ECBC8C0740175347D50B214DCBCBEC16B7E5725017234460C9B81BF9 -2D8441CABAEB6B853CB003F35FD3D05E40B5AD32EDC899C59F8F78529C62B312 -06E076F73C4F7D1E3F862418D9E4F7803BCA1052E06678CCC594A960320FA393 -B82D738D1BEDAFFBE013BDF91C6D524A44081FEBB7CE82124EF5B2731A382F21 -A5C6249D1BA59E2728D647FB7BF75217CF621643E0B912D4989BE54870E38FE2 -EE63C4EECA31FD1BD041D85FACBF80B65C37727F3C72D40A453365CB1A92439F -63D54E599FA5A9BA4F71D3F5D5AAE42DBADBA4AACFD13CC0841788FA7D186F64 -859914B0BD0C95DE30D5830B29C1DA1403A61A289B2699B527D3EA8A585DB2C1 -CC4FF7AB42AD22B0E09463F035F0FE3636E7DF92964D57DD0952A1504AC5B470 -556095A0D35DC150ECB425F2B14ED3769705D986F4E6EF548D7FF38F88EBF58E -EBC22E73B03BDDC535173ED753ADC75A9A203BA4A542B9B76D27A64531377915 -10C9A36DFE9F07010768E5B60CCF4F8737CDE22C42D8DE22A3AB17CF3E2832E5 -781D795EE5C86435BBEF93E1E41918F05C3F34316229DF91B1602005DA7C3AF8 -E3F60FC7D693DAEEBFBF9A322E0BD7A9995520780A9A476C1FCDFE428FAA9C7D -11808AEC9032A5F43FEE05692F80362554761D9950F2EC0FCC435A05B4EE4B02 -446DC2E3ADC7C77B3E937BF5138301563B4368CC8A26A95652F8E936EB6264EB -D68F59788449C59D6E1749E130501FBA420A986C887B9A31E80958CDCFDF2B1B -A0E8F6A327D5EC034F68ED4DE7AE84AEFBAC9A049B6E1A1681826F810FB76121 -0ABD0C23B1075F9658273D50C63426666A9D3481C8F54E2610C0887A472B2F8F -8ECF37A7C16D199C537502EC19D83C5B0C1477F2563BC63039494DA44534FCB3 -7856234BD559DA460F6BF425C7626833D8E3428BA27C255548F9D9B908E55C16 -92605D8A029C885A66C726B7C14A5AB5575E147E2F1E4DEA56E0162E13852AD3 -C1ADC5EB43FAF32DC34B5F832224C507DE8D0B1A54C3E7A0535EBB8CAD5B5E1A -0A35DD0FB5B640E8AAE2FA839E3942C917957B71F1E15BA194551DBB2C48F0A0 -B215560D0BAFCF472AB90C8FED6048116D4E4B9B1479D989F0610B52DC35AA61 -B33EA7F891617456085BE32C1A355A660E7B81CEA13DAE58911A8E3873B5AC87 -4D1331B59ADF9E7E7DD4BDDF990FE579C739D369B34B4E055C4EEB0FED255789 -62884C298FD09816AF32AC86844031C3196B94DDE55A65053457B48592D58F5C -DC9D02CD76A8CAF9F5B1D0B8A15A57587968C95E06C46FA5DA93BFA967B61A85 -2D98E3533C7E4F3A3A0D9D99AC57208DDEB2F7F308ECC94E0C38EF22520526DB -106C28133E996049672A9A459A0255D8B1A39AE4F8CD80195D32243F228213A8 -3A248402801919AB7BEA2D8172EC6CDC51F859E582D3C582B777DB87E611BEB2 -04612A51C1D8C49B60E3C2CA075BAC4939905AC87073A9AABAF7DAD58F48129F -C20F48B98B7C3B7C61AA456CBFF697549AC5B5A92E9098871525C351ECC5DF1F -805917FD1E6752A813275443401BFB15C3DD6BADB72DBCEA8098E6E684DC5A61 -78B8957BCD40A6D78D948700B9175F461A228F1ABCE8692FE132FFADAAF785CE -735647BDA0E0D4D76A351DECF6DEC5A75F744DCEFBCB719D18F41AE53A69DA67 -C1C273563496E7EB5C2001556FE2C13EDB5D4989B0C70B6EE4C6761C691A2733 -A856C41F48485604D55E91FD3311F7A977648556578335B8CE526BE651E3C4D2 -19F136CFE68D9F482C210011E7C0E8D8D6D713E7D9842FC6ED651035C1F557F3 -F4AD3F4ABBE2CDDB93811C851A52AF4D1A5FFCAF88C8BBF3FCE9D392F84B420F -FD686BE038D120621B39B6C36FF9F41AC870D41417A62F524DE5F01E4C7463F3 -CED218E47C45A05C0603FD0DB14DCB7C5596B773E35AB131172AE4C4C36A8D73 -BB0F0E5154C66EA3394915015FAB552EB5684D815E992626D4C11DC0917E0278 -1AEBAA02983EF1BEFC51E14FAF087E591637D3B958E183655BD18EA0553E44F4 -248CE59A8F41AF272C3BF63C77B27AE7EE4B1B681C62D320DF9988207BEC27CF -2FD1AB93BB73D36BE1D4E56542D35F163ED5569C37C781963D750C0741F574A9 -890414D07491A43AB08F0C34FA335DBDF5F065BD59D81464CC473F036B8B71E4 -2D5FFD9FB9D4B5381D0FC5A98FA307952457E70078A7FEB334BA92168D7BCFAD -FC72B67AAC7256D42C83C1F48AB790B8B2EAF786890F3A173BB3320F64E08382 -AA87596C71CC8D5B5B3220C228492F9D04FB56FC30E6828B480EA062276032C9 -6EECF8B5E1BE45F33595918DB888F0210F6E01E1E0214B420B03A34E772E8DC1 -5F416D10B82D4ECEFA523444EAC25B498111301DC293CDF1D528655874BD5731 -B9292437438FFEBF2E1D0FF2348C2C2EE98C512194D280A0F72A706A92838B22 -4E5DA2731965C70204EFAC38C124FE457D75ECC9DE58BA373B06C7C93775AECF -B09C9087D73035A3670ECB8FA0FC27DAEF125BA9E5B9FFEC9789E416B3236533 -8025389B8788202BE24BBCAE79E653DDC8BFB610FB30BBE572FA93D1FB41CF26 -6F60BFE555F51310B54009B2C506DB45B36B2C14B01A96B2FF29D2245CDD26CA -6C9023AF71A0182FE468177B38038878C1F803943F101B0F419AA3704859E23E -BC719FA3E86B211743C5479A1D9078208E9A0A7CEB80AE36C78F3CF3A73D6CD0 -EB8D4220A64069675AB13D6086244E91A13A7C92C909DC1BA14441DE4F542677 -33DF8B5ACA7A45C9FB84FED7A5522897C9CA1FFF1E9FC97A039118BE269F65CB -F130E31BE70112D7DEE5790A3F7EB0973BCCC5934E0DDCA04E5DDFD4926D4283 -7053B8DED0E2666753EC895672838461DC8E177B97B3BC64E6F076D0392FBEA3 -02A9B77F200594A136A7EFAD8A069E7F2B4CBF512C026EBED81BA4645FDF946E -EBABE659E725F26A0F8FCEE44DBBEDF2A8033AF58047FC2710C9A8E06AA4C008 -F7D4D49D9DD8E945DB7BE0BF2571BDF09094B591743CEBFEBFEABD525B497378 -E46753CD17122B72197CE7420672E118C80A06F7D263EDCF0D7997D42A2ED30F -4B909D456CFC2F90936FDA2D375665A2ACEE28D28DB6EAB9E1D9ED722D051A00 -99E7433BF2149829FE59DDBDBB60266AC6D57B81DE28BB1D747DB435ADD9A09B -97028959DC620CE7C90A01DCC8D264DE2AF4B2DD5DE46A17D0D841B5E022080B -717E959E18E862F254C3305330DF9B0AC282355A10871545332D7A3F -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSLTT10 -%!PS-AdobeFont-1.0: CMSLTT10 003.002 -%%Title: CMSLTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSLTT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSLTT10 def -/FontBBox {-20 -233 617 696 }readonly def -/UniqueID 5000800 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def -/FullName (CMSLTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 36 /dollar put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 -2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 -6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 -979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E -ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF -B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 -A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA -3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F -D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC -6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F -3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C -4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 -DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 -753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 -54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D -107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 -7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 -328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 -85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C -2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 -308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 -CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 -739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 -FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 -F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 -3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A -A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F -55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC -A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB -69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 -82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 -8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 -0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 -0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 -1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 -D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F -B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 -170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 -767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D -EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F -AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 -826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 -8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 -345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE -67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD -802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E -20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 -5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 -0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 -22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC -4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF -CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B -4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 -0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 -220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 -7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 -27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE -B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 -7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 -A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D -45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 -F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 -C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 -AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 -DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 -FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA -997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 -3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A -2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 -31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 -A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 -43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D -4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 -94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E -425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 -FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 -51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 -859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 -E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F -2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 -82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA -22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D -200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 -892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 -0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 -437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 -BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 -E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 -DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 -CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 -80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F -FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA -9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 -031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 -9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 -9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 -4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB -57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B -2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 -0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 -03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 -22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 -06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC -39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD -E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 -A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 -9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 -B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F -79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 -2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 -8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA -1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA -0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 -BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 -312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 -B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F -9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 -A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 -91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F -7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D -78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC -7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 -766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 -016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D -C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 -8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 -E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC -6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 -B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 -44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB -C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE -5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB -42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A -F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 -CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 -9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 -82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 -0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 -F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 -EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA -E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD -D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD -F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F -14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 -BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 -9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 -6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A -6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 -4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE -C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B -A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C -9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 -42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE -7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 -1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D -4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 -CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 -D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 -CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 -0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 -92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 -57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 -5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 -57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 -8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 -C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 -7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 -B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 -EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 -D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 -DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 -F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D -D16A478C901D3A34D870BA39F770885B7DE62298F50E61F93CAF0D7545BB7EBD -09108386B1C00698760DAAFC48C3BD1142A8282CB16C25820B538AF606A1E5B4 -F1998A4D4D40C21D76436C4D515C85B28BD56725C28744061815182C7E3FE4F4 -251B986069EA94FE262D75AA093A73EB508502215C8BA4DFA1E72BBFFA5E1F3A -A78084E517EFA309EBF60E7BCFDC5B180497282008F2F7D11B61DEAD80B3E65F -64A3281BF61C46FF25270AA6CE3BD1F4C5348EFB09382FD79729C24A70D52CD5 -0B8D87A62D5B64C557FE91108FD95B83052A3947A20E022728605E972B912CB9 -A8BE14A4F6D361469F207F540A44ED6C8A2E97F509CD3381942CA2EA9567E62A -92A067A760B44B28E99EABA1B9B9A58AFFACCF9767D04DC6FACF090D37AAE7DD -57B2E2FF7B7C99FAF127E3AE31281CFD9843390C916F2CFC957E85BDF2A2AF2A -87AC977228174603669CFC14BF64A093635CC13AC11D53FD312BCEC8B01D9AB4 -16CFE17DC23417D083871E1BCC9400ECDFB5ABC0D39BFAFE5460D3CC5B4B4E1A -1C32E4067CD47EDB8A5EE9B3886A8FA564F286F5B1149497260C8B1878518BBC -C095CF37D1FBA0D727789A877AACA3CCBA168289A7D76EA207D8761AE17F8CF9 -5BBA7DD8D3FA215C24D4874B93D802B373C4DB21CEF62DACB1815AD2EAD72D24 -172A27DA07A7B183B5F43B69EEAE06A50090EBBD94DE0F1FDDC3238C4D5EE4CB -F020B209D9C4516603C6D6F2D9CBE5448C1EBD6A597350DC37994E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSS8 -%!PS-AdobeFont-1.0: CMSS8 003.002 -%%Title: CMSS8 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSS8. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSS8 known{/CMSS8 findfont dup/UniqueID known{dup -/UniqueID get 5000801 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSS8 def -/FontBBox {-65 -250 1062 761 }readonly def -/UniqueID 5000801 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSS8.) readonly def -/FullName (CMSS8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 112 /p put -dup 114 /r put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C6258F0D99DCD775 -734480114DD0CD2931DC18782C4CCB90B6906CE08BF4CAEC2D4283CD44730A2C -28919598227F98FC5524B0CC92540E349C5B190DF5F2317AE46FFB97221BDFA5 -114C21D5E8FB0D1C298EDFF8836AD72A9B2AA132F52DD5D3F30427563C97CC46 -D241B7024B4CD9F1E0037FFABCC88D8CCFDF3BC6EED778074F9590733CD147B2 -5B68387E0F19E6A81961077BB7640A3C0E27ADD72556CF84ECD981ECCB64184C -EAB8BD9B96A873D80E3E0D5B4F5925983C80EBC3A8A12FBC452582A0B37D3C42 -4DFD22E9BADDCD2E69644AA271EECF366D63FCC29522FD72D6C1EFDB3597E866 -61443179872395E99024F152F6D6A4FD71BF1C7383BC1CC27AFD2DE3DAEFC06B -6BA837BBEBD0BE09F6AEA31A83B1B45255DFD6FF33362AF8BCABEBB0D944B3FA -B85FFBA0B370B9035460905432EE87395E518B4B670246FAFD535774467C059F -DC30EA01C95EFBA4ABB41711818E23D7E69D32BD63243A6D98666BD46E234155 -BD6ABC76F551C31B6CE2E52323A9DAD5C003FB116AC8A82B46ACFC45EECCCAA9 -E12C2C8E3CEEFD98D49ECFB824E8677BC9CE9B682BB5A7117174E4B2A0B925EE -553713780CDF3A3A4AF1560343A8A448C0B5DCC4E11EDF5ACBBA0BA8E5B899A3 -7321AA7D4B283AC9234978C2DD81813653A96F2BD129FA5F355D56C4E50310D2 -0FAA8F304D8BF333F97A6CD20CA4BA7BE6DC1446759683933BB1F1617AEAD131 -1C9EF2212EE7EA9B64E5ABFF45E1727EE82C00FD371BE1387987236F9BDBA4ED -A966658ADF028B5DAD1F0878064221D0469BF17CB4E738258FB5D92E9D380C64 -16E95BBA6A2BD9EEB1A187A7231C53BD8ABC9BAC46CA4AFA94A4920FA805F67A -A0C61940F6826CC4539A6CD1F9900EDC3F720AE4FA097F1D7510746BCE2E67B6 -EA2F2046613785AAB89915655408AC9D03201838BBA44F421D5F25CFD88E56E8 -1CA23CBEE9C2E323DF1866D31F309C92281E514A87A9631F33B238AC6520A20A -346DD6A206C3CAF2830FE244F2AC5D894686CAD5F4BD1CC51EC0B547603BFFC4 -F008FDAEBC93542A43B7C907CC85046313348CC8A017C585CC370604E40AC820 -8B9D8F57A01868FDC93551DE10FA83DDA3E49E44C32118ED90FA67AB1C66B3F9 -F80CF71131977ACCF4DB44CF1EC26AB363C5F95FC2523B5DFBF4D60647EB23AC -89CB971DCDAB3BA26846BA9317C051011C37468B21B159412E69DCB84A9F5876 -F418908678F38880B95A4BFD3566A6EDE93AE05BBDCB3C4E240A5C0A06301896 -69FCCC0B65BB269F2E10609B6446A68E2DECA905FC26D4F502CAF0EE9AB15E60 -CF42CEB376D92D80A6AEE55BCAB006999BF4415815D0F5BA3B1FF9D2E60201B5 -833FABE8B883847ADACF9B032721DEEE7FEBB583B89066ED9608F1EFBCDD09D4 -3F3C2B7B03154676151753DFF53815F2EC1517C094B0D2CC5EC483AA93772D24 -AD3B0084537B91BE1913A31C70750C6DD707761DD733F9ECA552D3F26825B2B8 -3EA263488892C929DEC07E2F988B7F7657D53CFA5542CE336D35B462E5E8649E -05973AA54C0A4E63552004E3C77E5FA77F821D820B1620CC8CB3EC5B1D7BA751 -16CC155DEDD4DB0FFD3009729F365670DF9472435557201D8E82341B4056D2FC -5D2F7C57599249DA2A99A522868716B076320350FA7415C3B10D77A6E1DC77EE -2D929A038DE3EB4735A4D4F5C8C340D6D293D57E83C2F379ED0EEB16AA3A2A2C -ECD664E526D918A3D0A934170B6E1493843E6AAE87E850D70DE65D34AA2A36DE -8687D57A6B6B1447F9A4380CC3D4D11D54CBE762258426C46B8DE6059E6A2F31 -E748549310FF4362129080CD98E70817A06422743780B86E11101BED14BB6569 -D36903BA8BEBC24A478CD430801082CCF49382D6F04DE270D51CA5BAFEBD0F8D -901CDBCF10DB97E2B059C8CF7CDB45BF931203D5F8CA4622DF19682DE2BA7924 -47F78908BDA23C4E21C0ACD2DA259B23648B6F233EEE830E7B82DF4371F55C30 -71993EC2BCC7BD6411690B9B1621903F358450976D6B6EC6B505A593A9FB7D92 -7223E2424DD5AABEFF254FBCEF934A4D51949BA0E8CD614AAA3AE6C3ED7B37BF -5324BD4998D8D5DA95E4741B753AEE580FB3913770C00277C9F609B4DF3D618F -148E0EC7A75218AD788F98D35989F3DB94413E70955EF586C0995A450BC75820 -F5490EB55E5D0D21343565E1FA94FA64A74377F87E55EE0EDDC8F4286951A4EC -ED6FB3B444206D89BA71A9723E41E93A9F6C80240437019F3C23DFC2491A19D5 -29762876AC60A14404493D04B5537C1E6FCA67B69DC1CD859F9C956FECF4461E -EC8B6CD5B5A89A8A838660A6C3F47B79ACE3B05C0AA2F17CF2DA947B893B42FF -749E2CD5E7B56823A119629931B1ECF65C51000A10412668877178F589B4DBCD -24D39F9219C46BDDD6F101C6AECFD3876056CBB858FE0C4BA2BD0B5FC26AD5BC -7FA9E295E72BEEEC721300567B6894FC48FFE5E3067C538CBB3B77E386F50D22 -F8DCFDD0E335060CDFA49231D157981925F1CB36110809C12BA28D2D116116DE -01898E311FAACEE0E5402CA30B64D3D5A0CA33E417FC322F2F0BB7AD3FEE2039 -56A15DD6D1E86971AD3A5A9A27F33AB62A5A3BF5660B59235398926D6BDA33BA -BC43B062EEF199E4ED991518A62AC374EE21E8F1E1C954BA6D1493388F708D0C -961612444BAE019E1DC18BDE900BD7A781835580A74DC696BC512F7BBDBA2D0C -ECE5D83A049F7A3286B94FC446DB5C3F33CA2CD3DDE2D0E774A579831CFDAC37 -9612858EA613AE6939CED001EE662DB17642D0357B80BA0F82ED306218DA8505 -A613CD622FA998EBCDFB7BC70F4E4C8F1F43241FC22FC5BB208F4B20311A98B2 -73F30E4DFCEC93875CBD1ABD29ACF80585F59947F23A96D218C0CB8BDC1C49F5 -70DF3D49704CBA9A23294A88A2AD61811450921B1E5C3C86435C55AF87AAF6A3 -A13709082DA9C47D372A4226116342DECB14E4A4ADB7598321516DD637B64148 -12AB17AC5B2EB25718856D50BFC8D64C78DA6E5C145187DB0325C30A42013A81 -590E58E74094610207FC70BBF1A497395939B42A6EFCFABFD9D43221DE484753 -DFE5311F1845592B4484B1CDFCC32B4E068B11A82BA189D2268D88FE63B9C6E9 -20C9E40B543B5C401265D92A932476DAEADD4D3E2BD6E4DBEC0B30FA90A1924B -41D2EE9D8AF2D8CA79D15518141665B542C696C2507DD2F4D987EE5E22397FA8 -FD80743186872DD67BE58103321467CF3F4B8898E66584DBB9688B9C78873CA2 -9B72AD7406CDFE8B58FACA2904869FB0EF126DE299CAC08CB89F60561939D75C -2722CA57853372C14F5BCCA5C4FEBCEB0728BF9E30140E6B0D6C034195FCCC89 -291CD818CF66757EAEB0AB5A9D5710988EBB052850DDE97BA0DC0B054BDF5172 -2002AD6FFA44AA5D9D4EBDB6B2C04E8EF38660D9BC4C995BF37DE078C279328F -4C360B8EB337D798962CACBBDEA517A5EDFAADF0D445FBD1099837F9D689CD2C -E330CF587246387EDDED64A2F4C397C1B2BFC325B39114609EF57DDCD7B93C53 -811ADEFA323C59441ABC447F683B5EC43870C057463DD502E9B9DA7084C3BBFB -2FB864D26DF1BA41ACC815F2A71E96D2C6F572E1F7E4A224FE57CD605682F98B -AC7BDE4B85A4C11D58981E981E9FC43B87A368BAEF78AD87B7DA0FE403AABFD1 -CF414CBE75C0E9E257DADCBA035E1BF05C4E17FE92309F18633D93DF885956A9 -6C27E77540F888B8336B61598CAB04F3B5A1767C1ACFE15D32A25E5B1BF51FFB -CF3CFB25CEE7DC95203CC44805A935D5A9154A89FBD4E465F0E599EED4033365 -0A31612F37BDAE8CC85BBC67F7E375EA68C2982FFD89284B027501184C4D2232 -CE0FE4E905C4B504EAD009F047FE627C79AF9EEDD65D00A3858F88E699E5EB45 -4957086CB22776AD06C317DEA41880D88F0EDCF71B4ED76BEE665B7937D5D0F0 -E568C7615025172086BDBD69670EA154CC52C85CBFFE88C1A4D1AFB6624EE667 -1B5BE2A31FCE8B2A4B03BC5DC57280199CC0970EBB636DDF8DF54C4A8CC8805C -AD63CE866FB20C64725AE4BC9F0EB275BD83EC89F2F9CE23A084B45694D8C3E9 -3F3D3C1A678690877E8B1B77ED85D4F6E03DBF1F3B1D177E330475F172E0E729 -63EAD8034E6100B2A5773E2605180629972DE6BAC0A8C2F9580E9F1D2E77791F -E1D33C2DBED3FAC47DDF1B74FD02583C3CFDBB2D1CC2B735C02B14B7AD3733CA -1682944ECFAD673A9AD5E80B6248FBB6E5036EA7FE5CA8C34FBCA6DBD0E76EB6 -C2CB89D9815DB3C45742170DA926E03493AD86BB19A1D3FC623BDF1C920684FB -7414EF69CF39713A9495D8CB678BD4592B53C36BC6CF93505B8E32311D42532B -5661051B855F01A9B3D77AE38879853AF0FFE2448368DDFA3EF1DEB88AA055B7 -91459586DD2DFEDA192306DF7143F998CC5D67C1CED313430E5CC3F9CE265747 -8582102111E7AF9FB94D95B82D8E1DF01F04F2A2C22A20207B59C8976D56833F -E3B79DCB727EE7537476A052E92F7C3D6A625AAED8F026F22AB59EC0F86E541F -BC082D8E35234A18192862EFD232C9950B1FE0BCB91209FB540DC5729B9E36B9 -94D0913A8F01FB6CB16DE85E6B89F144111B1D911DC527C24917D909F1CF501C -1AF2923EF71530F21F9BF049A56C7AB3249A420C28954E981EC464F61FA167A5 -C6084661808089EE7DBD80A2D92FF4040B37B2D81A2F5A568D461BE1C62B0FD1 -BF6D1063D2B5DB9CD48BB2B2AC9CEFA543E0AC5C86C462399C1E82F25A157282 -D32D538029ED22CC5935E63FA076BE22D3F53B7D7CCDD344D68B4E73F87A5F2C -691FE68C981FF7CCFB124506FEF93F36F7181075D7BC6FEEC0E35AF57855BAB2 -44AF021C7AD8912D884424E8BAEC68A5562B881793A1B47FD338B1EE4C0B8583 -2867C78DBC2EFC8BA1431DB1C8622C99BB2C2D4D5475BFCE87B11762427867B5 -7253463C6F2E1CF5F1DC1F7851F2EF6A957CAB0C0A55076C59A6FF9237917C08 -5F97C2CB4B5CC903B76BE8C057018CD962EF90E1C0CCEECD52F2AE35A94C6EF2 -D99DF4DA88247C920623978A1DBB81D8F171B588D617AFA8285F6147E889523F -CF11EF4BE498842D3BF8E811B4B33131416658E03293AD911516D8AED556F7E8 -0181391AF36D862F5F8B4588BC99585BFF0F1ADE4BF73320158DBACB2784768D -D9794E2B0F2C0696E5ECE5C7A7DE78EB5CAE85EEA244D43D0280D4C87B6B93F4 -803718596FBCDB61A0BFC2DC666128E56F3133B9D4F16305940B50ECF66D80BA -06C0A73C02F689314F1B4FAC22D16BB1E414C6F0A1A548AAB1364D2CD9DDFE5E -C8887964D26BE84986A6B1246BC306E6343CA376F990B77BE8D68A4E54304C3F -250B2311586A1D1EAD2C0221FE1828CE8396DEDEF13E70E0AA75FFB6089DBA9E -9FC3FAB43B3633C8EE7598619A0C6FAE2F25274787348E3660D0EB7212F5CB38 -032A41A54FDF14B32E721819AEEC54E8FDE3AB8F0ACEA267B01081F284B008C0 -5861CEB5C236729AA17DC78E92FE1EF9F047B53A59F2D1D6A6734D0413D1A51F -75B03234F4775523A55978C73D5BF9031EE8BC6BF9E2637DAC07F5AAF2A6C41F -77620B272300A78E86F71F16EBCE2DBFEF4920BD3F16C282E0BA4C872E5F7E52 -7ED2B663FE45D4A36A588D228D32E2861F26AA6FA8DDBC8110F4417D0DF29285 -F06B57B1720D0D13828A4DD68D57BD530FEB9C3CF305594B70E4394BD60C82DE -A64EC17661977B18199BA661C48860919CBEB56AB6C32848D51733F1E959EA35 -DFFD823D92F11065C643AA69776F71163A60D4941B753BBB4A4C0C47BB1D965D -06C9BA1FDAE47926F37C0C5B591058F68FC1DF3933B2BE014F99A53A617A19CD -8BE011234D48CB7E14D31B02B1FC47C8BFBF04C4409D32CB454E8FA0EF9AF16B -8AFE9FDDC41F6A23D700D4AA922A0316A895D240C5595F21FEBA98FE0E74B762 -77FCC80F4950A8C55B4A008FD381E9C0EDF4427CB324BE4ABFC790CEB53E8BBE -AA90163A7BB19E2840FDA404E830F5478DD69B85C5E69573D8CDBBDFF41A8126 -24A6AB66333C749C35BE314777CC222D54FF2C4C75717FB938724EEDDFC2EC1A -8DA77B5482E760B68F0A2D240332BD48803004BC157C6E8E192D512CE83D5572 -D388BAE80AAF5E7240A73CDA7CFF7F8CDAA4ABE1D3BF6ECC3641B6BD1C2CC703 -275D48D62A15E5A85F003E76D1EA7DB65E3476CCCF6B504514AEB1FF1263FDB9 -81FBF1A1873FC287FC6B6DB11F0FB463637D4F3280EBD19976588F900B956FB4 -36AAA8C1F040300CAB9C4F624B22C1D3D6414B7CAD36B5AEEC90105B5A5C2129 -4CD540B9D0129813BE7E20870365F8C46FEC92DDB64D0A6C7C5B9867A4592B7C -124B1B47899CE2D1C03811AD1B8BA253B0D29DAF2B53E312827478DBA274010F -C919D122DF24C1E372F7F3CA77A2C0EDCDB2635F4136EA0C202D4011346902E5 -1524609DC031656660302CA36D376245A64135890C13A11C0085861792384787 -D0831FA01C11F1E7B4429DDAA0B3A7EC1DC3CFEA24C34DA4BC993300F12A953E -80C8BDA360789FCB0F1AEEA7AAC310D0C3C56F43F7914C3B037DA02C31EB740F -2B1A696E0E5553656942BA567DC9C4D3CA06E45EA615B7B5674016DCFA07C0B4 -285BFD9D551117A357F4BEFD58BCE60661187A5FF20D27D685B24BEEF563F0C2 -B2CFA2565112F7F49023CDD405AF3E54FF994630BE678B0D6E1CED514FC93F7F -63710D289026CEE4B074253E7E0AB1DCCAB57DA7A1E2050D2B8D3D75F2AD7423 -0B0A7081DB1FA44055620B0A2CAA54666C5EEE3C01540D96ACAAE98644E1D210 -E0E020214550D723431813C031DC7DF0D177E82AE49798F8E0E5AE0BB8FF664E -4793F857BA380297AFB977065B7500E4C0AA1735AF4E15703C860A016F19E593 -319D14C497F24ED8E42F3FFEBE976DF33D697656DC11A8A7C6A60219BF63F186 -E0FFE55594B31E5C312DBCCA08E84E94E8BF57CD5F5B70EBE59F0D41DD3F6B05 -F7635EA92FA9E082C80075A5A5F684160AADAD501BBFA7746327E3E606D1FAC8 -EF7AE7C612371BB52FFF41A97A349D111E861A83C9C48B0145ABC3582FCE43C5 -D121F0EB6F5D219E52E2BB660AA1DA5551D6B66A732628D640BF9D8BDE2BB3BA -046FBFE2E28DB31AEA2ED8F9405A39C16C3800E9B5611B460BE0F6716F2BF79C -902AD4FA3B6656E13E9DD7A785C17F28BD4D646D66058721610CD756E0D18D32 -F09C740B6023DFAD45A718BBFB2E65544D4754A5DB23CC7988A3EF45CD3786F9 -E100D9684549A16BC2DB736D43C293097E082A968C27F0C120C41A53E3464381 -F7DCFA8B36344EDA85F53FF65BCDACCDE7EAA41A6D38C1F420F8F2E287AB0F98 -A0DF7D8A6CF2E4C78D606569BFB7C51495493FACED57CF2D507DDD366247D807 -28D73CBBDE2F4F666099411B1FD2CF7B93D0E9AA161024C58892285BCAA65E55 -9FB37468777706D2C57A0DF6D520844B56D62CD10F2D7B02D17F97E4F87C16F3 -9BA09013FBD7ED8C2DBBB432288E598241369B9DA6E3EE324290D73BDBFB5448 -E9D7142036C0FE538F18E866A50DD23152E2C096E1045E7777888AF5CEFB83B1 -C6FCA18A26E83D75AB66291A5A5A285DBB1B9525919564600D71A767BB03A8BC -7BF24CC3B318BBC0F40C79835DE62366A937B938AD46D69C26DD0B38A2B21A60 -104698E9BC23BDC80D270FAF3C4DFF677E60CFD7F9AFB62B4BC36E171C079402 -E2BD9735E69C47AB8322FB722E8DBA6CDEA87DF40A827AB2618F74F1C441DFC5 -171FA17A96860BDD648B85699CC06CC8F3C38638084F8F4F7DA8B4AEEED92199 -14290A07373ACE6F9ED34CF5FD1C81292D7ECE91DB3F7B7E87BD9D405F2E29BF -660674457A70FD024FB9194EB0FD85A1955EF983606F5D58FB6BFB03A0FD7DCC -0F4E58304AAC2D9AD27F8A67E78A4A413A276F5D3160BB73DB27646EA4213C00 -A70E288F036EA3BD1FB35B49B9AA26C0FA6F8742178B15884E33D4CE17497C21 -3ADF16D6CA98017C7C118D8C67F71A4BC3C8794BDB049DD5A6892643F78B7CD6 -D91DE5FD6796E198D7C6AFC58D3403A416F243F1B58CF54E94F3DBC93516338F -CCFE3E5EBA9218379428AAAE8017F3F246E5094B6F93A337BD182780389CA09F -38B773F2A3EC4464CBC4C2E8772A73892309E2F12284A4CAC143C758C697B723 -0F54DCD8AA3CCE6DC74199B5AC793F7177BD0C29C80062C6EFADB667852739CD -23068352E3437128DACB7A9C1D2890EA23B029909722C465EE332C62F779FC6D -59D29B1E3C2319B57042C306ABE1171AD84F093F5664EEF387BFDF093DF2A295 -910569FE6DD519F7E7258236ECD89FA8C8DD43BFC4C135EEE52000479AA0AC52 -2A7777B9DE9EF13472F24B9410617088E264AB294BAD93820364B32BDB1B1627 -E7A086E354A118D9912324A8CBDA7F65AD20C836FCB3799CA31128C125601282 -80421422F0542D3AD57E3D1C70D93B159578BCE7D8DADA6395C634B6ED993FDC -F1EE90835DABD16A1F78C77D6FE4AF0D3BA0F9D0306FF7DC0132894BD4D1396B -1086FBB683925846AFAC5AD11C78A13CD9516826C19838B484C9E1DE1C793104 -4A3F6EC93C85AC329F1B59CA370EB0681089D4F3AE0A093011ACC94EC85807E2 -E2DA16DD14531CAA23573ADB8768BDA2313C2F6A4E53BF077361DE9B5051A00C -D4D7A1CA6443D300761CB8440B6A25DA6A2FE422FEF37C0EBC8773088E8441A2 -E5B28AC4777E2523E108942B0A76A49F673B0EEFDDD37E9A339EC21B37B7CE59 -B56B57CFA4FC20B24DD06941DC5B82642FAFBC699A41F624FECE54780B6D892B -CD80777ED127D7D9E7BA4758361288AA7DD59EA03F4EA29C6A70B82E1768AA34 -5ED9374131C8B17F1148D14D1B06E5B5384E2A4B132BBC49BEAB37F17A955D65 -777C90E18AA96BB5B34F38EEE2CCC5F1829B4140177CE1F01FF376F316E8842D -24F809A54F6259792190778C2199904F693E8FD2A3E670A4249E88B67A1903B2 -92BFD626072910FD793A97DB2CBAC5A8228FAC4299810E04B46A3C414C61B8CC -A6C009249E82856ED045E949E25F10F21F31FB630AC45D0DB3E81E337E0F7B77 -A23112F4F74F19A47831D05AC6A1E326B94D8BE832CEA49100E3BA8168AF92BD -C50314402AC261E30ADDC7D87D9476278D3DA524CC03D2AAA14A906F762EEAC4 -5CE83F1B97500428171417C5338A0BF1A200713CE6328DC449AAC552BFC0B40F -BFCA7694DFC4B4854F1D30C54D32DA1D4F0F1778FA5A98C9ACCF847122E2698B -93F934E1D5416B340F186B36DA515B92B100C95F5C448491BC70945D55F763DB -2E0EE939654A57C456249109D71348D48E475B6F14EAD34B961EDFC6C567EEE6 -4D1FB17DD8587BD01A95EA1AB2C506906E4DA2D3552DFE4518829FFEF2DDC513 -82077503D150DF80EBBD2354FD10 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMITT10 -%!PS-AdobeFont-1.0: CMITT10 003.002 -%%Title: CMITT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMITT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMITT10 known{/CMITT10 findfont dup/UniqueID known{dup -/UniqueID get 5000779 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMITT10 def -/FontBBox {11 -233 669 696 }readonly def -/UniqueID 5000779 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMITT10.) readonly def -/FullName (CMITT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 34 /quotedbl put -dup 35 /numbersign put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 48 /zero put -dup 56 /eight put -dup 59 /semicolon put -dup 61 /equal put -dup 63 /question put -dup 65 /A put -dup 68 /D put -dup 70 /F put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 83 /S put -dup 84 /T put -dup 87 /W put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 -2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 -6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 -979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E -ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF -B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 -A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDD513EB6237AC8EFFB213 -218B5D59505B920425C46EA55A185ED268DBAE2AD127742473FD1018459B7E12 -C21514D99DABAD554C53B868D24B881AE68B52684362D1AC0E86836194E335DF -BB6D37A7215F8F4F5C816783BCBD4DB6838DB92C13E514A1CC344B43D8B8121F -7C69BF2259D61B264AB5259DF53B7CADF565BABC47F75C56305448CDFF06E869 -91043B33C8FF9455A99BF35290E48EA7FEE38D35BC1A968A6B9489068F78E17D -B4634A84F0ED0F884BA33B46FCE57168E787167E0A1E8EF21F7698BBBE25E23E -F3D6F8957E9C3E858BA10AB9CCC45271F2B23D423AC0AF934ACE0FF6FDC79523 -20408F919B960A276FA88933B9920825E602C570CCE4C18BC4035BC59BF4F87E -6D05BE7CB7D0A77A6C8E666D73D216F04AB820F477809B8410941E00F743FB6A -55F98519E4B6DB552CCC264132BA31893928998BD1B95EA83246E90359D02566 -715AC489733A797E2532AEEA34F3702B8FD10B35803063296A3FAD8DC11C0D62 -13B2882C4C9B090AEA4097302239EC457537EE7B3BE94AFD5A8672E6069433AD -EA5F9A60B8DF0DE474067A65F1A845949CD12CC4E0919CB7C50C0C23AF8D6365 -083C3D64103949AAD9A71FEA2C70100FCEE6E7DCF19A7AEF7584F329DD12DCF2 -E02635F8710D976F815E76D3F3CF476655494394B44FADD9A9524EF08FC31EFD -A32B97875B55234F019F32EE4AD722B6669E27C2A629C3F170012C9AC62F612F -2A54F7B1EAB87B8ECE7B64A3BDA7B6BFD5B6F3F964656AE949F91F216FB70770 -DB9F68C91878C624762DE0E5F88FDDEE03953A97BCF473464EE216293D360ED0 -33AD04799EB9F1BF212DA7B9CF1F5E648ECFC0AFB4D935B09F36A752451930A1 -D4B662BC214513D17885D824D250AC3F036BF6377691E603F12241E2EBD2713B -E665433EE1E6728C071FC10EF177EC0C2D3AAD49BD2A0BF511A722FDCCD196FD -BE73113298371228B82129BE4B0CA0D614270821AC770E51AE71C71E6B7796B6 -B54F27FEB1D9FF8F6C4F3FB28AF32DFCD79B8B834EF8E02A818F8917A3DEA452 -AD22FF83BD86F4D5D05CF44F93CC4055A7F3D323621F49470260A559E346CB46 -37E3ACF70887051D7B58356067AA200838AB1CE93B7CFAA89CE01362B0D57A16 -FCFB51D3FBC0B1E1925EE1764C0FDDB0439971FBE93C7C6381716EA9FD252391 -84BAF2C3F2C230523E09D068507E1808C86B789333535065B889436A12A7DA91 -EE838E04D98F00B23379C9535692FF3D4F8A2CBC448342B37D781CFF7771D83B -A1D1B19CBD3CD6EFF51B850E502194EC0E275B1AD49FB345F4F5103FC5FBC605 -1F5BCE0423D467836A3D70DCEAC117EA056D12D37D4009D7EE630434645AD290 -F47482AB1E4868B8F195B876A8847F88919FCAF40768F2D927A5D2971B0BD728 -68369BD17075201EBA992B0C155B0BAF00D0B109B4BA239646CC5716E1BDA9EE -EBB5A34B7FF0AEA47595024C13A8EF233C8CBEDC7EFABA8CF1D4B73E42E667B9 -D86D0D3B042A018B01203B3C7434F18AC4B93D02759E42B7691D56D778153D83 -BC3D10964C98F4371C933E0BD5E18C56DA806976AA4D80E4FB8CBD6858DB904D -E862E5951CCE95656600AE399C5BFE7FD3ED380701745BEDC642CC77539DB46C -17F1DB0C16ADFB6D50FFC3964B0FDF9D207C7377F69D7B741A15E04136BD7124 -1433FEA5650A3BE38EDAB4CADA541EA9D47C16D1EB3140FEE88AC4F896F98D9E -0F97731290739BA9D456D7792C5A6B15321A1CE74E8E170368C832649C98597D -DCDE2338D52D430C98369B134B12FD3F58EC66073444696753911B058178FD52 -698FD8C279E72DC10D3E619D64CA5A8B2A08519B37FB9DA7FAD1CDCD5298D261 -BB988DB9257C3EEFA39A52F70D5D33342E841BBF95A075284816114283199CDD -CD7C85CA388002E4267F22AFEC408D0DB62647CA3741741C12EB8DD8F1042988 -EEB4ED6B9E8C1CD526559EB4529872E9CE833E8E3949AE5CDECB34B15661C4F4 -6CB3912678D23E0BB8E9B5A6C4A479150433961C0871947AC4E7F8AB76C7C339 -670A8943754870BB59B5359D0982277C777C5470A18E9BB14E9740C3A92C6855 -B78FC3F38C258C810449A3F69251CDDE108067F925474B768FD781881DDE45C0 -A9D198362CA8A8046E9C8F8A6AC3E40301D7B54244076020C677035317AE1F88 -6F337E2DB69E60D5699A8B6E5EF7CCB2E504C66D3786A00E4F4EA4D46F3AA868 -F66FCEDF67B7FFA9EC39E8E12B867019CDA6605563B120689CCC71A787B93093 -639146C052D9A294D4A2F17C135C760937EA22BBDA1F900318DDB515B4B7AE2E -AD4BB9310DC5394B9EE5F40AA5E201CEF58FA477EECF0B90C2CFEFF17DB458A4 -0558525C20BBCC84647D7F4FD233F1CC8760AE8ECD99A60A0D3138C8AEBF18B5 -9B59D86468814143CADDD50EE8D03928D541F8BF6340B1C6214C18D1590D09B8 -51355A8BECC452CAD2A1D8712BC2B1CF0032853B240492E1D6C7B13C39106279 -61F948E5D69EB4350AF3901B264510F415048C3931465A26E998B1A498B8EDD2 -08200ACF62EF22F5CD31753E7D6478FE111E8FF405E11F9FB8484A7B52703F13 -E672BED8D131D79389F63F2A6FCA03FB36EF736114BF629074E722C91A3F3641 -98012261143E1CB15BD8DF3D67DDAA46C3C718169126667A219433163017D553 -63CBFC93F6D1F338A1D0439734ACB2EBADFC1F4D5C11D4AA5EA25E52F853E5FA -087DD7A45F307A399702949DBC2267409500EEF8AFA9354308DE44869CB51198 -CFD8AA07005125202E564E6F548E296E698D2CA5B8793D86E28166682ADCA61E -334D861042393BA0857D77C5BCCEB9A4A16D44C95801E4D2512D7ECAD02C4776 -5139247AF495DEABD00BD787B028AD7DE9FE827DFAF22763D59799FCFB003278 -6D512F913A924460D9FB6C2AC27062219817E3A79DD96841DED1FB4397D38A66 -56B7A083F5C4AC70ABABB3D98324381F6109BC553D29553B36827886D80013A5 -E0407423A6745D0760BEB65A5FCDD6C00D68268DEEC4882B2F6D0D52C0D2EDC3 -86DE1767436A743C1772B963F081BA723ECE4B5E740D473BDA10658E0E2CC014 -93D6F59E3695BA3F5F7AB913653E3CE63C5F1C172B6E1AD1EDD719F163F2F3EC -E73A5C91FF854A1A309C72BFD7F8E56BD46BE7943B06A5700A7FA1CB86D3B09F -98F29BB2585868D5C8F9247A610D75FB3BEBD6068A735DEEA92A2F8D46E5399A -4CCCC1F0270A34FF5C489DA83F90237211BB3A4840EFBB296911F2A373C220B4 -EA4B811F943D2DCD7C395A84619F10C2B622676033B6B743CEE9D147EC25F602 -D216DC6A00064D707727AC08B732A6E313F16F8ED7A76103822F8FE73F1A9804 -AE575AFFCCEC79CE105D7BC648495256A25D68F812C1E3AF93A50CF06CF669E4 -13C5104578193CF37360A69E249B9E8B4CF71E8BFE41C510CE8019A0611C8382 -281B8A193856CBECBD5CE2DCEFC29E093ACDF69E5652B2751F52E70B175022D1 -BBDCCB0E16E467836D2A68580376144B0C6ECA9D5879450D5AACA9A8FFF0DAB0 -482692E8C4487E1F0902D0898DD4905A0C2C9173DF0C1CE8D10E17653F2B0017 -E57BF148D72721A58ECE5D5A3757E1DBBC36BEA533C945A1136396ECB94EA14D -8847136B3397625949620845A15F5E15C110CF69345EB01130E68607D0F01E6A -DE3D2997685BF59ABBF4DDBEBC433257D6A153B98848C484E1035D24D0C586C5 -E8970357946667E6E14FFF34110380A23E1DE7A26F7C56C6CA2BC3437DC0BCFA -9EB6784FAD114A2D1B0F967BCCC3C4F5704390EE3A34EAA95B05424EAA00838E -95877D86D1765BAE85E5CE593D4FFC2BB6FE3167A8EC85FCDA0C11F49A63DC4D -2CA32766196C626385461E059D1A750C7BB45ED32ED87668FBC8C82664FA1FB4 -4C8FFE345E9D80DCE8C7AFCB7654729E36FD5244E388AE3718F3E70E1BBF68E1 -D66EB6A79A9877412A789B433D0DA428F9AE2452688715298E99DAB167B481F0 -BDCE3A0489E87F400B95F63CC3D406C4781F159E58A51CC9FB92BE53B9A88687 -34B44308D25271A599E911091F0DD6C57D33B9240D81B20D1FA452A70D88F4AC -6698DE4C12CFF027D351EE01B0C942C9A2C856D485C765798647A48832FA8437 -A56A59CB5739CC359FDB3423246D62D276E51CDFB0D715D9CAA7BFEB877266ED -1A657D7508CA17EEB1F43243681BBB839B16F2028FF098A7998BEFE83F8174E8 -E16B6F9299DFE74FAEFF7725F09BEC6EF729D79723380458DFF9187124B7C95A -560BD01CBB70548DE318F722541BBF9B21AF2978708223A49DA2068463A6AFB0 -9DDC0EB5AFDFAA600F3D01EA01784D0D4FFE844E66D720E4B4FE52A85756A47E -AD5258D6AD5C4AFB3FFFC2130FE8E7CA62C025954CD07209444130C46CBDEB2C -306825F673A8B2EA21E19CE893C0130C8058FB540E74C6C1EE60BDAFC2458431 -C1043B152D45C754CCF7A9CA3DDB7510B381D65A54B692CF4AA2F97794E5C34D -FE40B6AEF0802A4C0899B96F88E3947FBC6B085F652C5060DC6C4E1300B55130 -ABE326D755DB1AB573892E3B95378B61961DBA504A06C3C94E5A8442EA736A9E -FD8B0EFD03765C03E452DF5E7B5479E36C3C2A6069D339D136994A4269A53ADC -B94E399A2E485CD1B93B78328998D397B2AB3AEE029D2024DF1BD5B1B4737AD5 -2783C573965210BB4C5CE107A3289C3E62005773989F7C0A567653914575525D -EA963D199A5BC15B51C476883D21A88BBE47AF7260BF79460784CF3BB43D91EC -88BFA515416602EB8EE0251CBD7A260750960EB6858C4DA72E7DBE9FB154F55A -192D587A289F4DA7142AC9CCB5EF2E8BAA32306EBD3A5C4B223BCDF76D2CD755 -AE8D3849D5CAB17F2BC3ED236D337677644D84637A7A8893F875D4F1FFEA107D -390133EB3C284A1A9387909F020A0A71CF5D2592EF725B1D56A7DB6F0012E15C -D6783FD87ACD23CB822BE885CF88D2C0306BA6E9934C391131CACB5342CF94D4 -D3E11C31A4211389DECB2E7E01152C6CDDE845A1005D4464F20A58B53DBCB387 -D80467A6F9A44DDA77B87C228DE8D64941CB2B5A65FEE919CF1502DE6CB7E74F -013A53B152384719B18482317A1D11BE5D145C1B47CAC346C4C055DBC7A158C6 -F3A12CB7D4C4933C322ECF307D6D4356976014149A79522C36FA8265BA16729A -52A854CBC9D0D5B106D1D779387A32B12706CC32A654D61E7F0176A52DEC82BD -41D70CB9150AA7C4ACDB5C42215C9DA636A234ED410DFAC4C1C060F2ABABB5EA -4F9031F8C40EF27B1995136AE9A838D09E09F5C8EDF2822456C7A41A9BA87961 -F7EF52BA00B2115C6799124A831F57FEB0A15B4F96A6711298C9116986E02C63 -897D9AB5D159EB0962B3488D8A98FC9445E7CA31D6960BFA096C64ABFC328D42 -55D0AD525F3BA2F14E79A113BCD777F68970429C004A3ABC3677C6FDE06EB833 -790A44D0BB2455C5FC00C580BABD4AF387A417BD2D7204CB6E350D0037656E21 -81E6039D7FB4C355CE6A09A7F78FCDA2776C440526AC54D8914EF719FC211DBF -057EB1AA66BA8915DBCF98E288367B6F58567D31B5224D81046C233B250C8C7C -D4D569C41A66EE217B5412BC27F26A5A3389398C32A56DCD1A189D4DE50A9D02 -4BEF161B623C3608A0E11F32B8465269DA1E2C71BD638F8D11F0457CFFC479D3 -1AFFEDE80B57666E1DAE68A50F6CF5C06C969BCDB7CE2FAFAE08FA5F4214EB46 -7F764CC35AB80A29FF6802AE1B4B3107037C0B6D0718EC0D9A6AF76F38D6BDE5 -895CE345CA945FAD6222E40DA0BE2CEF83814BF3A65576A4E2A5B9C7CE4E9D0F -7F89E869AA44BF1A15BA420D1BEED71B81776AA09CA6C181294138BF934C4997 -61AA57E0E61377ACF8B802EAA64287CB2CA0E116219D8E594A4620A310B61DE6 -C9999AD5C8B34880357D08A06B7E64E68CD0F58CE1D6F2D513A144C8806EB397 -BEA5B4597A261732DD02C59A13895917653129D50056EC73EAAD8F1B3E304995 -D692B02721C570066B060B118512F9B9D09F9E902F8A690CE75045C373569FE1 -9F5A85282D9A30A010DA980044E64F3AAE61EEE5754C50C409C703955460708D -7F57D60146F7A53744A83D50A31D366154C31754B3D3882517F972BE3A5927CE -E1E7B75A2C33D1287F160B19D992959946ABDE9F5A6A434FEE6B46DC281992E6 -9652A6858DFEFE69191D456BCA62ADF1C43366B746E1A82CED283245A19FB291 -9E2793F17452AE2956F925F5D3887A0F0C08B4C50A99811D08ED0552CA11194B -DF3E5D552BA139CB93B244293FFE22B833536BB129269610277EBF4623BE23C8 -38EE659F613195F7C62CB914FA11718E85527EBFB0CB852ABCDDBC54EDE764A0 -3F41012035100097EC0CC4BEBD54BD06F9A3BB5C9132CABE02E255CB22524739 -416659984EDBF9E7CAD30EB1D13229EB122482F87852C2F3490D8BDF228D7E6F -93A0BE686AAE8E0A8B577F18D3565747C52F1880A6731198461EA1E471B41BC9 -4189432510882EECB417092DE18AA3441D8EE6601C6DF2F2550BA217D2B7F313 -FE5901211116053FA76C0E8831EF0BC518290011A8FDC6AFF1A7AAD8D5F8D099 -E2738D337B1036FDCFF0940A2D6A177BC16F58C376DF77E3A18DF704151BA955 -8D371AB77B00A1DDD514DA96F8A5667D461632AD04A6AFCE6DB1ECF002C14067 -3FF64B7DEF336C983EA344A775E0A5DC7FEA870FCA06E23FBBAEA8D1139F21FA -4E625E12BD6B01174E8EA73F1898D3EBE14D897222B07A2BF0E133024FFBA7EC -A21C802447C59D1A71B401BA628DA184184F50E1CD27B107DC705DC1811315CB -58B423CBB5A34FD14743DE9C0276D0DE8AEB9715DA111AB6116645A2B5769F47 -F1F6618C375D1EC39DF7401B7CED996443E9E7E9CBBEDD2E75140BD1B3C08C38 -2C66E8874646580C332C4F98CD1245686EB5C2E79D5BC215B3795A6FA8D3CAAD -EA8719843D0081AF71A50F6C2572FBED7EF26D4C052D46C8296CF0F0612AA8BE -102E0E620B6192CF434F338D99527CCCE7C8EFFF29041423632D64DE939FAA68 -4992B22D98F16A5D9239C8D7C490F47C413A86067FC7CE66015F58C938284CD3 -00736728CC912135ACD20F9603F4D408F2924AD1B26054A9A63C758E769BDBE9 -7FF65425BF8FDDD95F5A02C8DA912FD44FD20EFFD3028B2C07BC5D3124DED2A4 -46ED8F3FBAB326FA3DF0CF872CB5F14E14BAD50434D0E530C651E5FF723660C7 -3F1235439764C95C9A2884E34F26ECAB833B1D1E159AC119769AB9B4E5EA5C24 -7DF1CBB85592C24E9E6FE50620DC4C9467DDAB08CAC6F066AEDBF3BF04EDCFAC -BE0CF1EA585539E6459239B804469C909F45C381338DEBBF8EB842690574EF2C -1CEBCD9AE367A1C18462124A6C3F1C03E37B00F91822CCF7AE24DDBC7F4B5217 -05762DEB3C714038988BA01BA1F73061EBB1D34BADA2F4BF09B41B59C45E4BCB -62705505F87BDCC02101531A222B51EFF297389F57C2479BEDF28C5B7B5D7FCE -6A9554840C7EF2F6B250EF594EFA56D7183BCF8E9A33B2604564F4A376EF8329 -1B4CCE80649BCF3110944DF9A1C72FD0B65CD37A29A466A1D31C752FD08E122F -7B074184549DA6D9D876F0569D0C2B86A5A5C848D0F552BB5AF9A293B82B32A7 -3879B225C78680BA17D91E80E5A76ACABC6A7DC3D9110067F9BC696CE5EEA593 -5DFD15F5C18165343534EC7410EE8729AA31455924F61734C54D3EBF7D332539 -C3531920117BA15A287D3CB108201A59C487148A6C01C5F6A9F2D18B3C73289C -A33BD156C4E4CDEE8624360372A8748F872EA85474D152AE12CA034E3B262C7B -4F5D0E7BA3B7FA0EA12C3F4B0C7C9DEA6DAD3DD844A1ADDF2B45A8B5CD33FA90 -B342D0EA6D0A182353DA3A33E6DAB7D1D4F655904A21171503AE6AA82DB4C4F8 -46868797B1D19FD7BB8290608AADA6CDE17853E4A40005EFD6D2075A3EF22C10 -4BAF20BE7A99EEB407C02FE60158DFE05AD51A5CF212F1C37E2EC49F9560FFBE -E85507801BF6AABFC9F5AD40CD7CD3DA5243DAA91F14C5A3F32333FBE9CFD0B7 -A7BD3CDBB66EC4FC6507421A6F3A37D988ED10174CD5175CCFE22D7ED00C7527 -2EF9EAB7242C20A0BED0E64E38E7A70D55B9A57C0723016DD8A837CCF12FECB1 -AB0CD1AE3A11548436BA9E6E874E502E4A0F36A96B1B1F31AFE2879BD8A9817C -CA4E2B049A42A9F1E6A351C415BAB1678012E6FCB1D4E733D245E113AD1FA768 -DC4B56CDBA5F3D9115C8BBA3E90F515FC15F83464808A21950CCEA6ED2E2A165 -DBC41BF969DAF43DF004160ECC4CE3F67A69B38567B94A6C09E13987E1464319 -AAC24C977D72CF57C4F87BC9C3EDD83314751D7C2EEC3AF2C40C4DE11E8FE15C -F6B650F7337C7E33D8B740309BE4BB0E27A8C1BCA482692935F79CE6FB10DCFF -ED074B6F2967683845C39A0D6784985AD5D78D98C5020F6BE49032ABA5F6565B -966BF6507FCB7E7DE6BCDA1D2CE323E493AE9A9997BD46CF70C1E5DC301B7182 -73E63696DA75B2A2483DE3F53538635846473D8F5F7C0D86FE126B9F815C83E0 -0B269FA3C953C13CEA2D3A428DC41460B34D5A3EC9ABE2C8AF0B8A11BE4ABAC2 -4223C328D29771239E08526B50ED7FFB72DEA8F9A434E1E456CB2B34C3A1F531 -51EEF42A0D0FDC6D2A5FA9765F80CD73399E25D71E7D553F4E7A765B92FA611D -574CA4DCF5B9895E11F026F946B01C0B8D24DB1488986E9DCFFC590BD4D1D3E1 -FC0EACB7465363EED630B3B7817EF0B7B25AA32CD704F14E59F04B1C0E4D4451 -A2117A9A23C944697D0ABEF7C0683231162DDC48BEB97CFEB075E6ADE14269D4 -6B6723B5DF43E00168296298B0ADB3BC8A57547263ED05307A569C9542FB8732 -0B6616B43DF924DA975FD5956CF3F85833598EB7239C93ACB88F717666A6D229 -455263E9226F2B53D21FDF11DAE4AFF77C927359B8CE1F8D308F968C6035655B -E7A819FCBAD24BD6CE41278F4B6C75E472F3220F73F0A46082EF70EF7FB1F54B -02A88EA84B9CF6D684B0FE38758D3EB85A957F226BA676FBFD17CD24689D08FA -4B5028811DEAEF67F0A6EA17C7ACE31E36837DF32DD95281B6FC38C02F07F11E -0EC27FB641B7E1A9A2FA5FDAF24A54DA3F6EB573FD2A591EAB0A4A5F5E56AD93 -68FF099BC6D9C4E90B8E3BE34B052622B6C2D2B146B90303D20FE8708C596C04 -4BC6BED65D9F8A00E31A2876891BA9D9625D253E070874FFCCC8D6784D8BCD51 -AA9D57004C7836E0812714E29ADB2842CE605B8E99089E9FCF6F393DF515B9AB -2B0330936F02AB2B41250BE345405FEF07DEBB4CF0C08A00BFDD223115B0D84F -4E57F0554F87B79AC4DD27D560A52F39E5E9BE1DFFF97342E2EDE580239B5D97 -0E5C68E458B223EBCFCC5F3AAC6E501258FC4B84474BF0AD8B6406A28FE60E32 -20BB0CD632603D68F59756870FB41C93885FF7999A41569A851DDFBE1149BE98 -A9A2E79CA963E62AB1C7906956E12F5FCFB38B12F46237C44931431CAD13A4C5 -E4B564D2F1CEE05D3FE24A94997919F27B189ACCFA1CBC8E05E15D0079CBF1BE -BA2C314B8B12CCCED98176FA5C562835B1774ADE0B5E26E82F802E20B9BDCD53 -25BBC7D9300233EB5BE091BF42C3233875E06FA28E404E3F1AFBCAB621552C28 -43C7713D9B90D05840A9846411FE3687973E55E5A265572977F6F1BE69857E7B -1BB9467A1CBFDA0DCE935B9248784BCDB0E740830D7CBD32E22486A6886FC5CF -98DC3D80484F60E59AED44ED28AE3BD61B761E53B62D59E98D09E9E73D951F8E -80C656677F12660D8AEC57205AF1495B070C45A0694C47495171264985937838 -78C05525FA1115737059AFD385342DD30BD3C753ABE029B71A74E5FD0A2B45A7 -02E0E4218BC9AF4462F926588E28905E30847EAA04CECD11BFC21DC9862BEC1C -75B2891303A6F290A5C43D06A72DD5D71314E6943C55951A7407E4FFC56A4EBC -8E80769A51F6D020FC1BA944580986430AFC68FD0E5D8E63C2F90E57A050B2FF -387E08EFC3430A7D9FF419A9C144D8E626E4661608525ABD1BC971E98353768B -7A91889E852D1B808BFC9FCE07F7E505A43DD02B21B42C07D896C99A1BFE2B22 -DC5C3B6F80D82EE4A66D421DFD912D222C4FFF7CE3A5A0C6A725F25DB75F88A4 -E00E271AB9E8FE69C7012495BD1DFEB452842ABE7FC161B6ADC546882BE28189 -5EC6A8FD669D67E0514F2D6F2F2D0AD50DDA16982A7A83EF2BF785835CCEEECD -6FF5A5BBE859F4AF8DBD170EC4017A039FB4BE8EFE6D09CFCBBF37BF3E7ADE7F -416DD40EED0CFCC96A9453269D92A530970ECF8A11D69F31123FA1F71C8BD41C -3A3B61A5A16C8646764585D2A6D922A02AEEA72576FA71819FD8F12FD4D59A65 -FC50F7331EFA99CBA19BE1EE65F0F0BEAAED8C3BF9C45D9002E066EDFD837CB1 -5EA78E6110CADA7D19AA441094D37A082504ED39C40E46B06F427CFCCACBD9ED -FB375A70C331EBF778B2176D7911353670B34F12E7BD805B4297FA47FF73057E -B2491D481341C045E902807444523460C25E89C4B2B9F2337112B21E3A70DDAF -7F7D7067777880FCAF0FF0CC042CE500AFB94BE2F5E83EC1E5F85B387455BD55 -9ABC735189DE24D26909E48F60A7F89380ACD3A16EA0811D5DCB6DD109F488CD -380A9E7322AA979E32E48A6D9EC49B83FF3E1C152FD1DD1A11958C7530E237A6 -FD33C428620D206AC91AF7470D433161ADEA3B038CBD26BCA69F748A7C2DC8E1 -DA0D4BA2AF6FFFB2102796A1A0E2828B71D43217F33BC1D06CE5D7954853922F -8DEE6C532D88BCAD38540093246DA783BDEBD0648513DA6CF9816CE3DC1E9861 -C87F692023A748943BAA5220E04479A56B7C5111CFC322A0AF133387EC50B9B7 -4D74BF8F6C497935F4F39FD93259B9492706AC524AAC11B257EC36C06D37FA9B -FB6FD8FB82298ACC54AA345B454E667614F4CD6B43FF664F93CA507782A7AE51 -607124F7004F233A534E5677867B29A94A78EE2897A6D64338D7960415106FC1 -97F3B94564393F96C9E82920198913CAFDD83DAF4AB7036BAA645BB8DC2B4898 -A2B4393403C3CE3C925D246DD8971937F35009D36D04A13802EA81B268660CB8 -6F5468A1DC1FA08298CA499B750707E121B1B40FA9281E46C6C12CDCFA23F93A -0CC67C81E2EABF5EE58FAB3CC807E449AAE706D13FB17E582406588033EEFFAD -5B19299C6BA7954414B60557821CA100528CF893EA8ADA83E5462924CDDAE047 -39D0A947C3AA1040AF4C11FA13CED02BD6319F647EDB882E6E52A55E6D38A2A1 -49913970C75570006662AF9F2D8A92C56E138196DBD3F04A5A224DD0368DBB04 -E0307C5524E4D517D56A49863161DF8E8D60C599E002C6B4C26C9E1EBFDFDAB5 -8BFFEA70C221049E862656873684C0D212DD113CA2356308F0BF24878D534908 -1122491EA6638FA3912D0D396E7FD7AF53170ADFDAC3C9C5898D4F9243BE0751 -06B1631927C4E8EA2F092977FB5FD2BC6AB9EE791793A41E4AB142FF487D25D7 -257BF329D6422696B3AA5130788DA1EBF4A96FC04644CC0F08EC4BF8B277DB8A -6A83E30D0CA5844EA6D39192F2401C26791E1438012248B51729485EE2398737 -BED715EA8052EDD273613EFE8DCD8CE6DED097666EDF893299BCC03E16248700 -6015D0042D0DE34D14644730B4C4B24FDFF6C300E8F37D5DEF781B41C82DEE9B -1B0181B64817203AEA242BCBC543D42F3B1EED234C2B96E99334ECA28AB4B5FA -3008DDC93FE1EFB9A3C780AC89294E6D07320376128DA2E59BB5779A10562F6C -16B1FE6B0DD05B48F0FA0B933687DF1DE992B9E65581F4E20C2C4B04B4658A00 -4B6532CA4846E088DA32EEC1BC4AB81C130DBF0CB47813BC40B5FEDDEE2730FB -6861E3F1F1DA9EFF60052F7E7B35CBA8EDBBAE0334DA0E2A0D4EA928A2D96354 -6394F31559E29DB0B7ACCFF23C9C4A130F8B93BB45318DA94160379FA92920FA -AB70CE10C36D3732AFD97DC65B08274C42564AEF5CA53301A44FE8525EB16359 -C93BAAAA5754288399F3EDE223C0C1B5F1325AA4F0202BB97F65F59957D396A0 -BE2B83D14B99F5382B8294E2C2217B8332983D910CE669E2645D753E403970DB -F4FAB8D7B23F095F5CC0E7BFBB9AC3789AB3D9F9D28D8563CC15CA3110D0ACE1 -54D7F94F39B32BDBF1E5F7463416E287C950FB7F4722224A6792C841D4198869 -076325A5C1178FDA69B967423D8EF30B6193CB00C30F5D96B7C4FE8D6771CB06 -7DCB824B2022EAA5E4C181AF1EC5DB82263571F0FD2B5BC55C8C5B850EE7FA1D -1FD9440D61F8CDC85D5E657C877B5423680668018A57998152CF0A17146BB18E -F9B355252AA69389BD731BBF272FA451CE014B507C3B3FD3E04EA3AD67CC6CD8 -DB254A575AE74B98B7EC2797BBD3CA3537501E709D00DD7488AAA9A4CC2CAD6B -B6B6874294E77913EABBC7CAE4DB767B21B850D121 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT8 -%!PS-AdobeFont-1.0: CMTT8 003.002 -%%Title: CMTT8 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT8. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT8 known{/CMTT8 findfont dup/UniqueID known{dup -/UniqueID get 5000830 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT8 def -/FontBBox {-5 -232 545 699 }readonly def -/UniqueID 5000830 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT8.) readonly def -/FullName (CMTT8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 36 /dollar put -dup 45 /hyphen put -dup 47 /slash put -dup 69 /E put -dup 72 /H put -dup 77 /M put -dup 79 /O put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 116 /t put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D06E82116C79486D8 -C5C32DADDFCB2CBD26FE85FFCB176AA09FBE325434B8B9D358B7C180AEC54F8D -24A1AB4D5EE5375B963A221F060453E01768F0A398352CB2C76E6E70BA017570 -BE1C3D3A86E803B10B506FD9DB49DF5CC7BE17133234D7BE9230BE8B7481B357 -08595FAE04D04B14C633C52E303B06EDEEF7CDDF20F34D7F08D991DFE2C4261F -298E0A818EBFF29D3B29D1D0CE2F071B49B0622F65F936F6C1D4C6AA2860E56C -9140A4FA23BA31888345142DBFA79825662511437347767D4A13A976FCF67EA6 -7882D7B391B37FC1E22787E484D19BB252C4D73AA3D73EFA5C6341CF6F127033 -2B91079B5FF8A164666CCC65D0002EF7E374098745C84E3037324B4248C5385C -FCF0539F8C04CBC52404BDC6ABD1474617D06377A69F4851838F462E82A86BC6 -F8DB2E740B5270AECB0B922D4493A75422349138B539B6067C040F3007F04191 -CB545ACC01B4F28AF811266260FEEC04057287BB5C26C077946DDF23322FD99F -2B3DFFB62AB8BF12000AA81ADAA6A064F9C34D5F36CB7F66A5EEB7B494FA1AAE -32B380163AEE08F5BD270FAAD8DAF0CC5B6979B8D4FB6AD723E011DCFE119092 -D1025BB62280B745BB0FB140E82325F1FDFC029100F922BF206E5527B7D8F60C -3F3E3AE2184CB954391D10A1618FA0940F12159167494E29A46125CB911B19C4 -97B4DC76FF53B7F79E380D7375FAB6C30A467E02E48BA73403D3900FBB440C9E -951C081C8D5E04DC0C8E1BC7D552075CC360B7D1007367C655069324713715BF -F8182AEB6F401A1F029FB3962BB3A0B2775979FDFFD834D5559EE20CF54D789B -E46484073B059ED1980C4CB2AB70DC74D6673DA37D8D9214E6FDC7C29FA55AE0 -A01A0D23A71396BA0A0F332D36B7AA70C37462134C3A8CFBDFC91360CDDCEDD1 -9C2E12C44D52953E509CD6DF4FAA624CAF95D585BC4A036D73CCD5220B9D12A4 -FB00F763274628831334E1E727FEE9079E42B7F676EBD85E5F21FA095C1BDD30 -5F557EE701707CAD347208550DF890CF5924BC50D349A546ADD81969BB7B6E75 -FE0CCA1D5EF9F69BBD6D58247C321C91DA2EF7558D272A4646327AFCA6D3D93B -F6990BA00B058A1C5C34638E09A21350BF64E29AF803F2A1A4E4D5FE16E7B05D -FF63FCF02B6F39C7484424A71D27F93D308C1C112A64C85A041DA3CA11A19FBC -6D656A4ED57030284B10206538F39266CAFFDF5AAF91F50D9A6BA8FF51608A56 -13A89CCDCFB03D10E3F4F8A4BCBE617A937B5AF882F2B7E1EF7F8ADB5F1C3FAF -46BBEBEDB26000567125BACF48771094CC9AAD358E053C433223EC39ECB0BC90 -95B885CDFDAC14CF4FF78A8EF358BE6DE152A62D3F2897CEF469E030F4477687 -2B1355D84DC33C713ADD2C62E9C6E04786F6FA9343C144A726004BB7BA12AC18 -7BF664B09CB859A443C2CC51E96B0AD3F60B1A9F649B315955E6308171F95321 -94833FA1195B6363F5CB80CE85C7D8D5851D473C428D00451B66FAE160D207C7 -6BA5E1A19CAB4CB283DE71082DB5E9DA38DF26061B7B8753BC3A26666F053DAC -761A9FE0AED478D9B5EFCE77458A9AD93741F8080159429CCB04EC0B52232A36 -1127C9B9BE80084428DA88EFF6F702A40E825B5D91D1F64842E88A08932F9B1F -AA347F45EE7E093729A48FD29EEB58E419C6D0FFC13E3AD8101B820F3380A4F3 -4B44854426302753008E54FB23D8136CBE2BC7474753A387E4FFA47E3DB9F94D -B0287E8253DF368AFD908E5C4D73B0F1ED5729E1364DBB38CAF033517EE593A1 -04F3E0B2B554D8CE8A89DF73B96CF93DC899C5687B8AD59BD40B534D0906D720 -E39A6B0B6E1E2041751C6199AF63AEF60C5C175F1F84A78466557177B583398C -1A7B838DD8E67B4784374D2051B800629BE02B9C840EC6CAC22E5235A2CFE4D8 -DE0085985741DEA306E98D627163768433D79C03E31729367DCFEBCF37DF2CD2 -847215C1A654B4EF9C7FF50E4BE8838CB944BF4BE0D36FD32ACB1575811DA29E -571993E8E45FAEEDADCB497FFBB84678B2E3C4AD3BC7B758AC7F6156B92EA3AA -790CEB4603FA4C151EAD20813FFB71E3CAFBF339EA948AFAFB3637FEAD381799 -F73DF2A45E49215E870E047CA409DA46AA38682656AA8B3E9A6DD928EFEA7F99 -83B60E3065BCC04CDB941C0A317FAF418152EEF5C06663F89C6BDA2A3D97609D -7F07E0974A46413A136BB51AC8E935279D88DC5935C3DEAB4E2E324086D2CD07 -E96BB4CC990364BF6FC72F4F9001B7B31139F7D1F29A545CA18E352ACFCDD797 -D81A4ABF220AF57349B5D78FDB338D5BFDFEDCE28832C31C8B2D46860FF169A9 -6A1318ED69AD19C1A38FA4FE7C1FCDDD561EAD27B834F1F9A4296669B1AC6FBC -D6B319F7E67C8DB0617307300BE080225400C9BB1D968F0D39666ACB246F4D71 -CE127F962298628C5E987EA9CB44B09617FDB542F1A2678A797C51A18BAF9973 -610C610767F17D7265C7CD2065363E77D9ABF5C2CA88907CBE9B86E9468C45B8 -1A9ED80F02C434763BA33665BE8B12682B9AE96FA4BE35CFB14E6BB329180900 -848FB45E6C7B39EE7593DE7813DFF9747869D839579421585EAD074FF431B742 -3170DCD0D5DAB6684D96AAFB98D0DD9D5272C475FA1F593A0CB6910A4072C474 -65F4815A03E86F6E6FB41D9E106DF431BA84951698495F0AE5721D95F3A7A1B4 -97124903A3E97BC27CC6178959CBD214C686DA29BC4307F6E1E7E1BBBC0FB5BC -552D5F0792250A035B367300BF9346BD15EBC1811AE4D0D17CBA989EF7EA17B6 -E211853CA1BF1C54B28FEDCC327A30B7D2EBBC99897BD46A3F3C526D2DCE5A30 -46A3E68D37344569781839F1A5CFB96A8D90A35F5471280C9F3B3B55C23026AD -681FB8AF96E850F64C82BA46F3CCE17A3E747D0C39786BD50208F80AEA26F6B9 -618A40A213A1B2FE497CD9C9A55B4D96C203B84244618D891515AC7E92D73E36 -D8081D6450836D2129DA7C19CB9CFC75A56AC492DC18BC171A3EA4736733E416 -6E66993CFD194EB75D4AA2E4517EABDDFAD35E934C655845611681D451E9D788 -9D5BD13602BE1668A1E39B7CC4551D5A5E6014EB21B4082AE1B0D79DDC07A3D3 -C4746E30FB61C3968DED6852BEA3AE38D08E8F10976BB174C508E3E6F2CB5DBB -34B6A51D212EDE7364374292B61AC064BF43F0AF63D3211245CBF25FC6272A1D -707BAD29412AEA36217D4BD0458CA1D2D8C722F9BBED96C6210AA3C2C6203DD1 -509F5EB7107CACA76036CF52AC1EC6F6CC45BCB928E991A076645B7959BD32BF -FC8361EDEC8CEDFA461C70D8E9D31EC5418A82219679BDDF8D0F59D6E5F5667E -4CF7EE7E8FABCD622F9B0C79E463F523A970B2C4D2DAE7F7696A042FE46A0E8E -32847DA015D276E169F999CA3E0AB75C5F5978DA8D2E318AB3EE431404C88D22 -AB8AD890044AB19D3E984787C4C8AAFFEBFF9C8730760DA54C793FC0E17BB65C -D869E829CD0DA97E34E7AB9099B17445556C79CD9E40D7F723E6AF69636C06EB -195DCD1C2E67C1898852EB82FDB1FFB1BD5F88CD65754BFDAE478A95F1653D58 -035DB41ABA4FFBFDBC210B68AA720DBAF87716B84A41EA716AFD4FFEA6D89501 -991913C95BD95DEE04A29D8E9C9B4CC75244D3C699DD20FFAAABB9 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR8 -%!PS-AdobeFont-1.0: CMR8 003.002 -%%Title: CMR8 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR8. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR8 known{/CMR8 findfont dup/UniqueID known{dup -/UniqueID get 5000791 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR8 def -/FontBBox {-36 -250 1070 750 }readonly def -/UniqueID 5000791 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR8.) readonly def -/FullName (CMR8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 52 /four put -dup 59 /semicolon put -dup 69 /E put -dup 79 /O put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 88 /X put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9928A7C95D3A6E9B -8E92F84CA0AA44461D2F4FA0F8B81C6F5B7BE98C9712BE166610465CF689DFAF -27C875C029C0116DE61C21DA0092D029E7DBEDFDDEE3D67E6936623AB53FA2AF -18BEDDD7AC19A19CADB6ED6CA7A26E6044BE414FFF59C0B98D5819A6B881F9AB -7AD0D03BDD5CD309C67811D5CF0B93F6FDC9AE64F74ED4E81F2E18D880BD842A -DAFD0BDF06300201C6946087FC0B999447BC370200BFB8CA420B668B32EBC242 -6DB1546A7164CF55B332FE9D239B65F532B69EF9F4F93828A44C8F5C526126F8 -B7A369114CA68D4F98638121F4E17F351723D9F1A902FCF087F94AFD23876517 -2D15B482AF2D68C3F31FFA864E031596E597882578AC7FB0DAE2A713B065B374 -3E2E72519ED6D50CBCA40A7275A7109A4F3ED8A4566AD8832890D3D1F4899850 -9B757442B7EA355175CD5D6D8B4152ED2D7EEB4CE30F174FF672140354046A45 -7098EC45B9DF3DF5CF7B417E201DA88308CEF4CED8E8903AF24FB8DD0187352D -25738519ECBC70304F8F620CC45D2586619205DA3955696FAFFE2082402B3502 -CB682F410DE5FFE80A4DA3D3BCF02E35BD577D0DE55E7B8A33B7A2FD5136B5DD -A0BCB61F8E7F4363C21F890CF287304DDB8FCE7FE207C0D160B81E7EA662BED2 -DFF8C444E19C91E72254257CD87240A70F1A964FA54ED9ECF27E27A57DACC3DE -EABB92C085030870C6CF5C40B6E47F5C0AEB30E84A73ECDABB2D754EF6EA28BB -16EBD6636BC288E62F4A38BFB55F5F4DD20FDD77D767F6CB52F9513E8EB75413 -07F1877B2C01278675177499E4E8EB09F2657821613F5C7643FC064293EC6E9E -B519FFAEEA36B19C9D1302CF91FCBF87FCB57C5F995CB6712BB3D8681EB6F05B -B2A4195A3C73CB4ABCCFB958EAC533BD89560D2790CDE1444C0F2E4EF27A529C -F01052964E56F6D76A190E5FF45934BB711A3406284AF130D4DC0D8112BB3752 -762CA0200CA262359D4F54C0CCFA9A50DE18C7DB14419E2990ADDC4A54B94978 -D9174CA39434022FA77FB30179EF805E2189C35919F5EBE215EE2A00B4407826 -CE56329C5586D8B414770BA5D45513C3AF1931D632FCE69B4CA504944E03362C -74A1177C6398A61A12DAA0F156543E2A8E9969C4308B7ACC21A5ECAC8F172541 -1B1316A88C0C163E574FFD3CD22FF08488662FCF2F9344BC25D02146F36CA6F9 -E2D0130C654B7485EEA9A110A33AA0C769121F81821E9A2BD062FAC158359D44 -3F9D9947200EF1EDDD5860F10438B162A69683957300C75AF7546C70C97AB2EE -37EAAF0089E2623F787F252569B06C665FDB45EC9681C0774ACFBA76B98C4E89 -7EB12AA5F8798FFC110B49C25E3A483ABE83B0BCC6DF0578403ADC369E013762 -C9D08FC94D949BAE636ACA9F36F4E3F02296775A062077B011A705B6F1784D36 -A926622CB3847533D7ACB24A4EBABB14593B5D8E1DAE2BFEF8A51835C8D4E76D -7543C126A4271C59A5881A5AF89331694F84489CA66725995DC3070F306EA447 -CF30F63CD476A46D528EC1FFBFB8EACFA2BEEDCF54C92CE2BD26DEA5827186BD -3A4D1709415CEE7D51D671357B4A5D11E835F63521B9824EE5282E58F05A8ACC -FD249461181A38C2F47BAC4E79BE368D64F886AA493C61CBCB2ED401C8AFBA61 -59CA6F6216D941A92AC52ACB3D7ECC28D6A58EF4CC70BA6DE23E80937AB38E89 -6F05FDD15B954C0826636267EDAF9F2BB466BF79D2E10EED9B04297E6BC93069 -79581ADD1A9D9FAE9306F46AC95B98C60A2E53D60CF1AA4069BE301E17E25070 -F98DD67BD8642B1D07571A32766072E48BF27E1576FFEED300D7313A358A823B -49C8F135961B7E259095C9BB67F996CE0B90E95344F203922F47E11753F70D38 -2ECB615403490310CEE6C03AFA97DA2F47ED47125D110FA69725BA0018F6A40B -29A307FDB3E52322A77A0102E6F57654CF1E96A134D13860D83AFA0A41112D3F -2247A09ACF7D06713BE443FA27C7E7220E875965D53030FE7D2D62EFD2F1DB87 -5FB091FEAF599BA8C5167525899E578AB341BFE2BC4E53A047093168AE189237 -EA55F055514EFA939DAE9E859CB5FBCF37D99484F44FE5AA5FA386B28BB642F5 -5DBAF059A50FE96C7C6D834531D64F1F2E99AB2E96EE74D149178B1C0618495E -293973D9A03E1790654B67C0882376ABEC17D74785B3737D81644F28B3BC6FFF -F92FE29126995A07E0BC5EF3A4B93789A103C428943E045B8D1A5063AE71E806 -568D48072E53DEA85253B01DF0BB7367A6BE4DD7BE514AD74E3F77C825ABA405 -64DAFA25EAFF8F63344B5F6B523629776CEB090B546469F6A6008DE43072DD3C -DEF51F62731037D1FBD0C038A1E9B669849EB3BEBA281624F13D20B61917A109 -A0A7871A73F7BAA18077360B38A4625C5DB9AB9E43BDEEB856FD0E2D3AA2E075 -267B978B9EB47F2369302E87DBD5D5B422830BEC32411FE75D584C58650EFB1D -136FEB92B94BF8939FD63AFB7349C7511E5E46AA7324F8B1FFCA9C2A9E9720C0 -A720918E8E860F137567D386AC29870FD990BD69465B3A3D2A0ECF2753578AD7 -80DC87EBB319EB5AFE0B6F6FF8616EA30C51425FE3ECBC5F8D0B0BEFDEF32FA7 -D168B4E85C804B7326A0942CFDE732B1171C643452B7099B31649CA2C38B62FB -46EBDF7180004C549B53F88021D029452C2B37D8C565BCDB0B11541039A13C0A -E45D4B68C7907B8BF08C6F41F564B62BB554235D50330E78DD02795516D969C9 -66119D718798120442CB7EB9877FF84EC69DAE25F8559DCE3BD8042959F695F8 -2F99845B1B5680DDCF181D806CC4903E077D1FF5E60918EB34C0B1E028422B71 -CA63EFBF3F4F3CD813CE831EB54265A555BDD35AD7D723F9CFBDAB29C54F8AFF -2D35C6A3299E0A2DB470C7B141B1E3E10DABB7873AE302926BA8743278FAA8C0 -DC6174501D6A289CF980A3F55F2DD5C3A514E7E7F13133C35D2697D64C25130C -DB78FC997968D6B3BC929E8A31B6D212C5128E4412632BC52B3A1049F7F2F61B -C74AE9A6AD19B9E2E240617E2882F7D29ED3A4279439107AF9AEBEE47CE85DE5 -CE9595A96A118ACF1EB1F5929930321AF7732E351E18C6AD378508E37B4C327B -0E06AAE21278AFA9255AFE5C022034DA2968D260879B4B38E7EE2E11A593DC3F -CE71ABA050C004473324CAB6F3C50E85DEDA3E9A27388D8FD3A8F6E42A79670E -F7549CFAD4CCB337A6E0BAA4846ABCA059F1E1933CF11DC0FFBFF550CC4A1B47 -CF7BCE0875FA747AA854534960F757884505A5AEE0330179A9547A4AE3E68479 -7A457DE83326DC30B67F27CFD4AB697601CEE352F72F0966B3CEE3EA24683BEF -6D23AD51B8432C3F0DD0D0F80791E1091F38988B7A54E466A9AC7810DE8B7893 -6B0AA6356597891D56190A7660BC7F657BC559E0525D41EC228078F2FBF89C6C -72D666DAD838CBF0861FBF0A1D4ECC069AA49DFBAE5C56B781A1D5D79DAAC256 -13E3F9B928A2394FC71691E4355642764459714412D6F8EF803FC5F7353822DE -6CCBB8FBE5AA1F2C7F4D384039D85E7728527DF9FE0239E2CF8BCB7411C000B7 -1FE660AE6A2A19229E5E8776CC83EFF3C27403935756463EB4721C51FE0B1197 -86C2F17842A0FB639F28083DFD4F1E86D7D3BEFA922514ABF489C5CCE93D6F72 -D2EAAE14F6CBA2BE4BBE7D7EA8EA19DB3A87350D4A52064137C3D15A5B05B03B -70B1DA7328D10713B83974C390C3270AF5A9A47C0BFBFABB9F31063B0CCFBB10 -0F236C74446688198EFF039110F6FF42FA9F82D463AD3958B5FD205BDF85DE20 -FE3F0C7AEEF350AEE6DBC1DE2E2DA4F4599956F59D6F121F7086DC120416E180 -52DBBC4E56C09746938698860F30007091E1CC0351B43990E47208ED495310F5 -7BA9C6AB3CA10A3F1B318FD47C1CE3B9FF1304321F9623E32D315AA9CE64B35B -F841E6C62B5B2488A311C94937879E5E0E170FA77AF0AC75C5E6E9F3E8F825AA -09C1702682E14FDFA72D27901C5BDE009B1E52E8C4511C6F6336251BD45261F7 -401CA3DAE7C4B0CAEB91B9954BF4A97C48ECE7FAD401351D59DDAE9DA94E2335 -74A2B880E4749D3D7026CB5299F16C204B6E00A20A6619C34922C7D3FB50F127 -3157CFC08DCC5164C8023CD1B6C3556C73CB8E4ADA845339CA9BABA1457ECEE6 -ECB9849DF1F0FEBC89E5F97C92978A500196520839CEBA6C0FD2E3D27BB4B4F0 -93CB2BB565F4627C6DB62DD0E084E627D69B5DEF42EF094381B62C0D67EFD197 -301B132420F51A41561E6106870147E0D597078435BE3819ACF0DE28AD779847 -F3D2CF667DA06955D53E0204CEA2935E9E984E76963D3079EC092031E2A10E61 -1227E5EE6770DD4D745A52655369EBA06A19BD7D95BBA271E488241199D1008E -36EA99F8DFD2A9F87B06B070158B466AA4C6EA3BA77DB0F853F0BF9A304EA291 -34069714368E0B94DFCBA3BE5EDB6C8204DFA7EAF5C3406F60A7056407D1BF6C -CB85C1F432F97D821F5518BBA79AF8453A568FB2C2D025A70CEC75F46C545011 -ACE3A99B2582793BA1DC655230AE2EFD24DE20A01D4A441AFFAB7771F223FA6B -9169849E727E494247F67D6E1EA9DCA06A082FE2094BD548AD7F08B565145634 -E7ED832FEC1378306DDC796303392ADB0CBA130B63B38ED57B7828B47732853A -893E8836FE19CCF27002AE92C2B2CACFDF8A42F1B8066E033B965D2E9157FDF8 -E1264B40813C1A4CE424274AA3528A4F09B3B53DD4D23789A68B3D17BC1398AE -0ADA2C2168427A49846DE0216908C2FFFEF4F13C1ECA12AD341E238EE46E6DC2 -B71B54C52659632911F901660261E493AE2483D64E119D9924489779B62BC9FB -A052E822FD8D83178E09ADC825DF0DA07FCE7AD68EEB29FAA275A13691B4A5A5 -B0BC0499CD6307610CD6209583C1152C559A2760823F8DC0B9B990BFFE7B7E9F -3969B968AFEAADB9FC0F1410EBBAA0DB979CF153F0B8C978405F8E6F2B6406D7 -AAFBF4A655A15DD6D1E9A7EAE10EF89264659B09283F50B734236885FC09FBE5 -98D780012FA77FCB19F15BDC522CC7312546C0730EF5225DEA8C22A3BC6554EF -4FE73B9AEB5C2F7DBD474221760E5F539A064AC450591BCF3499E3968F2CBD6B -F15BA2B37080A4129B66D4C2188524F025414F14DB3F96049A8B0E5EB2BBE7A1 -AD64A988FE875FE4FE5186BB4F5DDA16983CB052D474B7D72F3E8965663EB50E -015C72407C3437142D3D7DBC055FA627139488DBC5A0F98D805C2143D99F491A -167E07AF60EC9F17C36289368D740B632CB919A0E74C412B76CE7A5906D5200F -9E79CEB9C65ADA3A0F23E8947E834AE7A329A9F0AA7A6BF545B1D7B4666C6522 -CFF268634EA06DB3A82D91A4C0A9B227E79961212881A54A6762C335DE7E0831 -130C45D94394D21C049B9D189ED955438C2151514F17BFC67E431DD9A8349202 -2F616AEC1C7B19F63D5000EB4771370924BD4B9053FE78B5E4A244B9A149D66D -A8BF3B398396D2233E92E4A5FDC70FAADEADAFD255193D688842DBA865CF6154 -C9348D590F3FEB135D4B7BD4D76A52CB140888247CAFAB25ED51F4D187041CA0 -ABD956F83A5661CEC171B52AF92F9ADE27973B560C802E1E0FF51C4003D1289A -CDD09F8EDA8AFDFF666D35418CEADF3B0BE298F0D1E5C8E024D6A2017A7E71F3 -3A9FEC9930F1118101E040339F9D41379170928DDF5B5875212B271DC843F612 -E0C21C67263186E3D6929160464D4D5C8928E14D0845762C36FFBDE548188E20 -3B6BAFE5EECA0385142F01216FB8A90C43A472C1D4447FE5C7C78CC088FC72E7 -3FAFA062C338BDE8A430FDF1951B107D8D73FF9376FACDE5900BA362C66F8C1D -947F9545C5C13A53E4479B1C1A50472C05E8F8C266C6D4F4EB08E97B3B1BA972 -26973B844545089C5732322BCC9A5A8FC972FA0D7DB8BD85D2F515ADE65DA479 -0224F7EA2276CFED0B75B2C23AE7377F86F1F6F205D6FE19377D87E782143697 -984E731F83CA888199CEB425643C259D4FB8B58DD69A96085198306494BB497E -FE7C9954EF35B679BBE3847A9C73507874F71FC97665E2A58BA41407A1745247 -44A79B588D969D11CE4B863CDA655DAA53CEA5C3C263B345E782006CE9831D49 -603D2D95DE9E370D617F5928BA416C362BB2B4DEF16A5D44BD24B34257765F3B -6223B3F9B54DAED69A90C7050AB97B06693D253C6894CBD7B497DA449F1D9B7C -D91B421891EC0724F59C82B9CB288DC42F2D2D7A7F22EE3D910E15953D7766AE -276DABED3820390BAF2700C4653E1C77FE63DB71A66D93ED293E25B8412A1EFF -809554BF04ED0DE83F7F190883ED793803CAD2C34A66524D3A580ACDF3C13B22 -08F18905E7A4A16DA9ED2A112462FB9FFE481EC2069E484E8BBFC19D594153B7 -3DED4C11762223B7586483B06BC164D824D1A6FCAE80A35DE0DB8B33396771DF -76DC5C05578EF1BE00A70BAF3D951A01C87328DB2B0DAD6E1B4C21F37D1BC0C5 -A929BDE5EADF20DA60C4DE2E3C151005814F24824D33B95F700E09A0207EB602 -3EF60DEB1622B91DB99A855A8F1DA96358F05CFCEDBDDDFC8446AE3391BEEC41 -966E594E28D052DD5ADA49DFF65E79540EBE5329DFD86C23CC800F95221B9C18 -CBBF941D2FA47EF1EF59A89DB5DD188E75EE94AD2A79E2221107E5992C00D531 -2E00B544895A9204656867E3DE9D4CDB64B920B5CCA9A73E6514B36CABAE01BF -94C15603B86780190595560F792E5EF01650074EA4A9BBC6ED284B9AC2020641 -DCBCEE0ED27FE58171DFE104EEE4202759E594159DF45113C00236127A46FB35 -9EC705F21C0E456C1F0F924594C09AC64D4377C5FEEF764BA4A09ABA8D09DEB1 -FC13B0CD202B2F04CF5D73DEAB65C36C2FA7C0DC236BEEF6D23BFFC9C493DC8E -1831F19EEF81EEDD976E43BAC6B5CED13F901DE59835FC75490EA528A72CEB77 -24C38B258EC38B9E6B97F85CA8C10D8809BBE55A6FAA12456FCAC786942E123C -06D1E55F7ED04400088BEC968BC5081DC7A1B1B65166E7821679F76694F235FC -6854C8776AF855B83445D9FF919B1D80E98DE0741D06D6C5EEDB3E3EA6392530 -F1BA817737D8162F7B3A36AC2A03190CDEC654383E31934C3E0A012B639532C6 -26FEBE9B412F1C92D1943B7C18CEF510729D501349644C97F087F2F840074AE6 -D8CD0FB2E620FFC908BFCD938B675A0A4A687F7FBE8F3DD06A62D7B6DE7DF3E2 -49D367D60B10061EA86CD512F5A1BE8950D83C62695E130128E0037B62552D17 -064319BBB9B1FAB9D79705E5D68AAE9B36EA14BF1A59A863BDB8DAD9AB5D7B8A -E30E2B499F952D65877C8E38EDD7DB29F9579D09E629AC188DB6A6403AB4BA3A -D358B3770D727A2B77D84B6C9EC17E29D88E3421F9B7D2D822EB78BB8BB50692 -8C46DD6F9BBEF2E848A2B5669B200019802AD19661537A84D3514AEC5AA47445 -2C791E01DCEDF18D9506367241255FFADEEA6183F51A9F42448A7DE413C08359 -52DAD2A60FD606AFE14702BD3B0EC448720FE63438D020DEDFCDE3582FC31DF1 -17B25FC152789D2F17FD60B8209D292D2152DCF8D28B5ADC04F6659BBB746CDF -145163361823CA343763AA951C640B5D4A99B7787105A1609EDD6A596EFC3F6F -2AED1652A132D66117071CADB8603969B3A2F97270CF2AA8EC2AB890662FDBD5 -00EDD53F16FD0CE199660202373E2EA28D29245A4AFD3A63695F6178406A7234 -AB0C0FB1B19CB408E047BF014BBEAF4C9C19445C7819748F082C19E6E355EFDA -BF1C2DC348AC0AE6777F679E2F62A0A3EB19B7F08114AE0E56A3D310D6958AA2 -348E1D304BA8C4389E525553A8791632EAE32B6E8D2193932B44D230FA17EDC5 -7D407CB83D2501B0D2C9E86FD23E21F26DBAE2550DD4ACA051EA0A0030107676 -3643176BAFB7DF0A157151F7625E63296E325E2C3E74BCC92CA51ED191C856B6 -18914ECA6E39CA863FE26BADDDC128FC2D93DEA074991B1CA4C58F5C2F130A11 -8C2635ACD45A97284B8A8C849D61C34C2493201FDE2D2E1EA7349E324829A88C -D39230C99A36EB3FD38729F6E87567247A57B89115DB90A7C793A65BC09DF9CF -7AC51625202CDE53409BCECAE9060CC7F94604002D6AEBC8E4F8995AA5159E80 -FF68EDD097E9C7A0A15DCD491B2BA4CE696D64CA9316BA11FF882E061CA00527 -A9AE9EFF421C06A05C51319B0BB9EDC297782117CD123EF850D070796E1CD971 -3DB1C79252DA025440137D76B38F03908F665998048275AFFE792AEB358FA7C9 -97F8D566BB268A6DC6D2A3AE7C5DD973C82A1D6893821C185FF334810834D557 -46262BC7B8AAFA5E443719FCD40C4F8487A9920B0EF0C116A96A4D3051E7F2C2 -FB867C01A727976FE08894B78165783FA6ACF68FD72D1FA23CEB77EBBD42035E -A75885AC26DF4C016D5F477B5AF9A7368D6D413FD83DCAE72B47A5F3E38B7332 -5C287361732F62B402670992B46BDE004EBAB61CA6C1F710437959CA327264E0 -19B694A8FDF7CF308B1BD99F65F1ABFE0DB563C998D14A8B3BFB8FDB36D5C669 -0884CAA7AF68201FAA62C59338824F44A4F776532D93E0C1D8C3EFCC9103C3D2 -96E77521FE15B6A355A170BD284704B886CA257577753F351CD22D33E5124A32 -4A7C2EDCAA556B945A937DACBD7CB5E1D0006DB7CF4666394DC1FDAB26F00786 -A431AA06923F883C6AADBA44249EBD151FC495D00BA12A092840A740F32BCA7F -9DA1532F7D78D20B6E2F54EE758EE592EA85B46FD7B76BC912F403357EE201FF -3DE88CF23A60C87DEDBF7A4613799561268B474551FDD5B701E67D7664012557 -4E0DB36E3D8F3AC87135FD81D34A87986C3004ACDCB337FFADE5FE7BB711B098 -D7FE261BC332BE993658AA66880B72FE98A07F023586A96CA090BB954BA3546B -5AB4B13C36AE5B311FC5322289585B57BE42166149B7A63CA2801DBF0E90B524 -07B03DB1D677857BCB6DF4F71B9F903AC4CFFB76B248E1D79BBAA2902587FC54 -22C0140358A7522766F56A7F6324488BBEE069623004025EDDB15D6ED6762966 -040F6D31337118AA3C43DD8FCA3BD1A58B8D5B3D36B5C61B12F3B05B62168721 -6CC42B6A590C227C30570E092BD553734BD4E10E27B7A3E0CB02D5C23CA7659B -E3330CEC14AFAE4C5E3ECD9515AB7CD1E06B7AA6A6531C6FE583C7E671CB3E68 -CB6057D3BAE3D9B68F0BE3251BC9894A0150195A355BA323EBD14794C3EC6653 -CB51FB13213902D7F1B84FAB1EE3D42CD3B30F4355099B5A1F92D5E47E5C4C2E -38D0F8C8404CCC6D13705021F04159C65225F3323EEDC10D2DCE9F0EE37464F5 -C29F395B046906B9B5A1B902018DC35C49F459A7FE70E1D4EE122ADDA5B9ABA7 -F5EB2E0E0AD4DB14A1B7113927CA09F2F1D2958F0DCDA388AD35330F29662744 -9059B660399BDAB3BDAF7E4B00B539C470751FB9268267827F56A40096E524CD -9E1018E453784CA82AB4B08E4F64DF90D5EA5F3F84CF5EA209767F2CEFE99622 -E88B0B550BE54BE5FEE68ECFF71EED21EEFCEEB08C3E062942C5DF0372E4E796 -FA3DE37246CCA18DA4B9ECAB36B30CFD8BC9E8CD4737ED1EF988F9221374D8BC -AB28B28334D50B4C59D5D4A4CACDA92EC66A5B381A511E87F36CCFB0657442F1 -E7FA2F8BC0455D36C3DAE3426A243F15E0376BACE2980DF6AB3AF25DFC03E36D -A82C0DE500F21173DF399AB2F9AAD5A9E587B37E0BAD35873775010E5542A389 -EA9340F54881DCE356A9A6772E839972D46420182D98EF366A94184E9A168F0C -26B01E21F27230E151DEE4710EC35FBA674A435A27B6DFB21E4821A02F3BA11E -2BFCD46312BAB85188FF4F4A6CEC5D8F106EF59575506325CDB199E6EB7FEECF -C957B5771F193BA46422C49A14E505C143B811BA45CC1B90DB7B3EB53D3FA717 -700CE3E1FC2DFCD925675379569A1D7CE17AD63A8E2C9633A377D1E273FB6C5C -E4841EBF35E9897083E328C7F0DB96D54D6F3651897735A0FA1110802B169E2F -A5744C6C1B45C82C6851F667D11FB189B0F0528A739F2A71133EC8B444B7E711 -CDE5821E0C8656564ECB12DE756BE5B2B3EC054DA54DD12F92CE8ECEAA4ED7C2 -75F114932AC85B4A82FDFDCF6713413F461353DC798B271CB1805A81342DD63F -DA131C9D1E3315C625267E6F4CC7900DFD1289294FCC0CDAEE952CFE6DBA5E5B -F6B6DD431905C1369F49DF54435E0D803253462A670B1767F0EFCB1D4B15AF44 -FF0701A40A5A26727F94FA20ED2095D8757BC72492B381E4D3186AD502C188E5 -5094F1A18BA52B0C0A5D7F1949E9D7F5F8E63C93FBEB2BA054D7647A4FA834E5 -4149A36E71FC815A42A6DF5A998A4A2DB247F7DE247F5E398B777F11832782E8 -02387FA1AC4A904668AEBA0CB42AC9AD89A8AC777066A33A8A9858FF9AC5EC35 -CF119695D031A5C3C727CC8D70A06394EA9FFFBE07C0992903F303CEB2224D8F -C1B52F19F43D69DD0D7BB448B56699B532298A8C1C1D307DF2C7DFAFC7CF0845 -341EA8364F3D0FB352D5F5952F8FA6EA73D1EA278AA25FB6D0AB4A1DA260B03E -A0D9986CDDD715B08911CE1F2D90C64FC0793B173CD80241F9CF9DAC6B484334 -827E9234A0FD8AEAAC3C76F9ECD4B8C0472E7C7E22BF2D0C1C9134E9F0736B7C -66BAE6B32512E1D23B3B8FBCA3722679C78AF0FD890B85C04C9A8462BC1729E3 -4671C1A80F54B3ADD68DADAEE17C849C102B70458E0D4D61DE1FC178CA3DBA97 -4DFF6C65518FAE1CCDFBC35E9A76E9BC90A44324359CF9CDED052E5F6DA1E1C2 -A067F1CE3CCFD36E1C7C52C492B3B8EFBD1C7CE8AB315D7CF0A4B9305F737A91 -6BFCD0DF41B492BF2885441AAB735B8C7ED39E4118F1AE1806BE73E7DAD86051 -8D9606DAB119360D4BA5C307CEF9A3AEC0ADC03B85A4FA10F723106F5BF3E3F3 -95A90A9FE33BB17855A07156EA6EB8F44EE2E9B84327102BE39687C5911F01B3 -7894D4D4771543497A49022A4351A9D6B98B7B3FD5F270A68C8DF53FFA9759C0 -D090252E0567CF4ECB2A447D8A57298B0D0B06D4345EE6A50826CB3F1A51F0AE -ABD4642B448C358E2DDDB3EF95EABDC622C9913F0BC128F791824226596CC73E -37780011AAF2527D251A824FAD26B18DB548D5EB84B271E2EB96D2142D5A2CC5 -7BAF36342A20EA18BF5A5D75A545630F995F1F32718A2194EAB3EFF7E77D70E6 -80452467AEA36D370ED69C6C3B8299E085BDF38639734328493A1E8FFE424223 -3ADDD99E17CB94BB788153B10921FC7477D3AC140F68851988B91AA6889DAEB0 -BEB2EA5548873F12C10AA44306CA85D373D51CDF8B5AB244AE1E512FACD3DAB2 -39FCBDCE3CC8BA1F43BFBF5715190F14F76E54E6C6CA999E4B2012C4334FF565 -6D24E0DA26323CF96D36F0261CC2B39E627D31866E0E8A51C4B8B084C58A96A0 -5844A9F28A452D9CE40FE5C3DC4FB19ACE79A2F7490E33A59B5F7E38D392BDE1 -77FB621AD89DE7AA67F1DE5B3D2A75EF3E55E1539E2C71729C8C277C78BF4992 -95A3DEB8B0FD941D4F1EE8EDC3CACB2E74ADEE26454CCFD866D44FCD6D373246 -804B195427B6B4E8C1963315829CC4B7B75AD58022BDC55FBEC89595614093AE -1E044DFDECAA906F83CF87C567E77007061B4021E4372B1595D7D2AA9C0305D7 -17B43110D987B1B77F6ED66085D89C978799926D64CF184FB3FB66E3A9AE66B4 -1B55B65DA1046627030E7FCBD2F106991D866CAD497073A2B4394E55B9445B33 -16F91AA745231413E764A3388231D9A418B4549EB573821FB2C66B4051CC3A96 -D8CC6F0DE20C0A732B877EA2DED6A76F28088FE22315F6996B792A4362D353F1 -4E26BE1A59927C44F40B6FAB0920F833644D1C90E4C0E227A7E125ED247B90DA -F0A439EB3CD53F49E458CE0A4DE720ABAB15E8DE0743FD08A08AB67A94D90639 -765EF07C2E6A645DAA9AAD3FCB2CF51D281E4AF6337297B2AD2E47D3EF4E1501 -BCFD65703C546C949A93E63813B8FDABA9F21C42B588CF95DCCE8DA62EA5BD6D -8875D901C9EFEBFE00DDACC8D2BCF0065418EB619A0BD823A04D762F4A5CC004 -CD4A85855EA187158896DAEE40A3EEFE1F2A496A97C63EC52BDB7671809578CC -A6F162F2AFF1B980A746DEAD80B3E89F25DCEB0E3C20236EC2FFBC6E6D49FE33 -E7DCCEBE819FD7CA16EC75A1376D815948C1CC021BAE328F54D62003FE97F060 -47FC1EADA686DF87BCB53ACD1C6CD9C22771B6906A871192BC12DD6AC23913F9 -C7E0C10808736F1500BEC48191553BEC81A77F8A035BCC7FD1C8829702FE720D -F0DC7ECE0EF11D2263AB769E75074E58F1D241C95CF887F120C0987E6AA703DF -1DB8126CF132C1A76EDE5A35CBFFD483A753521BB874D6F08F9BEBD70542B5AD -C456DC1683BF1752483241CFD533F8339F2C9C402D64E614E48F7D27CCAC04A3 -1826653E500FD39B28FA22B8D97714FC6DF15C5715F358515E609F28F9276F93 -C4C9EF722780CB57F17B428675AA9CF55557A95B55AA7F9C783CD7997236B15D -4EE7E2FE6104E6DBE07D09902108D7DEE7A738B848A0CF270CE900B7658D68C9 -DC91E6F9BA956D44756D3168365F3247C289C99CAF82F19523FC65BD589F04B6 -93CBADFADFC8BCE85D2A7EE8CFAFCB3E107575D0D1C9081D1D79469B538998F0 -800C4FD416132EE7F6CD62F7141FC36C6593F0A3D526C31F7BAB3E8230B80304 -FB74387CB74327E9A38D3D7BA0B7EF3675E81BD5965A10428E06FE35671A91CA -D00C4973C46333E6AAC55832B3D5E2897CEA72738E5D4E38994E17E870A736A8 -8FEA7B2966A4FE3299179213DD3099F6D277FECB10F2AA3C5B275E527E6BF455 -293EC2D19B652FC13AD92ADB1A144B6457B085F21B63D215F6C72AA1B6D6F960 -15CE3667790FE2601CE0B31FF54B453AF82955C77D305FBE913FD08F0E973906 -D82D6FB2C4FC362092ACEF2399014DF2579A375C01ECBB41A14CBD617C334372 -A057A50A42DB951DA03A578534B40D0D0F67CA6362798A713959A1F5DAAFF645 -561848E557FE312123027694F5AD4D5716869B913F4411A5CE2D7107D0072279 -51DC4E0B2BA4194BE440C4F7FD07D8A80DBDB46BDD38CA1663197AEE6171EAB9 -52FB11AFBC2DA620A35845BE3ADCA18E06D623B6EE7CF770FAD579903191E951 -9EBEB78A47EEEBDAC0D01AE68401F89A92A33198D9AC91984E51D1945E0D7256 -619A0E5FD9359D36443CA14E326EC51D99516B2F835349A8CA5EE5F9D9634284 -9A2B226CE2AD57B945B86ED81813084AFA818F4DC547647EA60146F7A3F548A0 -3B0A22019AC46853C240E374DB0F79DE4A3039BD9E822B0746C76D9DAA37BB6E -B2659C6E82132E097A867FE109EA2306A67A49F359873DFDFBE84C1D4ECDC066 -584B60B442D25DBE1272908480DD5D056405E1285FD0B638077F93C14DE31F24 -F82173AAD507FBA6CAC274CD3732DE20BFD71179DE7888E64529336EAD0742D6 -D39EBB4231CB3EC41529F5CB51EB5508F533DF6B6B2A5969D4F380C98932319E -34FA15687F78572CE53AF7C87E370EEC5FB4367F0B4DC6FD96FAA69C1C5C354D -E56088E4D60E523F9F677600B52B78C3F4CBF6E7C10BB8E23D1AFF57AF249068 -6FA744DFEE25538233A0241C79BAC11A2D2A7AF0D30A4EF76759B608A1EAB0BF -F3498D14D0A03302CDCB1A5E901CB1A4B25FE8512D982E9BA815140863F898AC -51908BCBA2BB6FF49F1DA48E28E046C615B231FD5BD2442F6A7BFB97B7BAF060 -0AC2A0D7B59EA9A067B0FE96005513BF1BCF6ACA51832435DC6167391923C0FF -730BF17878663DD75BEECA6C197CA506B3B5D1ED535788D1BA6AEDE713B8442A -126F06CC772762D411E251E7CDC2E0E6FED4D817504C85C7EFE7274DAA663C76 -A6F9CB7276EE2EA9B7D8F01DC2299D45837AAB25EB3BEBD1138D0BF1E05C7722 -CB4E5F45B2C43B7ABD619E19416E0A91600B7FB078F27F8F4B8867300CDA64E9 -6F61C99C32FD6703B20DF82E6CC478A0271871106A8C03BD976187277770D418 -275C382B340F82BDEB75882D81AC197327A5B24D29D2AF644DF9DA89D95CA28C -0A4D09EA1C6704E12F033E0DB3AFD5E2CBFCC472FEBC6BFFC7E87656093349FF -AE1B24D89C50C3C5F55D54CD1DB23B5EAAA8FA87AB50BE495C07072685604BD1 -292BBA51C1524722EC59E7AC4EECF63B2ECE0A6837B1720B38125C8BA424DBC1 -39BC12125E46B3625B529DEA989027E71BF3890BA3AAD751CADF9229E5551425 -03541E9250E011C1270F5D53F4FEAF1937FA1C7D5A6E46F8AA36864B8777A633 -D190C41EDADD6B1C7F365E7B1106B4E6FEF13C940927D5E3D77781D6D7CA1853 -C80794F3044184841D601137494F6C609E3D51BFC28B4AE5F5914B51336C6026 -637676A01C6468F756D65FE9D1542C53F356CF0955D31EC1C871694196613223 -28BB4F6D62982D813E4595CB8E0940582BA9372F0D60A66143E9ACE9B9221C84 -3CB75E843E2898355DE33B028D1D3E83037A4E1E44988AE40948415190395EEF -87B6ACB433618A02ED350C2032FB6EFCF8A7FDA373062DC18EFFA35AB897620A -EB90A37A43EE06DE4F9F48D5B6BFCCC2C0975ACC623AA591E6031F9B9FD2F7AD -14F20089DE5050393917ED13BD0B6CD53DB9C6586F64A6EEC11FFA6B569193B5 -613317FA55E5E2FF4B7D5366357B6D6768C0DEA68268B2B37D17D0D9A6112BF0 -6E7C680065D23F593529A23398AED64D8FE63B0033FD89AC15125A63EA3471CF -3BFDCABDA06BC70B98EF141B8B05B9402191919AC97E3A474233C6E8152A94C3 -9173BA15DB0F3494CF3ED90FB7AF8D469802786D5254654C9A9E7ED152E076CB -C9897861AC7689184D04D4ECBEE43705FA98FC9D3F8D68E4FF18C12B9731E243 -C1700FDC6286D375B6F069E6D936EA1AB1639F803C79952CF5B39B97CC6ECD52 -4BFFCFCBB205E17E838FA8467E332D3C40CD605252F34DCFF956887472B293E0 -C665A022AB5F9A3D74162C8529437C995D57531747DCB18AE3480B6C8B4F9A5E -73CF815567E990D679DEED7F565C0ECB2D3DE8EEF0BC19778918F29D497136F2 -AB9444523A550D6488CAFE85154EEC0895FAEA91F32E195FAB5AB3CE3C0C630E -37A660756C0E287B9E4E636832BC3430F3D5998AEF862B54B2C6C6C00E3C0197 -D863F4E5987035F164F5ACB4A7D6C45C305D4E5E971901EB7CE36B49F3C701DC -43C0BE135848DB557CA513A06B5BA43E29770270330F75DC28AE7571BBB548CA -B2185CCC9F90FC945DE255975B36B1AAC142A138415F511FBC897403C6159ADE -4D669517678D19FD225AB3823FB020736F29FD30C7EAB33EF65BAD50CBECEE39 -FE70862534E87E0CDC8B95BE9F75EF724B32ECC869ACAF90B75699B60D90E320 -D9643E070921C41D061929300BCD6F13F2D648D81ADE3F0F73EC56F6A2C2EB26 -2A6A1A90FFD5E3DBC3E198CA65841533DE02E769964F3168FCD1850CF5205542 -55E88C39A168C0FC88D640CF8C44A09F54FB3FF695A39200A88FD646C7D14377 -9B957EEC68989CB9E4ACD9CA63AFBB943849870F2F601601F37ABC7782E8320A -5784E9E3161E38DA3B1EF3947688304C5C661ABA92B352F9C90C2F6AC39287C5 -57B3B8B06911CB800F40F3440331BD1E5A47DDA7ED8AC34CBB175311B92EA3A6 -A30B38A94351C236230DF2369ACF7EE9C1C1791274FBC35B3CA40EA249F92FD8 -4E1FB94F2B2731F0C73B2600CEC1403462289B3FE25639D9F986484C73A233CD -592BFC72C52801168528EC619CC550575FA25A549BF5932B729273633C50D677 -97986668F3AD4A7F332C241E77EE9D7109B0434629BA0EA77F303EEFF632FCF7 -F6DB0CE0AB85D6CAE07E0744349A960231CD27F3B166EC48199D3976A3F77262 -0672ABE2976B110167DD78737D5B2958ACFB1BA0D64FE649FC2A05036B7A471B -A96E661CD26D4A86C46B263EEB636B50FB21D6712DFB039846CC5716E1BDA9EE -E3D823361A477253E781603BA74284530B2DC454FDA90024AD6A1DBB492D4752 -4A42E96073E5F8CAADCF9E03C2B7F221757FA43669F251635BB9896B30BF5129 -05313E1F98305E6A1DD4E08F7ED3E5DFD83A159206CFD2297D9F8F527F97671C -9D7CE412D5859E1225EF896B845DBC70C6DE79F4502D863BA5AE9E05F6CA6992 -5CB1B5BE3229E2C4F90B1C1BE069692E8D13A68DB31E09B7C753465F2420358A -897F5D4B519EB8E0B1986A39A59F8A04FADE16CFFCFB37FC590640A4F674750D -B7209C9F3DDD62067EB9EB72BD8F6DAD70F11493BD7DFA5E49D1214E32FC49AB -906C68E76440CCC9FB4D20707CC7897BCE007EF0CA959B944B684F5538C04174 -60A031194ABDD91154D5446D0DDA83B31A86B50D9EE806BCC8CF8A362C2BD926 -BC3397BD029F6B56DC9969E389C18988518D2F40D19170037D086FE6DFCB5C3A -2A455B099E4204B45BDA862131B2D767DC0738A1068EA3CD727D33AF056A7C8C -AAFCBC89DA9AC006FB1E35CA103979DEC54F587405440A5D3002E2448CBEACE6 -C464F246A53D14D74A3871A89D0166736AEE894685B758500AC9FBEECC6415A4 -882B9C63DDF04B2631CFA1EC0649E559E711EA07BF1BE1ADD82A07F6655AD808 -F32966482F595A64ABABB8BC6F2F8BE766C954642274E65AAF4DC49400DC7113 -A5DFDFEDC7FE5ABE78FDBE6730A7339111C954199A4A60B51AE16B414B0883D2 -DC43BDB6843747352E2D8026B411FF736F8921EFCBEFB37230C68C25DF7B225C -7EFD3E4124859898D445D3B62A87F36B96345336655BCFD2EC4DC81AAF07DE10 -A653695C63A9EC0E3D166E633FBBF2E299C8F939D867AB5D4CECB172948B1456 -6F5FA58A6F4E15FF7711465DE7761F909F34A9A2069F7A5685A2B9965AF8D85D -B419B02B56B50E4CC5B15D3D08EB3411C45F620F06BEDF097BCD9B4E61E7505E -1EC8565750C0280663B7ABEE61D2CAF0BE6E20CA603B983A9B573FECCD0AF58C -15FBDDCA5211541C0D5C3B7E94698DE3B12F5D1999BB2565ABBA03F0B7D44A77 -894974F3914DE580A66E612A5B1E69035757F3ACFE358510A3AFD0A066646CC0 -317B88892B5F0B776C9BA5F864269115C5EB6C25B9CDD811753743CEE30E8AC9 -288C4B5190F1618B1DFE5835447F799BD7076B4D39935FA3E10A2029865F5724 -E26C9019FDEABCD97F2A911D59BA21618883B517781EA8DF63457A7FBE0F9321 -F2BB8646D359A5DAD798D5CFB5061EFF4B9740FCBE7F1485F135EC49ED0FBCB7 -A72B5B661784A868E7F1B6D533B11193EDB0A00F1DB2B2241F31B8105340C683 -2A3D8B624CD4D37732303AAAC4739172DE4782DAFD71DDA834EED62B1DB3A159 -F55D00AAF0D4B7FEE79D10AFF1BE3969A0541CF5DACFF99DF963E33650EA6304 -1D189643F8D8CDAB853953969AFBC16639ABB00FCD40ACC6426858DEE194AD32 -0BA160C1296C25A5683C40BCF2CCC733780A7FAFA632B02AA6D7654D741EB9DA -D075A7A7FE90FC38CF08BA6BF138E297A34A2E02310A793271AE99EAC6A8F2A5 -31EE3F6ACFCD2297BB2D19370840BD8D576AB96C30EB41FB84F0C4E87A209966 -988E5B825CC5FD02CFD6B1C747D7A632E6A04096EFFC89690A08CA569FF80027 -EA0D595518631E3D18EF6735AE8DE94714A27BDB66748EDEA879946084304479 -F1683EA776AE954A62183CF6AA8376A36C64583E297681D3F986B0B64EB6BE50 -037C854053C8F54204F907A403BF9207BAB85351640CA0D6E1862570A3A8DA19 -8414DEFF22E70C9CB28FD6F568DEA39BB1F9A8C264A4013385BAC2EDB5400B4C -53D2A5072ADCFD20920702BCAA9203631A30FB8EED635F81EB4E6BB924CFC46B -5E5171F68D6F04DB5FA3C8894AA9C3B730924D501A4AE9AE4BE0790E7362DD49 -2BDB07C72A052BBB -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR6 -%!PS-AdobeFont-1.0: CMR6 003.002 -%%Title: CMR6 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR6. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR6 known{/CMR6 findfont dup/UniqueID known{dup -/UniqueID get 5000789 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR6 def -/FontBBox {-20 -250 1193 750 }readonly def -/UniqueID 5000789 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR6.) readonly def -/FullName (CMR6) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DAE339BA29C1C6F656 -1DEF13780383DAE38A868377CC7D396B2A05F341AEE0F8BD0A0191F51AD11A4D -2E927B848A1EF2BA15CFBE57A51E3AF07598275195C9613041F71C1AF39E61F9 -EFD5F6512FBDA76E29DE6B508F62F5CF9F73F5288DF1C7B0B82C92D3B6358BAD -EC3CA20BDE55DAA7CC58004AA86B6CBF8C410D8287E88BF20588A39309C2B703 -CED322F030AA6069869064486CA651DA054FF3F5E56534CA358B0829A6B954D8 -9103436E6B06DAD1658BD4A95AB41343B01F5866FC87C4EDFC71F1477C98F8E1 -1DCF27EF743FF90BF918AB8C4E5AC35841E2F745480E5EDE1C1DEAFAD8D0018D -2C1F1CFCAD9F6609859DEDFD1648A6CD23D8ABB80747F94899F17C8F3E6CA55A -E176F19CDFDAA0D7C920B3A72051A4745560AC81978C92459EEE5AFE85AB247A -32981139CBE352B248F4BE5F73503A084A3E91F05328EE521D9669E44E202584 -5407E7846F9FEE3D54EA18FFB144BF2D6803BF65AE402034B3CDBB40DD24217A -3CE0E95E2717CACD603A958187C42B3558AA38D6B6390EEEDD396F96E6041FCF -6F8888221AFA87EAD79F46E0E32CAED91E6C8500879AB6E580C581E8C8CE9B68 -2BB5EFE2604E8DCB2432D39D75EE556969F1B2FBDF6A4BC72D106AA7CF22C268 -464027898B311613E06E1584707F262F71D9F49D2149306A88E02BC60BBD6BDB -EF41D90F19197BA9AEF32B5E63D5B9FF41B5602F9F786E76621DA54D574981AB -87A72081EA05D6C6BA940EFEBD0904EA4E77BBCE17E20B42E1722617E0F6EF32 -F1ACDE9D758594E9C81049CCC10605A27C2A06872FBA9F159CB155609B496ADA -4886F478E44029B5E620DE8319E257697E93E1CDFD27D560E2E4D34507020E2C -D9FF06BFA14E056D81DF701FAC3ACE4BE6C098AE116E079F0044391EC1661F6E -7A93B9320BD7F91E8FD2E8EB3F5CAE997D5CDD35107A1D35302260D1499B8B65 -39625B7925F97D917B66BAFEEA992873F07220714F192839948CEA080BDB9A03 -77B9DD032273DDB5629CB28B5D8797EDEFDBC601823E038384C90C79012A7D96 -8F27784DA15BACE21501C26E3AFA5DCCE81B52B0ABAF71A35D33103EA86F2415 -A39A830D559C5C6CA7423945BD3DFA942B20A06D7A8D8671F9831DBB52907AB4 -4E54776D29C6085CD9970B6DD21DD3EA8EB09C49CBEC6CDCEEB0BBB1B8827109 -3BDE64DDA024D67F098D6C1998506DDFF7907ABAADA1C39C759C850E0C6F8E89 -A392D1C9329ACFFA92D361218D75E115F70A47C53B73B356D703E9C499AAD098 -AA9C8119EE9E9708A9EA3049E976FA19AD04210D5F6092C7903FD155113F3A3F -269B746560F70970AC9F8D09956E0E84DACE4112C4E7C7F6B3F0B63D26EFF95E -2B2E9699D16BC8AFC4AD9113AA3A974C9E82E877288CF71E9169D2DCC61AAAA6 -C536E5604EF0716F6487292BBB677518504B52C63822BED3BD5FD14EB41EE6A8 -AD4B6CF90D39F98E12A765B645CBA3E8552FB9A986390212CE119E7C3DD675AC -17BD006144BEC534DA2A860188619F17589008409C5A309CB83FBA70F6446B6E -2B56991B6A03B1DE10C621591CEE45BECA27C54BC8B4F1754A9E8F660812710E -117850E1BB6FD89BB13F8CE391C43DA89EA67E9C3E7A4697790EA26B0E4E2E80 -DCA508873A7AFFC11B8C02EF86C2316E8D8B6BCEA37F81A3A87546705F070C3B -9D4D28C366CEBC1EE485B8E2357DBE46E86C87B9939DADA60888AA9F1B92FECC -CC1C198DDB594BB70A8FE690ECAC21A414BAC89BF019F34D2A130F485EAE35B7 -2A10C67EA3A48A4D9734759CC93AD85C6A570500AE5AC9973FC76EFA06BF5DDC -26E20E28D16B50957EE01AF2653F8D860817967AA5A9BF9BF7ABCDA710E9F34F -4F0EBCC32B3C9C2971F6225D2DAA6A451366B83F32B2ACB83E746D365B2DE38D -C1AB7447FE7B37F9630E410E5D8F0ECE74DF46C538947B3A167AD9F3E4A7EB3D -60F5425AE75AC3A27D39311DA35696C3DC7282AF1532E7AECE63D13DDA0296A2 -01487185FDF1875AEF55A36C17D6A8DD329279D229259463A2F05CB7A874374B -E2320E1F6CFECB9C1CE62FF468C29751ACD9754AF1EABE8E7696C2888914416E -235B6766F20FFBEFF285277B639A51EA2F2E30D207BC891B00F0436008F980E0 -9EEE7FB375BB069B9E0BA11DA951A99D8E60B4F920A0495C247FA7DE904765AB -DB5C3B2D634757E43EDD6FAA4DB3C67F82D6853E1170F0B2D8CE496DD4E72B0D -28277BEF172F1402959F64527F9B640619F04416DDB9D05FB2ACD019CB9C119E -E544D24EA6DAC5C69785394EA50E6EC9AAA9E14B904EAF29A733C6D7942B63F4 -85729686742F26DEF78DF0DA1CA7CEFBB684F4CAD99021A3B3D1FE03B9C5A4B1 -BD04CAC89BB91B11952A2B17A61789BEE0C54B46C03FE9A1AE73D17CF94BA30A -237C29D414C3BCE8E3E2DDF83C0BD59DCB66C4D2C3DE73DA8378F3C6C8035D28 -7464399857E57651A53E9C4AA68DFCA91B2376CF98AC5290FDB9BDAD9EF1604E -9B0A70EDDA1E564B6D2456E7BC722454ACA8C4950FDD44B6EB9AD01169A9F845 -B06A0DDB7897C847A5B1F42258AECF3807AE936C8F52C3A7A0A85D68160AE442 -FE81543DA6702D76AB6E8701F80DFC1D87C961E350D0E52AB2A298B9E5908600 -7E14D2A87309043CBF13F69AEAAB1BC239DEA88EB5176624F6046664B1D2691F -FBB2071D3706F97DCCA355A6DCC4D09FD35DC078FBAAF672FFDECEC61050A120 -10B5A96629041303FD01ACCC7686165DED6AA712FF8E5E85DE33C4E7D877C49C -6C469A90410BAF60BE65ECD91CDC2EE7AC0CA8BA7B53865F26092BFCAA0BCA77 -B80DC51DAD09C93C8DD8E43502B4B68F3D5918C3492196292447732BA90F5AB4 -9F5E1D634ADE1CCAAD028DE5EBA9535F6FC5908DBD2D643E0A7E059C8C386FDC -E72659C0033F535C0D7F6B98D0335552D0BF3C6E302B672A5EAADFCEF81912E3 -8F54E6FB7EC2B325125159713D0AC50DEE3673B9B148643727E94C80971A2E73 -5E1E13237BE69C84FC039DCE02ECE2668AFD047F21A61BB94A9F498C9FE5CDEA -B274B40728B6F6CA9B6C15BAAF92F465B0D7311B46545CBA90D874839443CCB9 -3110F052EB247B24B45A3D2FA6FBC7EB2A4BEC2A5892914B3C5EA3F4F9B9DCBF -6F932D95700E045B49E4B1F2C9D2A42CF39CA2F5A2654E6E8E6E92473D28AACD -5E35C6705EA728F704F5996D286BED433F976AB7E018621A577AED7C0AC0A84E -A032FE1869F603E6F20386E3A190A30A21EA886249ECF8CDDE2C33D73BA8647A -3DCA7A8DD9E8EC8D9A415D126BA38B6771C489DFC419303EE9C1B83FBFB3A0B8 -97D64F30E4BCBEC24DF603FF3BF541E00D5804B6B6543D3D2B661CC551D497A9 -9DFFF535AF424B2F3150BB39AAE8CDB306AAD37767BA10BADB031DC2FAB16955 -EE78342CCC0E8B5976BF98F215461A8C6F63EBE6E2F1A1104662DDE53388CB51 -8B44F3534853B8095F3B746A2459C2EF800FB1EF7F235EBAA9731E3AB3BE4369 -1D3636E3ADD5BDF0C34FA80E90D8A1DDE770943FD196E0A7C5F1FAF6970B34C6 -4673AACA6B2B5C12B9608521AE736C1F4B97209B063D991300ED5AF3D7F27E76 -68E0B858FD8BFF86581E2B9548C691E3E5D9EC4D39C9715CDE86C7D22223CCEB -8A38C776A30AF14912390A7546DBECECD7A687D4F08646E57A12C80DCA022B7A -33399761A50B8E0ABEFA1163EDEC3DFB5DA3248792EEEDD894872D4E6814B4C3 -548BAFCDE0CABBCDB97EC6D1BA47F2E77CC1389BF19D73661749AC33F46A618E -A665A85776545BF9662F2179D7BFD604FA8EF4700591AF3AEC647E27B24B76F3 -133F9198DC15C1AED830E737909E43EB91C334C44BA35810007A3888E33F5DA5 -B3B2C35481C648AFE630CC3E08F77744E401B2934E407D1EC17ECE737606B076 -F8DE8EF3344F57495EF49D11580D6FB28AE0B1422521B320843B13467501CAE2 -3DB93D7BB779F73B6AA30050DA74BDBC3F8DBB30F32EAFD07734A151BB2BAED5 -C9B1F790059339B64BB4146470F30928C9A49AE88906BD6FDB7431A4B50809CE -0F67ABA01CDCC2320B0B097187B9299E3D80CDD7BB5DD5BFA7B28D924C5633C5 -45A23CCEE097C41C3759C1FA8DBA0DD95034BCA89BD23FAC18C70093F40FF2F8 -0FAC5DD4835F2DFD40540E9A9E9FD951A8AF2CB766597DE00147B163BACFB7E6 -EFDA4DED594F1C746D8B46A1145E0E4058F5917B3F21E9BEBDE745EE72CDCA64 -FB31EF7A2E55265F32559480E2B6726D3DE26FFC97EB4E3160F117E890C4B2E5 -8DF310E6A728ABA85540F571C024F8DD58E1D7827FE97CED5EB31547EBC36415 -02B8C0E10B7E37D816F01D56A364B8552CBFAAA95BC4BDDCFDE91CE0EF005B4B -7AB56FFB47A093AEDF0DE1EA48FC8103CA3CA1470864D2693E360006D05668A8 -AA422CCCED20DCEEBEA5CE0DA1EFB00FB93E922B18124FA11A88D0F6E0F719DA -57603DD5DA42E1C56C2FD9E5415AA199D4F334C151C1157E75C107FBBFCEB706 -5F4EA47A29B54ED8CAEB8DDA2F53D2A703B95487619780A52DA1270011648A28 -AA64338E04AA5B92C1EDF3D8DA34FA6D227A0325EA6F22E9B38B6338C657BB21 -CD4C582DC04010330F62923F817E4EDC6E5C0E6500F2A975A8A95BAA30C4A134 -BB31B5AC45A2E7F6E9CDFC810D41344C4F606049445F8E93D74271C1E29DF7CB -5459593BA28AECF64D903D3E4D77CF5C04B06DE44A41EE4D9FC769854503AC85 -69E4A5106E84016DE3D59865D4AB30BD6C9E45C45DCB5408421CC50CD6179C85 -34E55CC70FBD8FEFE9F1D5160664981716E3BC7F24B6F54E0323D9BC4B692971 -24419EE62D8B0BA726E2B4294A9A76F328B8101DA29E78BD5C4AC383350FE196 -4D42DB1653637D19530124858950C22F1E9CF5BC07D46B7A58CDE19CC88DCD2E -7FE4EEFD8AA6047E919823C8CAB2EF5274F45E861E6508CC11A8AA90AED2403A -B2BF1315C2157B3B50A3685205D93E40906EEE9DE5985405974BCE0B84BB37DB -080A45C5237B269B93C0A7CF294A18B45464A41F604C494CBEF829A381155CFD -71CEEA54CC39EEDB6DF58A9896246B09F95DC6BC40BA6916AAB5ED3D24F66154 -3662F8978FC63DA9280FF7ADB09EA5BA79D3B66E0C88BEC1EDD78DA93839073A -A4D7B0E627000C4ABA76C47CCFEE92E319315333A5584A951E34C55412049C4A -A5569FE65A006F77B416E0530AB6A8E7AD6C72340AD4CE25937158FABB2153EA -281E1D840206F5DA38E00815E9081F81DAB9FAA8F4DAB305867AC84735DB4F52 -A36129929BD2084A8EA37BB6889695204BF7290B68D5E722540BF8A276F8BB6D -451D582EE59D2FF03F6B97DDE05FA00C3D375D2D0AAC8FE298F85CC067B15481 -48D70B6A0354C705715B891915FE8EA45244677B9FCE81E72D66177E309F3F83 -F744B9EA9E55C3B30DEC6E5E03B3988FD526A82A5E8E1DC79127FC62B2FA7949 -B3AD3148868DE22BD4B5708E32CEAAE6ADEED1F463EAB9692411E18F8D6BF391 -126B2700B4CF3B59D02E3F8795130C96285A63FCD1E0F647ACB1D35E9C58BD01 -1DD06BABA00CA4343BEBEDBE677E053E9732B33A7495DF51782A07DA07F5646C -770C957AD915CC70BA8E08BE7A1F4E6BA5BB9C603E38F6FB0A2578471C4D02F4 -283069856D926B9076EC73AA39CEB0A061AFF1575C7093FDAC9F89C3DC06EA45 -06F3C2A3BC9FF21128B10CB758DF0F099B459A5264A8C24C098110D2BA1A8532 -8FAE146A91BA7D033F591AB1A94B8A6FE0FFB610F698D216D58B4EF6C87B1524 -8037CBB7E23D8550A620341C6625A1A2ECE7CEE2598D66277F857231A36155E3 -984F147783E9B93975AC38A29F2FBCF704C8A04AD84C3E04A12D2321FA56811A -5B6744813CCC187968C5C26BB8D3E6615A912FA5369C01CCF8C0DB790593B190 -1A90CFB5339B8771F325C5FC448D36C7312B11A15A8635BAB59CF3CAD176131E -026F6E141B2619EF7F3048750CC9291397F141591EEC8B612D6656DD34DB54D6 -DBDD303CED74BE76664E7DC86FCFEEF2001C9DBA56418FB61F589566A47AF36E -C94671C5E8939AF9F4D53C0DE7142B7B63C86AAFA65877EBBB48C64589AFB2CB -1280AC099FC48058855CBDEB6C2D2A0D092267996591DC3B5EC8252984E9B27D -2E9EDE8CD8303F0905DBFCAE497DE1B755B924452CDE11CF4F20893DD6FF7251 -427F520FE00580DAF1703FD968E0F8ECCDE618E1EA5820EE6CFED97C78864EF6 -26FAFEEE194A268F24249D44829AA360D731C34DC285501E966A959180718F72 -6330E4CC060588A2F65AE64A720DCAA818D49D4440F5D0B6C1F6C3A107E12445 -F1BED2D3FCBB87A9597F01C7332AA79143564056219BF87D4B907A04F77621AD -054935E883B2B137D3D1C4BC792E8335CA08B6D83227F35736C41312A0BB077A -60FC6488C5E02FD51A10AC113D4EF70038C649C1677B2204A77F2ECBE9B3C341 -F4126BECBCA61E3F3801F9188A3775924A62D30FB096B440286FA655EBA00A74 -9A4162904BEA07CE68EE76018346DEEE20839C9A2FF71179B58E1D4AB30856B5 -F5D97295A097174467010B15D733AAC5813CAA633746B430B1AAF9F997FDAAFD -436844D1A56B8E25A89D2CC4BA6EE7ABD167818FD4F6C747E07B262C99EE2C35 -323F0B471586CA50F54C6381B052B15B0C58C19DEA82C0CA29F00400B727419B -2379979CDCBFA966AD513FA903160C571C3BF1BA239540B11EF2371A3880837C -6D6CA2F374280CFA1586427AE975A2AEC34244874E4D441DBAC6CD1828841C91 -069AA87FAE849C5DC7C9EC1B9876E59F3CCDF8BB23D939F5348D7486934BFB02 -CC5A22541ED352616830A510DE7732E5D8F7E785BBD31C2BC9D348CE5632654D -2C1740F89D57FB2AA1FD8FA3304EA03F757BB8F498ED98E48485722E78D97B12 -A05F3A28438084D1CF90AC4C3FFCD7B3365941C45E1E02CB13CA1E99F7FA1D00 -1C9D489D5C95F019AB4CE89FA3B6604473DBD2CE8E278969E0A0FCBCE68C23F6 -9381882443D3FC16966555FC222F3FC4B1207522201AB7A15A7A6F22CDC9D392 -360BF4C95DAD35770E0AC7E5EFF015F2C74ED7391F40EC94B8D1C163B5DEE5B3 -911A20C2625AD3B24BD94D2A42405E655DA47D3F94F882CA2F479437B4E0BE71 -8AFA4482C6FB270F8D05B4599A01403DAAA90C01DF3AA7C2BC7E66AB6AA833AD -FB6E5EE13E45CC7CE7E200FBFE639F9CFFF5D08512C02764997FD28368969BFB -0876F236EF6189BE73AD827332DF1B2EADEAC0ED3B939CE5BC3CEC78975FC636 -44FCBC2CCF4396AC7343EC62E0E4F3DFFA2B880BF31D93ADFE201BE9CCEC8BA5 -0B9B919E05B851E0909968DA259EECC6AA0743F25247978CC09C28C4F878E29A -5070E4023BCE95FE0ACCCC01D0EE219FA8344E8F6D7D4347563BF8AC030B9097 -41F24D4BC9494915A82EE9FD37FBB6A46BF077B728FB569B1258CEA5F51F36BE -4F4D0F890D782E44748CA3FE8C8A515998371D9C7D2311F192B4B7E7C68FC6EE -3F7136714C282A2570FE591F247A08319CE9EF1E43274E4E57166E31A2ECA506 -85350DA31AA4C33C9687F5210BA225EA1007C444FBFA2126769767E47A967884 -9F68589E4BAA9ED32A7A466DE35554C132810C68ABDAE536D9D884352F28EA02 -8A555D2CE11F30598F44A65E2D86B43ECCBDEED9E4E5B5B7DCDA20EAA09D9FF7 -422FC91F2201431A9E8FC624FF44D26C0100183D77BC7E6B1A6CFBD3FA8BABC1 -AE4CB0FD382E26BE0A83169B46D91429DCB746A0326243E212F802AF6A56C709 -6E70C6C7CE7014AE937686E11622D5EDA1906A9BBFA359FFD53199E2E99D6A32 -FF6D53076BCA828F8F0F312F9E68D51F64C2D9355174AC7B29EDDFD33475FBC1 -4140531F5272D645DD03CE9A7BA88674E0C531579494BC12F1E952ADBCFD8450 -318099A104353C8F2C45186B8B4FE789C953D788099A872B16D6D8F774BE3F43 -FA6BA70F4ED9AD065C03A51CD354FD0261200EFB1AC5FC2FF76E6C081BC24E38 -C36CAE9349D58311F7EABD5BF9BDD6F709533C9706D9ECFAE28C5A3BAE16A82F -64A29C7CE76BED0B3DC8F374BF49EC60822D054B83A068D7CAEDD3B800BA9158 -394678023119A22726BA1024180F40C68BDA8A1DEF6290E36B489BE25B6A5E58 -8BDA343FEDC153CA0A7EE03B1466E05A138AA671A035A21517C00A0CA33EFF02 -CF147958C3C5ADEF34843F640817AB8145B175532F06C0BE488BE836608F32FF -24CFA9DE22E984FCBE141347D1B6768B5E358855EE7025836FAA01D50CBB9BD3 -0BB97B930EA9140FD4697BD9FA55C5109637D7DB9B862CA0A17D488922479EFA -F39A2C002F7D6D9702EBFC7E53E1784FEB625180D1C33A9B08C37F32CEF1916D -6DDCF6804641A21D12593E9A645F2923B4C6560B5CB7CDF32335E8164AEC6BFB -674DC6747B6E8AC222D3124D0F30C79537399D9DCC8C962BACC2A78072A4EDF3 -A5B1215C080739E84022D99CBE102580EA04E567C51772A9CEF2F78B9B4D7D7F -5965D4BF63EE484598B1553421BC2B49D9735EDA41DBE14E0C10896B5FFFD5E9 -A3CE0DCD36CED44CF03E18326635501375791F59865D71FED61A19CF83C78A1C -284CBD767EB5551B26B6B056991EE56105B86286CDC7DFFFCB0BC5C9826DD85A -6B380481BA3AEAF84F5DA006172D96782AB12046C7B2D3C055011B0EDF6EE9D0 -0BAB36318585C0A0F22C4B5B60C423D632AAAC93FB16CAD2731FE048E28C2E75 -BAAAFEC6D53DF682BD7DF37C040266C95E789382461E841C0BC31C51D4C9F5DD -FC0170B4E46646974AB7E37E82D3827D7EE4C8B6E63A5A21D10D089F8A5E33EB -56957346200BE141650A17A79613B65505D9E8D18CD42104525A43F38E7EEDBC -8CB8E9CF21DA5A2F723FC56B90803319AE0BBEC082E65F4E8DEBBC5EB251443F -48E74DE626B8FC474E80A4B971D94040416BB8E3B437172F6C4A1BC84483E679 -7CB5127CB12B79662D1D196D9FFB84AC484B16BE9C560F334A31F07C50F223EF -D1816886CE184C93FBBE3749614F022E7E8C5C44299E2E4B78CCCD78D9628BA0 -01D58BC0D7438E8ED22A50482324C67557BB15B86AFF6C58D6FA1DB517D15E6E -C27DA3ED29FFCFAE0F1B8EFF85A83B63645851D187CC96B428501C83901284B4 -B03D82A2AE0B7F46CDDB6493E908 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.0: CMTI10 003.002 -%%Title: CMTI10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTI10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup -/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTI10 def -/FontBBox {-35 -250 1124 750 }readonly def -/UniqueID 5000828 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 71 /G put -dup 72 /H put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 80 /P put -dup 83 /S put -dup 84 /T put -dup 86 /V put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E -2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A -EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD -8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF -CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 -7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC -32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 -482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF -118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 -1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC -C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA -8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 -61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 -C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 -3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 -9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A -D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 -125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 -34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A -30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 -39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 -9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 -2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF -0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 -3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D -9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 -802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 -FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 -98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 -5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF -AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD -A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 -5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 -DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 -4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC -8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B -A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 -E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F -42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 -3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 -A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F -7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 -49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 -D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C -0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 -CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 -1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB -8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 -6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 -83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 -60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 -42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 -1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A -21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA -206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 -D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 -7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B -55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 -6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 -4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 -871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E -9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 -DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 -41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 -2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F -220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 -A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D -981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F -337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 -139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B -1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC -100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A -1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 -F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB -72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 -A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D -310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 -7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 -1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 -8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 -80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 -3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C -C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 -4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB -865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B -301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 -3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 -1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B -E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 -0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 -30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E -2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 -C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 -14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A -44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC -CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 -DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 -9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 -4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 -2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 -21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 -47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 -F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 -D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F -03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 -886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 -352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD -9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 -9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 -92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F -821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 -3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 -47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 -F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B -9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 -AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 -C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 -B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED -D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD -F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E -81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 -970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C -6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 -97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 -A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE -AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 -971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 -514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 -8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C -392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 -3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F -464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE -C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E -F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 -911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 -261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED -D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA -147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D -C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 -C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB -61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD -FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 -F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C -2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C -7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 -11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C -9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 -C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 -1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 -5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 -6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 -EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E -F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 -AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D -8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 -376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 -B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B -02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 -4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF -9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD -751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 -3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A -40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 -2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 -D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A -0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E -8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 -AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510 -6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B -CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E -DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D -098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337 -900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B -41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149 -7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA -2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC -A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD -EA43428C6F79C332342E15F75B08A1ED360CD1885730E570A3252A5ECC419A7F -D124C3FB3A7D58C0EF6AC117F50D7D4B6CD852200A1F3193BE101CBEF414F60F -85935BDBDD23254648DEA12B95871AC8F859AD8C9315B258E525FA7BB0DD294D -497646805C3CFC1CFC72C17EED56FC5E7A5FA54691474DEA0C85DD18ECD59923 -619117DC6AF37242576C4E9A56BFF2D3E717DFA750607BA2BE87050F8AE8EA72 -8056655F9D9DA1ADBCB07A6697F6664AC6B6C1F5650255776305892A6E3D986E -10A3F76B65763C33A249C23C8616B866CC56D8440C501D46E821750FAFBA1CF3 -06101C7D563C43EFE7A7AD8D402F232034B7BCEDA9C49AB562DC60CEFA521711 -DB3D81E0400F776034AA7370C867BDF8F8CBE2F2E59D2099F8627118EFD202D3 -51B7AC1FC6D959ED360AB4E5ECB4966369BA85B6E7733A5C7123CD2519845706 -4B684F1C65D278FBCD01A64C1B5BDD5798313CA7CC3A03996EF52A5BAEC94596 -23B4C55EFBEBAABF72DB85657F4A3558D4585AD1918E86DAACB863EB75D64BD6 -3E250047E910F5587847B9B4F6BC4385D22750F78FA3820035607BDBC19C7399 -F90508F5CCF259DA67858F9393AF9AA5E6146E1D4AB77FAC6E459BE47B063969 -2D917CDB0ADD125F3A0304E0F0C548E655D710716E4EC8CB12CE2480A578CF4D -587A5A99FBD5CB140E02C5A8CE9D45B1684E027CF555018F19EF54D4F396354A -0C5947E6EF09484E90BBB69AC4EA851AF4CB1A21CA5F8E2827D8264E60CC2552 -CFD63851BAE8AE22D898791E61F4413C9E8BF423A7FF763A522C2B09390C49F6 -2F8B36645A69B98423568E1552BFD1EBDB58DBFF344861E2698B1C135A260DE5 -DC01B8DEAF7032621F182F4ECDED721EE3D52D788FB2660AC0BA836E8B1EA4F1 -BFB084AE9319C95757E75F3409FF6CC8F3C38638084F8F4F7DA8B4AEEED926F9 -AD4A5C73718F38A4E67E61CD7A1713DE7AD5B63F4EACCC6AEF54FEF08241C7BD -89A71C7BF2452D08237C9FE7CED57497ABE74CC2EFA73D24651664E84B70E8B9 -448623CC127B35E5059CAF489C0CBAAAF805CD6674F203D970007F1A62D3E0B2 -7A0888C8EA6B4AF189795949E34D4359CD47A000608F799114BE5D36359D0F97 -8C665E166A285BB1029C6853A6DC3A6C6AAD5F0697927274A732813A49A473ED -B7E9886B6C4560568436BEC798D8B94F20FFB2A908AA804476C08F8FE0254E68 -1F0CCE78EEB58EA771DEC96F0153A4B585F0E465A2C55ECF22164E79EFC2A040 -E0647B89B4A6A5B3FE75B39D7C066CF11011B2BC6AE827ECEBB6A6E99C87A951 -D3658A9707D2028B65F301BC2041A3F790F0741FAFAFC16B5784DBEA3DFBFFAD -49320408E4FFD670D95593EF9FD51E984ECE98C8CAE1F50A8D81F244A01498B5 -9AAD06E09E5A280A5F53D196FB76D93C37CDD6BD8ABA9FE7F42F5F8E26AD159C -4CBFC016A8E8935759B3E70DDC7EF0A7E7CFA5D2269D26E0CEE3DB6BE787B23D -6F840128258051B5EB1CC83ACB31F9A293F7EAF250529649B5CC4CBD69AAE236 -13FAA8BA742F31CFC6E0089A7EFB20623EE18E7C0A33D2656BAE651C7D651DD3 -6643371D0BA88CD831C86F56A0476B5B0CF69FBC720E340D425C754A3109BD37 -3F96A118648B554FA9BD0A2A3286810DC3C39010D2DC807B6AA2AA2BBE061107 -45FF3797354A328198BD448FDFA6E376B9FE4D21FE10DE7B57D14723DFE76155 -E2595D792A2E708B3D604BEEE8EEB4559FB8C601D6EA3EA349E4FFB2B85AF6CF -8B4790CFB7FDF9B65CDA0FA82E2267E5CD7ACFD4E19E7C128296EF19173A9A35 -B38BED1C800321AFB52A8F671170296B6E0B54BCA3D4C8460D1FA83F9E61A9D4 -3ECA9E71EFA883E06051FC0C11F538B97D63BE124399D38B9738FCCF2F0499A3 -4F8D4D762DCD89884CE1062912E8AD848E4108FB2433277F016CCBFB28E29D4A -C9C3874EC99BE36A898B6F1146E94E12FD1AFFBA0E53EF0F9E86F40F5EDBE7A7 -F4B97FAD6071EFA7C3A4BB8F77F1FE9735016866A633FDDA87CB58465340BA1A -4565448235FB9FC5F0899F35347A869977B8783036075B9C4B3E85406C39C498 -805EB559A892FF79B2159B7DBB1FB84553E4D1682DDEAE1940C3C7D0DE4FC779 -BEDB3C7BCA6250AC38C32119C7F38043C375AA302C8694BD07D529408F2E3CE4 -900CA5A77250574956271C55A3449B3CB69F254A482758FAECE0039E8B34158B -BDA6AFA4091B756E644A1369BDAA7110714055E1297EFA2B91017EC27FEE9184 -A6712CD61F0DD2529A46F9DD8BF00377ED28EA5C3341B24D230E2BB4A8AA530A -DF81B05CCA14A06458995D08774E73841AC0220C19FA1F34BEBDCFC359D02EC5 -FA8010FB91C552F7D8EBC630DB0A764D17F53BEB261020CF7E486339C35DC48D -F0021E370C7685CA1EE41C6CF6F6618C375D1EC39DE1331B33F2A2FCE889E3DA -0297736F5F76109AEEA94679DBE6A521F12843995FDB7358AA398E37BF984F6F -C62DF2BA81CE1120746DEC8261339097B484186009E57257B5A5775BD73C2D9E -AADD0D24164AC3041214A074215C9A7D4AA6104F4356EB853D1E1F9B3BB78857 -FABC652777EBA5643E81099DA63D302CBC70FD61E73E1D05EB3BABD5D246C2F9 -B58B468EE0216F888FD466C3A99AFA4BC71A9212AFCA8781A6C75F756D44FDE3 -A7B94EF1AF05B367C859A75E274AF29F31F13113A7FF040D0EAB1B05A394388F -0DF7BBC708F4D6DB1321B137B91E7946533B9234C140AACE067555E6C41BA641 -FC23579A876728E65D3D343532E103F6BF81C204BBA4CA6ED94DD3C77E8DBEA4 -999E9C98ABE6F78D24C408013C34A41C6594A485467AB62779968B109712C158 -6BFB40E80A4527A835270E4813AD3061C13A9DB687EBCBB6455D9F3F4D029778 -26D531CAEB3C87232F124942C190FA045F96E55F56D253A6CE66A9A7E2F45FB1 -4F61C786EB15A5F0DEC6CA2938145590D43AB8319C17D88FB3606F254CB99629 -125A47F209E4A813563093FC9FAC98C06800DE19DAE4468D8E32B255BF81A2C9 -3319635FBC5DDC406A2A26374EC9FAB1A85CA1B71B32C796715384A2ED84FDBB -7D6CABC8DE74E22886E0D760FDA261625C375518BB6E8F344C16A937199B4336 -054BD8261786B4C0BAB6DC42BA522F395A6535C24BC07A79DB87D96967BE0679 -F14442713C8CE3D97502B9AE6B089595B20A676DF38791AD840E082593B64961 -7DE2B093BDF6C5A0B18B5B77432FFC9570EA8A226D20411F8CC620932F80E73F -6735BA3036121B413C877DDB2490EC029C1CDF90304DD6765B53537BB1D6E1EA -489A9C9A721C6DE7930D399AD9B4BE725AC6EA084CA26D9B1A07F2AD6DAE550D -A8A10A9BEA10C658B2ED3BEA1F1F8B5F17E0E16BE076FDD5BBC9D27F6D4795A9 -99FE84619AF8755DF619F1CE8262A3B55B5A6EE130D17B9316301952B83A77C1 -1BC76F50A4B57F1C6775DF18BEA12589D74B5242EA71B63C15A5A706C3046857 -732CAB3BF6D724805F983F9744E56D314CFDF621C677E3B344FCF586BD3E4058 -9A8A2C2926D80F2B8A108E24A23A3B0E5025C0D14F016B912C5E14432E28F42B -634971E9F55B6F278DC824FFBB724EE407D4F91EC0E2B5966FABA144EFDFC50B -662F6A87B85B593908A49BCF9839B942391C696038A9EB94F6624508E326C879 -FA95B21243E8FC9171965AA3F8EA2D1AEA9131A82F84CD0FE101C64A4C15D8C3 -BC7233C05E6F17C18027BCF63E221F93670E86D4D19C864DCB11795CE56004DE -F553165BC6EE3758754FD6340B438F09BF83210309E4BA5FE39DD4C9D838F7FB -51513A9A20A39284AEF3FBA27F69C34A816CF49512B9E3784450CC8828DA0448 -734EB51757D6EF29B283256B6C5040132617A04F8D3EB6E5D28AD5D7030410DC -F580FAD6BF8342B451171CE11EE957E80FDB15F99E20771800A9723BC08DC68A -33D3460FF0CBE11D922E2990D4A12918A9FF772F12A661D4E625DFDE967F2C27 -71881BF2DB5C39F9D295EAD909271CD42298DC8449E9CD22E0512C5D47E228A3 -6C61434F35B3D4E5795E45D682E9997C445432F1170F99E984E959C378502902 -509E5571CEB74F713CA254213FA07B57B172A5BAA187C49A23BA37B5785E0A3D -18549E42ACD3FB78E52D81E2B7C912335707709A91A70BB69288D3B4D8275F7A -68E01CDF69F254D38282C6573142D3705A9B4BDACF1708E651B86EA13EFDD4FB -0AEA244D1E0BE67536B955FB1589D7C42FA139DC501A366A4EE19F55F1BA25FE -55ED75C5A1644D965090CEFE49B6AFBD4F0A27C16B86A8BA4D5F74C0CC3CDB14 -AAEF18B57E86D1E3DD3D1023CF4DE3127DC03791A7DD346B8431D9E46922444F -D4AAB73BA9560422BA4E3FF2269C678014F9DD9E817CB2558296C54D4E43BAB0 -02C2BDE7DA7AAD96E1BDE77915BCD6A0619456BE1F3ADCEDDC5A2EBC8E86FD0E -65B83A7B6CB9C276599EAC5E4D7A854C37E294D71A2772FE6597F92C1DAF61A9 -B04B7231E9647C2C0D1DFE42BFE518BB12F7E58B34845AE1A408550E02E93F96 -57AACD8253D1BC3056E958EF733EA8A1500582C489515498D79A10ABB26AE7BC -6E420F37014FF8A215391470CD375785389531F89C8924815E83FCD595E93DA4 -026711BE961EC5E9C491695305036EB817A5C71AB54A09FC66C19ACE81A7A8A2 -4C4269BA4162CFFD3FDE77E180891CB83AFD0A37E706F204F5A64EBBDAD5ADB4 -762225F03D13289DB062EFE9044D4ADE085572A05F3515478F9CB79E57543FCA -03B5DAE1968A51FEF29DB43E587C8A97BD20B1C179EA8088DCC6DB4CE9177C5E -21CDD854651CF7066C9A93B24326C4289ADD3632580212675BBDC45B02A90780 -DBA1A0FAE053342DF1D7C22D1B7A687190AA01ED100BF02AD5F8D2C42460CB79 -6A2651CDCFCB23EF42487F5EF14D2864BCA9515CB12E9AEE4F63234D54849E4F -F6FACA107793051DF8C462DDE532F6D1A99B3A645650819E8DDFFA80EA42040E -B1413564585246569B0C00B3BBAC783C03F7ABED1E74B02128CEA181B012CDEA -8CFE2F345378C621D5A1F8A63BD33BA8293CE6485CD527B6C0A4B780C5D099D3 -CC39602044C9796CF5902462448744E5D54EA7B6E909632BF705686CB7E5FE0A -A1DCC442884641B3509F3E56F64EBFF76D36DD306183663CFD49EB28A8F1F069 -BA72DC0FD16916069459CE227356A27645CB3EAEC4B588575EA119CB218D283A -FE0105D225F068F1C66F80ACCA5094DE78749F207EBFDC1463A65E204263C2FE -050322D7F9AE094F71A67DB8F5BF07644BE345E198593EAE1BBB5A4D7FE11F58 -B06A044BB41A9E8BFCD3543522B9B1D0E03AE79A8D33AC8E28AFA9136A2B61B5 -5619E3E73CDB4B13B6D388E8BA2877A56B9FF02ED34F264EB1A9D4CE7A97F6B1 -A0996A2435F5B92AE607F2ABA1C68F3EE2A6C98F34DA3FAACA80007D44AC79FE -E60EF6487982472FCD3D8A0DF86CCA1ADDE74421938CAEE9F9474B467E7E76B3 -F2B9FF26FAB4609C0A614BBA0679227235F7A621B8427EEA68BCFA80E75BF9F8 -9EA044D4C19B5E00CEA05A4ED4807E3D1107721F0B76E22CCBFBB8E09A5A3A1C -0B3B33EED6ABEF799A54877DAEEAB96E52D783412C9DFCAD06ADD8A48C83C4D4 -6DC564DA74C6F87EC23AED10EAFDFBDBEFD26ECC5E4D92A82A129454145ED232 -87CB424066C5C55B471F08F5A5E57396396CB5232DFD5BD454FFDB308983D067 -3BECDC906F7973138FB17751AB5F9D5F7E689DF1AFB743FEBA024A67237E77C6 -18F3BEFBDAF161D30C347052E630A4656BBC360B579CD2B4F5501D470CFAC9DC -3B12F53641A19D4B530807BB269B23221B3DE8D2E18FBBBAB2119AFD6296C2F5 -3B3394207BFE868F91C06CA8F4088EEF73ABDD84D021BEABF522E248E7FC5B35 -E3C22622CEED43DAF8FE442ED25767972139BFB083D2E7873EB131F6A88076A6 -C4F17C1443B49232E7965C1420746CCA0FD0602E6658D1B4FF757B0AA23F10F7 -5AFE028C9A0C9BE5226868B94E1476768903FBE2D43CD2D4E19EE4344F944BEB -BE20D5795B9F5D7584D901D417841630D6557653DDDFB8FBF78520E0376ABA39 -E58CB88203895757F780CFFC7EBF6BFDDCFD4DAA5CD6EBF6DCB58CDF40083CD7 -20907634AFC147DF647B45F44B795B0B0E06C860A0C31127CE10697A0AC86A5F -7077D912CC18A3A2A665DED95CA6B9FD745B196C74B7A4830C01339B94ED4573 -73A6D0CAD03F0358CEABB488EAD794C2E357988FFD462BAA16BFA8529162FD79 -F0588055D0724457510444B4DAA783E239437D64B1B1DC92D69D72CB5CDFE50A -787F24C27F9BDEFF5FD8424249D73BD2566CF943D47BA546113E0F5AE92B6780 -196C7348AE4EEB3F8D64EF2EFE8788BD3B5AB46EAC96E91FD44AD157E769A7EB -0E1B9BF5317E2673C65ECF5A9DE1B55E604408BA9B036065C1A4055052D0BA83 -D1766ECCC63DAACC748DEF44D8E47FFBBA88B2CB6A98B054CB0086F4B9D07C83 -8B0D83ADCA9163BE3A629F465BCA28C346DD62F1E9A952D68E1737C4B1286ABB -C4BD7D689C9114ABC77721C283FD4B7713091CE8A702C1E4715DBC415701EC58 -9905A3CDACE7D48AFD3F70A7C978D38B416E09B52FDA31536148DD5BB453DE74 -5AAA658FB7B3B63E9BCB2022F3B534D2948BD7D2E3A4E81CA53DEF75ABA7E72D -3E46DB7101E6A5B064AFDFC4E3383A00743660CD8274731EB69DB706CF210A25 -24ACA3A3566F1E1A364A01880429CAC9DFF163BA53C8A7E53BB4EBEFA92DCAB4 -025E045F99F3A11945DDE2E13197AFD2ADE14368C31B04ECD90E1B9D67C986B7 -B3C84FA62A2E0530DE62C11C430F5CCDA53017DCA126708E96B56EA7B5D4B756 -7B6A9399B1A1E6FD6E80E34116100C9F28DAE7DDC60F895FCEDD77A13A2EB039 -430C821A7A323C4D31B4CBB98AEE6AD360DF3262DCA18CF160A02C3F66B2C780 -0FA590150C32B06A6C2BC7FD74C4EC59B847A2458EE657899E8DC25B5EAAF2E3 -C4AC110CAC0F86F415A2724CC1732F953C5EC34748FFA71818E04FEAEDCEEB7F -5BBFC8AF78872A3B88D67AF648B7FAE65D2E8C1F48530D4F45FFB8EEE05616DB -D8C9277E5949A44D523F9DFFBCCA2BA2ED127FEDDC4387DD07C095D8D7C56A4C -F54F47686577C9BC940C03F9CA40BF7FBEC3A07C4DD7D59FDE710F842558E956 -53A126F804600B02F791494E9841BC66165C248298CD8CEE158BBD041FDA7DB3 -5257AC3DC36AB75EA41204E7BD8420C6FEAA25FC7A02F7453978D54ECBF075B2 -B02121F5498550F38A136738F52D4A3003C016DC473C9535109EA2D0DE2F2E73 -8FC026423A19799DD8268EFF6A8264C2D94DD6916B535A20A0312A791E0F5ABD -639AC6ACC68549BE25FE23D60A8604A1C27E4E1863FB181A7762FB4CFA551243 -A25F3AA7AE9BA25C52F429A8243CE9EC7D7D947EE021C9E6D603DA1010737D4A -E2F522E930C959C677CD54E40ECE0D20D2983B093388E03DCD3EC64E34BDFDCB -713E3105B0EEF3BE68235BF5DF5C661822370BD7614B44D4DAC1C79170002F7A -F590235E0887F14814A823F9C62FBEE9C8F309978EB7D7D55573B4FB7EE065AF -F7A01601DF410D561476074663B4EA05CE82C48A930F28883221678112DAFCE7 -D2A460E83470C5B52B7CB1C43D42524A71835A1B896298D6D9A804F2F23DB32F -2C7D11F33185A48CFDCB7B33EDC4DE4D756CBFA836A82766A45E84CE57F6DC5A -EB1BC7925907B6095990430EC859CAFB7AF58044CF477C7974DDE6B1291B035C -FF266F85BF4E5F1A49933577AAC49325288B76AC0A217FF9550B2203E6FE58E6 -22425ED2972E85F471EB2F5BCA2C9DD2BEE48F4E87573E975D0481806F0C7EDC -9918E853936EF95C7B75B2AA3C15C973E8963620454690CEEA1EC9E594117E18 -B02D8BD96D84769E5376AF79B42C7150B7688EDFD23441C608C41DED89E3047B -F2E01057EA248B4128D68E6FD249DB020ACEFD1E0FEAD6773115B434FA558BBE -F71C2FE0FF0ACB9852424A4EBD0C43745A682A280E37E7A07BBFD3A941036C55 -5D97488F4D5E63BF6A4A470AC6FCF0DDBDCB00972D846A5CAE0AAB5EA2B783D6 -14F2F300A5620CB83DF801D8356B562446DB8BB6699056B185743E9E768A8D09 -6B2B821E5F32C830026EFE9419F03FA4A2B31B77DBB3E74FAD7C77E4FB1FD68B -4712443FA811A9CEA5D1AC300100EEACEF7750876636221936F413639502A88C -A52E9EA9E0F33D83156612B013DB6E3C71D9E1AB0582F4BD8A6D8A94EF11277E -524B3CC801EC26DB420811C731D49A66156CF39BB5E5CF30CF0373E51A3B69B7 -9F1FB412F6EC1280FC57A52E87DE96281AB1EABD636AC75EFE55FC64A8B91849 -4A48C1088E3360CC56A61DEF22A66477C0F44E1851EE82175C9FB721897358D3 -A1AD64ADC31A76A5634E196341F9314FB2FCF7A4DEA54BB36C62A21BF29FE0A0 -23A323E26E9174B66E8614FA1153C0AA2065E668385C286F57FBB4202D80436C -03FD0B5470932993E1667246411452906E493DDB7916DB951A394AC1515164B0 -98C66CA4C0539693F105E9DCFA967B25EF37E1F48FA279C2FD35FDB114F6AD14 -3C9C6AFD105AA057B014706BD9319F651007D3DD5E3D581FD11E5AC21439F463 -357D19ABE0319FC38C3971132AB73165A372109C15E1316149C2D755D90F3F38 -78E7EA7BD86A0E18BD02294B5F4536676F93C58A259860E294AD8978F767C3FB -0A8C58F0335F987D2797045263F97E578DB42F9BB097C161845D347AE7D3D409 -3341BEA7EDD164EB05BEE9CCEC1E48060A3BE275C80EB84555171CE4D0B21207 -35462F56926D0F713DD1B70C6DA78B14E4D11F94E5BA9BC78D4C6B4701CD5A4D -F7A2C28E150749F0C7BD2D57664AB5C53157604ACA4772C09D6C7554FF07C966 -B61B01187A2AE412D610BC2F701E3723A5D12B11CD0E51B099E3E28EE8743427 -EB69A02A28E3F6C40166736C881E2CD9A04B001ABCBC4DAB7A5E97D3F0D2B2F0 -491A275181FF36C9A594E3494658CFB73C0375B8A3ECBF74587B87C00949C82A -AF6055DAAA1EB9B07B0E3F71B40986427EB8A909BFF873901997E5C12A96E9B5 -215F8986F9B03445E9030977B4B9487E6361316052EC1D57E37E526F499DD71E -20426A962873A6DA473E2D8337C2813C1F87F27E9AA111F3DCB04D2153D66D76 -32947C4AB3AFEA2EB65A92BBAC6712AA9D7ED46A24C3E055CCA25E60EFC48448 -D538878214E4A4648B6EFFFAE1D5D7810BA33446DE287FF9A53FCEC88DEEE5C3 -BD0990235C00751A34972F975CDA90BDF2AC52A0B3CDD2C37938867BDF8A5350 -6DBE540292703C94BB9CC1993F42B36519C1BF1C1563316F5BB2AF262864ED0A -D960F09063B9624470BE8B5AD941C8136A40C45C7FC3647D0D0F249AFB388FB2 -5BE4C1B059B2F2D1486132F54961B35CE68D573660954D2CE0CE474B3A8511BC -88FDF2A7A5B6D42660AA24162D2FA941710B28DB5FE3A1376D1C17DB755BA9DD -9E8D7E413A6D91DDF79D561E6E24E177C839AE7AF67F7232E62C3375AABC386E -F252BD09ABE7BA2C8864A57BEE210D918C837A22956CE01E2A1C6D8D36ED0B89 -7D4F5BB00875BF86F08C567090B97274D1717E6430EAAE04D112A68E690168BA -7FC64082D54953AF035B8EFDB9CE79DB23FE8EA4642CD007E5139BC8A33A80DE -A343FD7D30C4E414404FE4B6C67F439CF59D16C7AFA784F05EF8854B1FA799D2 -3B6D60555E8C545ED1A87FB0EDA768B1BA8419B714C4D98A29E097018749375D -927F89639DB3A683A5667E055DB80952EC1CECF2379F7D4E474781CA6A777004 -63D59E1203C15F36176C31FB37E26D7E3EA807960DF37739382EB296E6C86F47 -2FE36705EE49206FC73CE0B50413477C40EA6A32BAEAFAF6B48BB787687296E3 -3B76915020E7011AA5EC9998DF03DDC10442962B74D79E835DF035B845262F1C -BCFB70A0EF1ACD339C730061DF2F71428CCEC7FDDB79288A01612E8C312D6420 -92A6A46FB050B3027F3FF9FC13AF63577BBF35DED932AAAE1868797CD0DD40B8 -5C16142A7844E48B19E712255346809F59B5FFAFB4EAB7CCEED49AE0B8044533 -F1F142817766F2911130D256185975FF7A4D858B88216B8C6095DA7B64423004 -216F59E7E79890085589A5FBC37B152446B39AF9719EF5F0A612C9B6EC79B3C5 -E4CF1B40508F110BD8344E9AFF2626E116BF091DFB3A353CC902DC90431E6580 -0A05B75D0D1FE391966857000AECFE3CD96695EA9A59F1F98F5DE734C394F4F4 -7BCE2F6E68BB3E7BDDC11FF45B2002903F90C4F3D9A64D8075D382619E92330B -F2FE55CD9E2BCDAD1BD0E4421C4E14D230BC46843CFCF29D97D909E54D62637B -C102EE4781B5EB9D6E694ECA3E42A74401BFECA5C2F9EFCE6420450988D42581 -BED9703DCDCDD050BBB8E3394EFC87E649C7F4CDFFCD94876173B0C3EB2BC5CD -3AB10147EB82D3164893FDB8A35E27BE272BF6E426EC25C3371FF4149E399028 -978DA21E99ADC25E40B9CD12D68828D03E21D8F63B32F36A0AFD0DC21EC682C6 -FFD4C6B3738D6ADBF6893A961E83A530E7761AF49EBC1B2A358CCB577C0DBF75 -96DA1916EEDFAC8EA137929981D4B81099BA2395F1373651FC5E2BEEC4CF08BA -EA34C68529F8386D97CDD918D5178A45BB841BF4D57D879D4BBA7EEF70EB14BB -EAFE293B945C61768C5C7EB17E3D594276CEA68B8B932CA4A5B72D55E9F18337 -B5F80C8AC59882263F4422EEC92967B04693531730E2451DF1163AF1C42706B1 -DD2DFEA4661C172EF86C4F7C236C17D95BCFD45FB25A9C7E7932438CCC503D16 -CAB681713977520E91314D0BB8904FEDA54E01AAD18A5F1D702A43C5161C4E30 -70B22FD17A53B6A297ED907BC5FAFBAA36215CE008C5027A36E8EF6AD667ECC2 -6A1683ED002E4FB3530CB75005CFCB46701938F284F089219C943488BBF00A2B -F05FDB494FE62B148819E66B75C1EABB74AA6705E1945418FE8CDAFE3F59B645 -D0E98C428AE93F4E45795E626F81748116C72DF6DB8EDD1B7DA92033B039E26A -97FB8568F275F6737D816BFC63FB6CE5DF8039DCC6360A11DD06E62653D4FBDD -032BCEDFA5825D6E1A56A7C2BECC61F58E20F52F494326DAD8B2B179D8978C43 -7F4BF0BB357BBB26E8F0A953FAB4436939D14C35EBBB8F9ABBF4820BF4324C63 -8538C96895275CF2ED860038E557364668FB8C80D9034F5AB899EF3F4EBDE4DC -423AA848FDB8A0AEB45F341332D498CF55B8211B0C5A619D404170359DE5F86B -58474D3C6B39D386998BBC79CEC93F03CB7891E0084300ADF09ECEEABABC7CDC -22FF542616DE3838846581C6C80C2D97077818FFBE9DBE8C8449CD13C8D2D5BC -6FD512842E7B222149430262375A6CD4B64BD1A6C9DD16D975B4A5F1B3503B8F -45A39DF05BCFC8154C598243CF2B0E90592C282ADB302F05363E1C7C51ED7EA1 -450F8668971783E264669E8B065A61C0465EFFD3242EBA21510955BE5F568F02 -5D1428EC09E2F968BEF94653286A57FB5F58A554966C9C836D2AF9213B58D8CC -55DF670095A0251AF7775474444AA1D91931A93FB982344DAC682E224C2C07E5 -A5F227FEE5CCD29E0F9543A015F59DF9B073A02ED3A74A1FD778B69646725921 -58D869666A6FB56291DCF7F06883719AF533D24527A2D09BA97085B5B0CDA0B1 -3CEE738065F0E631322077CBDF71C9E0579BD83D24A39DFE11502AF427398B9E -B1660885032D54A948380D7D386CD865BE5C516810EE38B6B5120C1AF67DAC17 -10D46A7AB3C40916F4AEE937DBEB0E763C90A83B7A6053E329E29AF4B98EB2BA -9E16F834880F246F3BCD4F2BB0BA987B48C5C63F59C47F25AD5D02F4C3131BF3 -1F04A860DC3C542BEA6CD7290997E039EF2CE021FDB0729A93D4F431557B076B -C0D85AECDE9DD072698A81E731814DC25110260010C3DD863C87131E461AD28A -9416FDF10EDD1659B982654214F4A579C74CD722D063C9876B970BDDC8E6F63E -1EE938DB99FE260B92E5D2E22429F1D721780E96F4D2EA983B0D9558250B07B7 -47883F7DB2EA31BF6237524DB411127B956AAEB6A714EF245AA31E169E5D0E65 -DD3220A2149594A31ADF9B9CE240795B40B0AF33EB4E48127E6D339D77490233 -4F32351A501880975411A5A4B66B051C6A9441D177D42E07F226482E12989D6F -E152B2AE18A4482CB719E9ADBF39BA4E4ABAA5F4AEE67A8F96446C2743D55541 -48584A86C9A29CA5132D1E6592A1A6B224A753F5353BDDDD771A646A85B455DA -F6D988E5D2C1F9D6F7EF33F85A214B3983160CBC9E94071BB32511AF254E8BCE -901DCAA53A09FF5376CFA072A89E934C7979DEF4A4FF9B7814C51093765BDC81 -18D08EC11C3FB87655EC865C3B3FF76EF215FD68FB542F1C0895851CC8A9B2C6 -CD5383E8A7D4A0CC6BDAE7A814B551ED4E9389F72A436BC0DB5916837EDDC220 -0D59315375CE8EEDB620CE486F642723F25E48797FD11D60FE586F77BE1C84A8 -EDC862CB369236766E85479C518A2F404FFD359EB0DE1ECDA9A7005CC89D6FE1 -6B94513413A5580E1855EECE0EC809D4F3CD521FCA0C87B53A63F853F77EB506 -9BB7C6857ABDF7D41B8BA5C76049BEC762A92785D61C4B4B9B52BC6AE01261B0 -7F490E8908C422C358FB7DFDCA3C90BC90D7382E1FFA4AF066191E780063ED30 -CC310911E601F4439CF9411D510B4D1DD0CD00AF4F037E43460D5318080253A7 -087882B147696917B46DAD2049820AF6544C17CF7B8F959249112EB815A770EE -5A87775CBAF668C014951DC035C88A9ABB6E218250CDA07D4E8634C24C5FF2DA -240CD8F66D2F40FAB0B9343F29F9754B3C05612D93A7FC271D5525C0DF908C27 -CB5283B2F67C56CAA486608F95FC9F003CDB6589B3490485280F62DD2CC4363C -9922A00068458076E0275A79D6BF68936AC01D8686948B5EB9EC085FB4881280 -CB88526981644AB139A28AB5D6F697BE574EC6736A0448F7D2A01DCAFE7EA13E -4445FF1A2916E1D150D8B5647669FDAD2B964AEDD165EDBD80AB1A90B7E68A06 -6E879A384D859D9F39679D2622CB9B3333B23953E6C480420915A7D306FFE547 -EE946D441055117C758A268C3BC5D9426F096479DC10A2A40E0DCA2A26CAC4AB -D25DE153FFBBEDF0192B421F425C5AFECB3E945D1FD89A871BA6BB2B6D6EF927 -14F03EF6F58F08C942FFDA0D5C21C9B4AE8D0BD94F37CDCA045B9D9523C78D34 -CD2200A20FFCF439F46349D1B5758927CDB632BC9FA901EA2DE5753545E29BE5 -255506E9AB64604B45151C4D1C3F9153122386128BF321B9850B8092E5A0C95C -5B76B25978976ABD43276347D3D19BC9D3DDB0942DE5F92FEAD103E8780CB7C2 -14BAAA7046FB844EE91FEA29DDFF649BDBD6A23C27B465D56F3F610EAFA3B6C3 -F7BD500F9B3B469AD136A7D4FC508A96A274162FA66D1226CCD145A32C7ABE53 -360B31FD69EBCA0C1072082D8D81A3E25EDAD691A7EC2A37FD38F0E306BB070E -ED46D391BFE7AA0702D28E7F9A1293844E1F709B1FD2242AC3414165D900601E -0872365C6BEDCF61F914DFBBDED7C20AF382F55F1778E9388A1C59665694F334 -D27DEA2A169BBA820551F5FF4BA34ACE364CEA6D934EC516DB8DAFD57EED2ED0 -3CD8018EF77EF79077CEB7DD82AD806A583DA2E0EFAEF6C1CB48B53A22BAE11B -68FF422F -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSS10 -%!PS-AdobeFont-1.0: CMSS10 003.002 -%%Title: CMSS10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSS10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup -/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSS10 def -/FontBBox {-61 -250 999 759 }readonly def -/UniqueID 5000803 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSS10.) readonly def -/FullName (CMSS10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 53 /five put -dup 80 /P put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 112 /p put -dup 114 /r put -dup 116 /t put -dup 117 /u put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 -63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 -274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F -388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B -E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D -AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 -154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B -4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 -29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 -CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 -C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 -131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 -302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 -F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 -AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 -28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 -121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A -A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D -8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 -69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 -BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 -C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 -B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 -8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 -161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 -F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E -A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 -0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 -D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 -B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 -DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 -261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA -B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 -64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 -F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 -AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 -CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF -5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 -73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 -A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D -EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F -1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 -D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C -13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 -C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 -08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 -B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 -23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA -56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 -2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB -DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE -3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D -5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D -9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 -2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 -F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB -73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 -B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 -11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 -03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE -F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 -5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 -60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 -622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F -BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 -C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 -8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 -1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 -F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F -D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE -257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA -7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 -611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 -246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 -E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 -AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 -EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 -0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A -94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 -73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 -AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 -8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 -5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE -6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 -B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 -129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B -AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB -8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C -B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 -753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD -A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 -93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE -207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 -3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 -7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 -D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 -09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C -5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 -B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 -E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 -C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 -F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 -7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 -99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A -96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 -1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B -48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F -4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A -45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 -D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 -838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 -5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA -ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 -DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF -E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 -5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 -46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D -491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A -DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 -F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B -0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 -EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 -E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 -0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD -ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D -8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C -8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 -A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 -4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 -AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C -2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 -14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A -647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E -6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 -4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 -D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD -60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 -4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 -BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 -1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 -6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE -65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF -D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 -6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 -85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC -7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 -BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 -9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 -6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 -2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A -374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 -39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 -AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F -1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 -E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 -AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD -B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 -CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF -9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 -DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 -670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD -99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B -8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 -E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A -F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 -DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 -99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E -DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF -51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A -40E84014F5BF40948F05E8562C99266B9E54AECEF94765BC79375C69A0385023 -A014B8705931C9A419C8F2B72C3F7054CD6487E75ED2E852BC19302D02C671FE -3892C7AF2A90D6F29771AF31FA95258B6F3434228B377F5FB494E28B5F0393C8 -9DEA5E5726B81B7983D241BF7F78928EF8D8528C8F6DB7B307D720243DF00E84 -A37A7B2C720348F83ACEFFA78929F4CFB5CCCCB2A074C78B92C8573750B91386 -CECD4A1243D1B002B45B933534C0B4C51DDC50BE37BB6E42B8FFD25C8D5208E1 -E3019BFD5218EBE79578A072462F4B739AC8595498140CB8C6350C36E0E9313F -4B6ADE13C28AB4BF001752E07976551121ABDF734B64061944C363CA1385BD23 -CD9BD8F1ED9F0A5C602752A62D0453AC97D649FEE6D0ED3BE5D5861FFD52EEAC -673FD6B94354DAAA29F26C04F9CA7779F5021CE8A2CDD3F5477B7C100C82E82F -AEC0BBEA7AEF0E819F0A3EDA5BBEBF135FBDDE4099314E3452D1C30067032966 -7BDB2B79A6C97B54B8BFE82A1E6D7F3FEEB6FAB05FF02E5AF8CEBFBE4C386C36 -3FEC86F64F3FFBE7DDD4DBC0EAF8376428CA16B43BF85D8CDF4190293C6BB60E -204B16923A39DF1882292CA07F3948B71F52CB6AB3C22C7B7D95A916DF3D9E85 -1F36EC96FBB3ADF0E3DAC41C4B8D3728D1A1833CB9BD2A237F8AA6C16FDCB0B5 -C8DA4238991CD04707F21D787047BC103B79CC12A1298963E4930D8BB8856495 -4125E8230FB213F5B74ED46CFE8FC26805B45557788BDB4BC8256130FE4AAC20 -DAC0D2AD11C34A0355622780048DF0E1328F1F368D8D8B1A8028B073FC12A516 -A3EDD5C6519E7C6212D5A5444DE829060606063B1D44B2CF3E26D13AD8389202 -0C18FAA0106D974605D6CEC0DA3677C83D8DA7CE506E669C8EB9288CD0B2A22D -A409DBBBAEF4E4FD5223321D9E9358AD5FCA552E4EFE452A683F6788D99F98DD -87D84D5BC08350DA235BE00C67D41E00EBF1B8CBD3CE3D3F498D59065ED1D91F -AABC730BD8824836E7080353F13F0A9C1519317CE42419C6C5E05FBFA39B6963 -A91BFD5359CF26AA5C9F044DAD9513D1FAE141973E9D31CD30AEC63650114C71 -A10587AB9FB4FE5DF62093536D23CC813044827A4D3FD3E622A72FF8D1AF2046 -68A0324D8094D0E1080731408352151D2B85360B4135FEA36C5B167A9ADA52DD -F684FFE0DAC6EF327700164FFAF9DF83C76F4892F601762154422387AF4FBD1B -838D869A68395A41CE1DFCBD4E83F7208D5B590548C0F01F2EA4D95030841955 -1A62F22DB0CD561FFD1F53362016840676DE91200408ED31098EBE8D7B853FCF -64319D6ACDF11FEFC4B1E6636E6611AD9D0D7F29D28302C632763C6167154B68 -18F9C8C8AF2D0213FAA7544536AADE63B8BEBCB67A4E5B3FA05102C64E688117 -09088897DD1A39FB0D8E294BB18B8C93C727A79D03642C3568842756381E2964 -F3E37BE585902071595E398C5819870777BC27D9894876AB7C579BD498738948 -FF2ADB78FCA6A17178BD43CEE8BE835219782F6BB9CB286E5F1A4C92EE4E7C9F -BBC0D019D8A364F19B22CEA8B9DA94CD93242224D197115597C1EDFCAABE8E6B -E1F21871EB6F9B27604CB2A9EE8B432F4A42B1F76D4E96050F69D55BDB0DBBD3 -6BC189EC7B4B42381C09C7DDF8A19E7D6C42788F1ABD37169DED9C19505DE376 -44B31396EF2842AB0A79558394F52A53EBC331733CF35047ED8A878914605274 -014DB6A1BCAACB0AA972FC0619CA9BB7EDDFF3A4760004D1BBBF3815C4EB73CF -8CE556DF5FACF5313DD81E087F955615CCB979B81F65DC50CFCE123F680075F8 -2A85AA9187ED4BBC7B155110B044DF47C7D3E62E9B2F98C1F401F4C84A87E428 -FE8F3B2B0EA1B923DF162086C8A9B4413B65B6E1992C2DB8480C6ED3A1B45094 -8EA4FDE77BB7C3C898D707553AA905CC7110B751BEC1B472C0C4D43507FB5167 -7F5CC6816A30CA19EB93CE38AB0ACA267435BA42CC36C9332276C553D76FE98C -FB7DFA73060A4D8DF6A52FD06DC7334D0709D952D1603C4B2DA1867EF3923BD1 -7EBF32A34C882CBE3008199D8691414D936150E9E029795B256C4175F531E695 -8D2CD5C902763A8D183C771F05D6F050DC19ABEF4DEE8F8BF5083F2C57ECD099 -D01B1358982930108BE133D189D048CE7FDF493A31D1664D196F80914786030F -A1E931F0E03C7AA2B65DAA70E12D44AB2FB8827BF2115FA2B13B6BB4039C062F -0A20B909F8D80A714FA9764D1F4A3305C03A5244321EC5F6710D24E110AA3DC2 -2BC3719D49D51D72C763583825465DF2474B6EA83306A752F86D5A8B2F2ABC24 -87336CC47C75E9C935FF9262FE07D6C8FDEC44BE335A8A721214067F7A9B9EC8 -9ADF3D3FBCA5DEB75A88034C08A744358E23BB2B13AC5E08162502612A7FF65A -63CF2A927E5FFAE1BB4FD850B4B1AD6E3DD0897086F334397FC9590D5F00A96D -4DA676491CE72D93AFD1C8E2638DD22FCF1D2FE941D4B90E422643B6B25AC077 -95D535CDCD52E347BA420C61817F7594E23991D86051183DBFE3638AFBD985CC -95A4402729EE6EDA014A03483C1FDF79F203FD45F48E48386EFA6D2C148F2B58 -2B09EC3B66AE50B446CF56C044DA4E14FCE5046BD8616268644A19E77C87BFE6 -FE5009FD926E6B30F8489E31FB6877A5998721B60D6AD01C5F1330EBCD68B779 -ABB9FDA5ECA39DB2A4EFC056AC41DEC22D49A845F9112AC3E72D287DBEE52E70 -E1A253C32CA257EE66CA8ABEB47E0C4A117BBD21E6BFF58A5C5AEC9DA23FC8E3 -3992E737EAC7E0E8C13A330C140E5EE155D9CFC27FD14EE5C39EB7AB3B0C11BD -0DB6CC537290C23F0D7933E7A59BBEFBA6291AEBAEF2796065C31104B321A310 -5E93F34947E720C637D32E246C0E7B0F97DA0729AED50E0500DF227C65CA8E43 -3BA09A3ABA404F17DAD1B21905AF40C68881E5FD9EB1D6A61BF2C27D01D765E3 -6A9DF9048BA2F16B922457BE7B3FEBE16AC2B096D16C87F6962AB93DD730C70F -F6EF6CA2A8536BE570BE9F222E2E9CD6DC581ABBAC1A4BBAF6997FC8D739A78E -948C553D3E7F013517DD9D0C56363DCE3F63CF4E24615F3BA51D7D1180D06223 -E74FEDB6811C9F104D00361A29D46EC3BF5DF43239DD5ED1D013E494FAB76E6E -ED4FDFB7230F456239AB247712881699F072D3EFEC0519C635F35F4198A348B9 -5423BB1C2680AD161DAC4FE1ECD24EA12AAB4CBBEC60C483423F877F54AF89E0 -E9F2A5BC33E90B94866D31F2CE3C62206DD43D0BF93D7B239087C366B67741D2 -D4A3E47A5C1302D15C30AAFB706B355B20ACF2CB4ECDFA53D580D28245284337 -AFD2B25C17D631453D72222D5A68A4EFE0AB2F21ED784B96A739528245BDA944 -63 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR7 -%!PS-AdobeFont-1.0: CMR7 003.002 -%%Title: CMR7 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR7. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR7 known{/CMR7 findfont dup/UniqueID known{dup -/UniqueID get 5000790 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR7 def -/FontBBox {-27 -250 1122 750 }readonly def -/UniqueID 5000790 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR7.) readonly def -/FullName (CMR7) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 65 /A put -dup 66 /B put -dup 68 /D put -dup 71 /G put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB981ABA2ACC9A23A5 -3E152596AF52983541F86D859FC064A0E3D5FC6647C3CAB83AD4F31DDA35019C -CDB9E3DD3FEBD4C2B36BA3CF6E6C7DA85E25D8A31A9BAD39BDF31FD0D1790707 -9DE6A078E8A409D8295F642DF492AC4F86AC84383B0F4C6BAA7C22AD5A898A71 -D6CB34D2CD12266C486B75E75A69C14819DD9BB8159088E04D4717E576B8482D -BDA52110AC8B8A80E4E9D58F470EEBD3CF44A1E1EE8DA318FFF3611B02534FC9 -F4018C7C57E80570D2F634D98BE5D5EC6D95051157F0EA94A3D12BE0B4B79939 -F82F8D73136D3337C44E314B0B16CB030D9A12E01FB667105F334C3EE965E5A3 -D410D2F1531547A4497C355AEEB295CD3C5334BEE5232992960B757594B89F3E -52095042DBE6B4DA3C3AD50CA95EA9EBADA10630B500CF1FCCA7D60306743681 -7E428D33B7F7C40B425CD58E4CD8AB474BCE6A307BC6C6EBC15A8A96E0E2977E -A33389154536F5C5D8CF036D07F24094E779E5ACBE5502C92892F10F4C6DB627 -C7EC4C7BF20B39418A8A85D7FD9B0EAAFD871DDD41F93BDE5FE619AFB8711824 -DE890E62C1969A6FE28DD3578AF43D58A728FAFF0B9FAA640962C8F35A26F76C -67F3548D6DB54A25CEB368B47F97EA2B0C4D7C0E7894A4F0C823C6C1922CF9DC -10E05600556F1C7C9AFB33A2DB6F8730F70D6BF94B1FB0887451F2FFEEF3584F -DFADCFA9A2D4846B8F0E51620E1327D994CDF973B837D10C90FF76DE22B47CD5 -EE3183898D156861AB4DFAD34A1E3FA260B8164E6680BF58413A553E88F6100B -C4F4E8E972C81A5F88A7DBCDC308B4C3581BCDE13877B976B1F84330839FE5CF -C78551620EB803DF94A5C921F8EE24F7EF8FC4C3E1653514212631F54F90E3DC -E9EAF96E998F340C4F729ECF7AB430FDB7C0BE3DF2C0D23015820E28B743CAD7 -7F0AE95413C3EEABBC69E852F53EE1DC260D7F1E712BECEF2F18437DB23D8E74 -2902AAFBC733AC5BAA452DD6F3671859AD836C8564E99CDC4183D8495AFD99D6 -1F0D65B6588CE7546717911E25BDCA6C2649E3A7466A3E2DA7C7994A30AB4449 -672EFD00632EFA8629C1AFB7D53D801028F77C864869FE636213A69173003EA6 -BE1ABA95EB07B13D1594BEFCC95ECB0A9CFA9892EE0677D6B6C250855762B7A7 -8E4E022640F93169DFA0303A0D5E73BF3E0F4D4AAD10FD7E4EB20532BA30371F -E9F480F9513432946F9828AFB5D4AEAFA5829B2CB544E5EB634C4537EF7DF08A -A1CFD94A52DCF0E7CE4C5EFFB01E6D50558B75DB4C8D5512B06080F27BE62E01 -2EEA6A0357441401458C842D3DD4C35B8F561D816B336216CE0C14BF77648AF5 -E33912CF95872A1E1AB9A18980A0B29A881D13397C15E1CBA5D3E0B27943EBE2 -F3003D15EB446BCFC1C231832475D5B7AA19E4CFDE119D6CD62D053C6D29C333 -5F729791D17B3F7108074EEF4D1BD101CB33E01004532CB0D716D2E54D169C6E -80163E70C0E9081F31A1ECBAE079D2A518B790B0CB2CD03DFD034A0F4788E800 -B0CD2DC1FAFDD487C2F381EBAB2A2F3F3AF82021B211DC9CD2FBA6A1BB3D4AEA -4C7F3D9A5C21DFF284CCB827D205A69638E98D5DD8E36AFC1A4481B5CB2A2E8F -D6C838DA6F81990F5ED928DC7457501B5C979FF4CD20A830896A460C5DB13D56 -A3B2B5D9B292374A9BF392894DD99FCD6A1E655AB395E839F074D1596488700C -4E2891C8AEEF66568E82A8B826F9A28FF84D4D9BDA21F638EAF96880B4EBE0D8 -081982F34831A03BEE81FC177700C2360D2A48915EC40D5FE85B400E175D5AF1 -067FA0097904FB647757BB44B4042D30D1557BD0F7922D731142FD682139CEB7 -58CA4C8C240A0B86B1888CACC507E24E04020BF1882BD9B4CAECFA97DB24D7F5 -AD64C69454027F198BA35881B94EE9159A2D73E450C3BDAED66B886D6DEBC84B -653E165176228F88993F12A170775A8D7038BDF2FE8DC1F7B98BDC02D1E6686E -9B834F6C0AD90780B17DFE25F0A4E470CBA84E73F2D22BEE09A040F14CFA2C14 -0FDA5A5149B5FAFFE49F55EEFC43831BC43A8326FEE9C7F469C0FC3B000884FA -41DA7318EB57262CB96FC4EC7F16CA07FE1C3BE8C2DBC8A8135953D6DDF20BDF -75A2B6D26074FCE752BD32FB9F5CA797775E8DB9BB9786B469A3CD65A0D9DDDA -C2A166E454A94860EEF5B5C12172DDFC576A03F6E6F8A735FF21A3E9CCB4CAA1 -3064893487697986A42CB5888B2B0A79FA3C74E8187BDDF7BEAB884B70B8D4AA -AC6615745AEB906E08BF831CFDE222F58D02B428D55E9D5A3CDE74E42D8A2CB7 -E1A3A9439B678AD438793ABBEB72B21C58981DAF3EDCE4BB93D95F4A1E943BBC -B3A012DE92FED4F232A3A7D60CE60B605151F9C7C18A5C653E5D6D15E5B49A63 -73E7A339504D0ACC74B8B116EA88C3EBA2CC631AAB29F761E5F062966AD2FD28 -7FFE52FA8A115DBE23E471094FFB3CBAFBDF11B7E9058313F2D069B2CE98A962 -64645738F02A31E2F2AC11628724034ADBCEE012721EBF0A567893411F950410 -B20754A7510D041FFA6144AC9CC46D846B82581F20BBD001D34D9764010824BE -61C30D05E5C5D100A24F1917F01799CF5BC4E50FCECFEA732CB50196825F0E08 -8A1EC868C6D4357857EE2957E081A0E4372E31A8ABEF23C3F2EA0FEE57DE4D08 -61C570175C41AA0C7A3A579ADF593F18B4AE3782D2552E4E0759C32E059EE741 -2D8191E381731769F6648B3581CAF11DAE46471896666F18F02918B0860BDA3C -BD5DE777672447C23C62ACFC2611ED5239D6A266FDA6031EBC5A530C1A2FF7A6 -B4380B9A4C877267854AD1F1677CB5433F28894ADF93D39EAB94541A8D232E08 -22D082D0951A60F62B87DC028714EC74133A4D65F7D0D1296C0E189C4A42AA98 -28E8AE7ECBB9FC8DFABCC6EEB1E9FB06227F90808EF31331CCC5D4C9A6182181 -047902DC9FD0444FB94B60FC74F3B677758088CE6A159D940C5CF682335E756A -8BACF06AD7225D49B0002392C889B0FE2C71311D2596F4903D12FA20BA2FFE25 -A0804B4BC282929BE31E0F46B34532CB5795A65218CFAE21F390792DA67775C7 -B91A2BF4C16DE4F6551DAE3A5827F616BE9040EE6B1008DA2F99A01EF66D697A -6CD1A44E0A15D1F39EA8025E886A68A1E9C334327C7703EE721E497CA924AC90 -7723106D913C5ED4BA4FC743CEA8D0F5172526107DA65775C0B1B77179D336C2 -9B09B608D80B1A1E87CA1A84A833A00D980D919BFF56F6390E9D5B45E9935CF5 -E69D003564462F750F7DCE02DC23CC215A0696B74D8BD3156A392A94F557655E -00BFAA035647568ED66157FACC585E411F7F428569C147DC43F6E4FDE693D0F3 -9917BEFEDF61FB980B85515FF6424824E2D995B05CA1E5D3E8BD8D3281DB7CE4 -E54923E84058FFC0A8A2C491327D0F87CE4C352B724167CEE224DABA3B95757E -4A419594BE4F92E78BA6D35D4C93D31ECC3134B24A45DC32445725BB044F09A3 -AA8C31EFC0A2944ACE2F2CE054CF24DB350FB3C71115518C24BDC0F7E54250AF -9D3378D38480E1CB9029F31570C619A28F065CA4FED5665EDB96712ABEB33B9B -4232C00C1B0215F08D53F7E430887035AC25BEAF06942FD1B6C442253C887AB7 -D694C1A6115C8990B4CAF1E81DD1FDDD6B03C00055BE956BE7FD8A4E1049AE69 -EDA8593CBA8C4A41E046C689FBBF9F1B64E5856A7FB1C61EC815A56DE2A8ED33 -41F370B8203D4E5B19C63AE9E6E0D26F4F3814B5AF48AD30EC9B8402C941FDD9 -722FCAFC638FBB835F83DC77F93D367266FA7DFFFCB567EF82B1695AB4D94D09 -B18AC041811027229DF431F5CB2BBF6ACCE9D500C8F075A74590641C1A607C56 -D2B8624797BCD9C91C3177818691FBB4744EDB6056464A0B95B8D63F7C22309B -82D6126E2057BCC9FE5566D96B7A9B201A09B0D3252A5494C8CA2C8BA8A13C29 -37EF2A882D61DA708C279F663D88A8E2999A0F3B6F98C49901A7631BF7708B67 -54D0B4C52BF4BE0DA0439E6763A7C9D639AD4092E77B13D3510DAE1475C978AC -796F9B2AAD3BFF35C5A3E19B5E2BF704B3BBDF68CE48BA4FA2496D60E58888EA -28AE12D00E9F0816FAC190590A865BB58569A91BF0345D01230ABA361442006D -BA2C90EC2036BBAB79EBAFC3F217DBD5854C519235F9627A1C3C71D21ED38AEF -0BB40F3B86BB9F09A3F309473D8757AB7E638DC1C59A7F9BCD49DE4107A2E54F -422767FB94048987847205584309397F554744690ACFFDF5902FE5DB355930B8 -71863217830DD7A563B0B3A4025ACE75B0E777B4414B62A13B50C54E0E6D47E9 -D43BF769B9411B74E1069BF71BA873B4B8973EC9BA492A5DEA58D267872BB246 -10AA67B143D0E2223FFB4991E583E629413CC894C3FA4869B72D19CE1A0CEC8C -0FF5E5A3EC1FCB7D3C4289813F0D249A11B55104BD60B2A89BEF44CC77CCDA9A -065B8B83B4F4253AA1D535290DCFAA4773452D110D2B3370F9E2FE5432B54A9E -644EB3BA9BFF62347F376839024CD5EF3C5DFD30F412DD5474B7933E6A1AB63B -4B12F2417C72D0543C26A263AEA53E5BAEBD67E23553A72E949DEC556BEB5D09 -C4D7A89B14FE4EC68D0E3E9D65A64B285E53590F418EDA8175113CA375A29930 -DDCF4C71ABB26CEB800C2C2B253AC1F53651C88A56ABE5A74F3B54CB4FFDDB92 -60AD7272BA25EC2F6FB759AA6E1E7964FB55AD09F4EB25DE45FD01833947BD05 -6266AA8ABB7DD792941C7A070FCF3A4636FBF8921C70298D42FE92F079DBA2AD -6149D9CF9EF7264DE6DFCD4429949B15EA90B596340713BD61926DDB2BB23BE8 -F9DE38A31620A817420A245946E551463960A8C5C7295E3B3D6A59BCDF5E472A -40B7A2CDDAA43CD8AAFC411D037142579D11054A903E102DF0D0C7B5BB854DBA -F3F086AF991F7F5D5C730F8F9AF213F25786F3EC0E54530FF912F4876FDE16B6 -A07D0DC4FC46EC6363BCB68B83ACC448B801EC43FDD2F8BE0E93D809FF81E38E -176AE17C67C85FEA58EC95435434C49A950AA955D8B20989C550AB1F1C31B7FF -99422E1F48FB7D6F327C6DBC4695A03903DB275B94CB39386E46579271870A25 -21823E75C377E9D5B46655E8CD8F986372CF8BA846423E26582315A9D19E0BF5 -305C32B2A0EAC3ECB275B1D8BE11A37ADF524944219D94EA2C5DBDA768828B6D -775DA8CDB09E0570E4ADDF462EFD8D3FA3F86B1DEECDFFB699AF6507257C1879 -16FC615868C2D51F03CD57BA38D42995D9164B257441210084DC409B6EE4C119 -0B2E17B0A8D5326DD0010E4A325D5F77BF935693BC90A00A28C7B5F74817DA39 -F47A41E32F4F92AA04D30D810F7B1484EB53AD8CFC8CE8928B570314E0F713F8 -AF127227190F9C16BB73D2A217FF801C391A29095DA5E4974D137A0CAA7DE702 -E20DD4755B1D78739756A5E7EC3542B96AD6844199FFA2F5F2E9C64E2DA4FB2A -ED79869F745C59D235438251BC2E6D26112AAED20E06021D1AB896EE1F1DD2EB -437FBD4A25E42245C5A647493FCC9922E6DD7AF57D5D482921D1CBD6F0F02949 -C27777144751C1E72F4EE2BC343D4AE7A8A8758123B54FB1A026144C643651EF -0907A376945E19A8FC7F98A034832A5820A481B0823F980F59623E0511593FEA -BDE6EFBCC0383242CBD4954027B075B21F10472059A480D6E5ED01C3B07461CE -9810251A5C5643EC7403130C2246E8616CEA25EAC7A0076731FEA8CC43BCE3BE -933FCE61067F5FD402E67E2B9DAD954AA77C5BC86BC5E4BCE2ED676D8D8EC7D0 -ABC5C86D82180B9D5D7451C71B5149B6B67883578DE9909317928C0A92E3205E -F23015400A1763A6FBF67FDE3318AD2696685A1832FC31CF38589EBC7CA1C818 -60D2B2211E04EFCCEA88D9A9082E82951EEB123924A267CB03C48889032F2892 -4227E217FA28F87E01CBF27BF1EA60641A4238258CB7AA355908FE36D90F5CAD -FE992D03A33E47CA9AEBEFDA57793F39DC6A9E85D5B289F6B862B35DBCF82E43 -5CD6A862F6FFAC36478C384C3BDB0148CB1FEDF55969C776E77917635B5A65EB -F2AD351D21CD3822D43289FE8EB0FED58182997097C7E9F4373553AE1CA92083 -EDE3BBE6C3BC7009D15AB5FEC6A59E9FD1BCC7B2099CA15FEF083B9CBF7B890E -CDDDE6BA0AFF306C76500C945DC91BD533FF9A585CEEDEF79238C54E6168001E -26FEB29E523EE501BFA4F60B782B1499B07084C35A2434B4D29D3D8E2C8F945F -A9922443B68D07DF7EAA1F4CDEFFC438B597D8943E231B5216808A85F30EDC81 -9DF5DD22F54A45335B4C2203887475F39D247F0E7347BACFEAF220ED82F9263A -6488E73C1910023E505FDEB143006C1A351D441AC57F9D52D2C6D63D78C75605 -999885676BBBAD56074298E0BFDACBA1830BA58E87F436CC670EE8EB1870154D -72DDBBF3794F8CAAA3F1E11DE29752DD99EAC695838A19BB67A1FA3829B6E0BC -5301610A0351AAA749F456AE31ADD87D6ABADCDD1FB3CE81C3713F48780DF407 -530CB284B2AC709F52EE7AD647DEF9FA4D2A867CCEF728F3D40CF34C28D21527 -10160B3DAFB5FE16AFC9D36C6EC4021FC189005862082BEA60AC72B63AD27D72 -FAF3C2D89DA2648FC4C65104A069212D87144E8533CD86A6D73DC7CD9DBA25CE -7DA53B000266F3871B24663C77723703315C5E4A89DFCDBAB384AE7EB2F455AE -AB191FED406F7F6EC9E5B8276EF5C4CBA041AC7E8BCEC7CAE840154BDCA3232F -15711ABD1E867A434E9787CA0A6D1F197597DA27ED2402CB2D84ED082E8D3A39 -81E6EB270DCA4E7A90E2BEBD3CBB3A2BE3CAB926192D7292CC16845B6399A543 -BCFD224BB52F21352732DB5154FA3442733066CDC3E186D8AA97CD801DFBE43A -116C86889BE198DA88CA978B8C40ACB67E8F7BA499DE68A6FF0DC72C3D00BA1A -B378B39610F15CA026F95ED8155CE3FFFFA2E2FEB352DBE14CEE1669F2387B70 -55B91185FBBED764266215D518716EDA3DFC9E5DB6B148A553E75AE5E38E1CFC -6EF47B314D54CF24BC13856F4F7C976BB91D143DE32FF49BFFC87E17885A1893 -BA1B8E441B08EFC04F7D103C1FFBB665194B3D0920473740C55FB1C50EBCF717 -A2359B687FCEAD65616EE89A68F8D91AFACAA0B238EE4AF0279AF5BE5294C3DE -A7E1F5E6248C0210E7D40683F04B12A933C746ECB517CF94BBCC6E4CF49AC715 -D8005AFECBDFB7A6B417DB8A28F8E9EAF39CEC1CA64DF37A5E66A76C26F721F8 -A63B003A040A62F87DCF61B298F960D510BEFA453F118E59E7DE8CA3DD002EF0 -127EAF733D5C61B5132348D280F84D159809CC71A3C6F7373BBFD8D6EF715D34 -0016DEFF14AA5F960BF1BB9AC304A1823722843547BB4CA5EA4C41C6C2701C8F -7BDC810443F9DF34BA469A3260009B799871BAF8523C8763544DCD0B382D44C5 -F75046AFF85F0B5A3188C2EE786CEEE5496A5AF4BCB0B429CAFC403FB983EFE3 -61FD9F52ADFC38E07A0FD7BACBA530D2E4DAB2592AA9564843E7E2305047F060 -C5FE4243FA8FDF1B5D4F61ACA7850A604FBC6D6970959752695C90F78961B4E2 -C8CFA41082B1A37405AABCEE5BA3DC2B9EA76F486117B84728EC6D8AE6379CCB -402C2AA89078EC992C00D53151E9D82C65643F549A572A20F05107A41BE5AC57 -833F7BBF8C4C5850C1FBDB908D03DD674C4D0ADCFE9C9883304785B4B8792B9F -7325ED107734B276D7DF57991AE7B94FF5664A8B29A0FABAC6434AE218DACCEA -D910D8BE7A6B05F0751F9A6B49626C86CB82D9461E82A63A9A4DBB20FE472415 -598E1470196F65230F7B80B54EBAE48FC308F9C0A6D60143CC3D5576671AC712 -D8F88D6471E5408C44554E768203021BD7214C2234AD81C620ED2A12432CB1F9 -F7CC85EE25AF847626399CAA221DC09190CF963D89E1665C5E2B6F92BB55E3CC -795F201D9279A9D6B2C5E58B87A9C9E3FD107CE0C06AE18F8C86EE27886F4E50 -6E74E0EF1A8B1E75186521796C67111D5B173BB16A5E7330400D99CF9C28211E -FDC800BC1C72B3992892B69995418C5FADEC75B678EB54946857D2B73C430F8B -4453028981B19EA757B0C31F987BFC0BC58D600D8479F876CE7329159338E264 -CD967AB1A90D6B291582A50DCA2EBEE2FB93E5745E9447436C02352AD9526D65 -4D4DE384986A9F8ED388616804CD55212CFF36FA417047B50DA5004F0F96FB66 -4CD3B629D3E432A512A5FA3E277A623CAF1BD955AE49759181C384F15755D7A7 -B9FFA0E6E56017BC9BADF56D96803FEB8AB8FF736ABB902D24DC33942CF1CFD7 -5C86E2459EEA01E09753820DEE67143E5DA718A96E78E95F2D641E97C2046FBB -A597958F2592E03125EB87DE90AEB91788C69AE68FB74F619058604A03CAD4D2 -05B7DF0CF26B197DF8B7F920C2C522094F066B8BD6E376E34253616C6D646C75 -992E1D9BF781A8896093D10A0F4332E8682C25C7746A7BDF9B391587B750F8C8 -1C40EAA9F01DAB6389150F7E163FCCC43E893FD6943D0EAFE9516AF77EA4BF02 -589B476E19FE361FE6870EF221111E04688B3738359B2328C677B547BF90AAEF -EC9C6992055CB8E1E85514220D44CB3AA27CE82A26118AAF91B2537A63C08B50 -85EA399F24FC229392BCC488A6564E3D33A0B38F6AA3AC0ACF343393213DA905 -D7EB3AF4B12FAC6A5BDF523A4C5278F3B8EC20DD03E06E1C88D21181918D3BBF -31C5021F8662BCC3A79F551D8A2D968B3B293D6829EECA6331F745DDC3EBCCEB -D481C0EE29F26F5DD38A154170DF9F88EFE69CB416CB877ACE6E24A18BF3060F -DAF88F1A44102DB04EB64950F21BD4925E20E1F9A590854D1281775B7496766F -51EE65ADD415463F9DF56DC7FA41F0B4A41C86FE75F861AB2B180B7DF7BEFB32 -65C5ABCB6A26B3564EC99FF35D0F14906A341022FF2636AE7D1EAB6C0DFE596C -02B4E69CECD61D93762967F71B4B22F252678E0EFE6C26F5142BF009DA811483 -90947E86BA77005B554A969C3A9E57704CCC461A9E9FAB672993214F5EA3F0DD -6EF77D7A2CFD101B1CE615DC1480BC756D110A8ACA2369797B9A6CD1B65F1DF5 -FC989897A0858007E9E8E4915C05A97C9ABC5A52C0B5FF6E067225D7766B6DCE -4561C80D104AA1629D6BC7F0B9ECCBB1EAE17AF059F51BB4C0340C7B7CF387C5 -20B90941C81C0A119AFDB2ADAD221FC1503C1AAF59C9419831D92330768FD49A -665A0BCA040158B21C8FBFA6BA0287BC1B4E81FDF97AB0317CB3663600909DD7 -38F8DE02BB8A47E4DA2E95D808DF9E00BD81196FE2557E84759702C983A64CC7 -8AA5C4BA1DC8DE80762D297CCA604ED82280BAFF196AAEEF94E904A9EA7A7E29 -BB8624583C10ECAEA329676BCED76000EA04CA1DE10985F18B2E4788D77CA957 -AEB8C58E6246A137C6BC4653C4973DAE63EAA24489388515D06D1D51E741D895 -F9C6A54329B1866F75A462FCC1065C15BC715BCCA1C84098AB452F2E83CA3872 -E151AE6FF78D1BD4FBC62E51BDB6DC5A433229A0686B99E8F3846A0579F85689 -CEFDE559B16D8EBB79C8D20FAC90C6FD4DC53A7B7FA9E2CF7C92DB769AEE76B2 -BD4CC20CD42575104EE1FA6A3F95FFF43A5C4F23F7E86B690901CD13DFDB157B -6AACC0E9DA12D854BF28B4CE42B7995C4400462244A8F5C53C4E5C868F32726C -CD03D90A9C618ABA248CECA7F2D34171747E2A01FF43D7B95BFE7364596F7A35 -22CC94179DE8B5352F3476BA0E2D488DB58019E165B381F6981446E5C18FEB50 -6825C1D42A08DA8440D9F20044717083F84960ED6C48371DF56E33355E2E60AB -D3A9FBDD1656769B9AF88D13D4783C5D54F85DD21D68EC87E2B922DDB386AE9C -4F392FA86BED66B85C90BA25FF27CE37687A55850CC4E9F29A24330D3A7685B4 -36D4AF185BD7A62B82DAE0BC4E33E20A6FC5D24AD14FC6E7B59EFD3DB16B0B64 -E4AB3B1DAEA4F3F52F9B7415791CFC39522A6AA1F702F826CC438C188680824B -9D3F443B69AC739DE6DB1416E48F023DB3F75BB3C330297BC82903B078A76F7F -FBB8CE1348D537A4E62C3C13FD66FE6AB9CD528B994AC67A32076FA9AFAF6ED7 -E02CE7FBE39B43C8F967FA62EB480B6A248FFB0904CDA3E4A715D22B9A191426 -2D92504213AB7F3CA8957FDEA3C0B333C33F660BF9A0E600DA95B8B7EF42216D -EDF8C46232E6078F69FD05D2F05ECCE0C41648BB873157FF9365167B92C5B02D -5BCBAE8A072ED198B75001C40F6A3FFF3474D634D338835B3B74777F34166F6C -24E0D0104449BE54EEBE6640CC5ABE956F6495BC5CC18EA155470E8F99A1DE86 -E30189CA527138E454CAD4B222028F27768EFC0B699A8A7E3D9DEA10957B3F76 -6EE106C676DE7CB1ADC74C3B455B3C3E0F7DCBFA38F65FF000BACC1DD062E110 -2A5411BBAD94AAB3643547DB709A5A3181F85BEFC0F0F81B9BCAD0DC1E14A7C9 -CAFB49EE08D72EE6DA29D24CAEC74F8D26979149583EB32BB5C045E0E6D983B0 -D15DA90578918DA11F587B8102EC1725641FA323DB7B042AA7772F51C9CD8BB5 -3E7452BB6E73C440D0B7907CFB075584AD11CCCE6D24741C71165918A5B82FA4 -1ED46D3C8B4F2988692936D04905E7686DF03F80B2F61D96B51988841F50DF6B -C519A07703D1A1C3C70A20269686FF5111CE9913B6BD2D65629A07BCC562A4E8 -3A4656AB5463417A5F2A3B07B212E29F77781469AF4537CA5D690A655D5DA181 -6445F97B1F16A08250185C6D5103BBB132E90ABBAE2CB37B82DFDA683854D5F2 -D3292783E83936B36B332A4393000533D924CBA16D3EE3B62C70759EC05FD987 -0C97076ECCD62C61CD2F5F2081A71ADA302C1D3F46A7DAB70834E98A1442B179 -415794662802DA0AFF54916C2D4870F39D0E703E880D1AFD4E2610E2501BBA80 -58109A9E707A282434D1AD221C52B1BFFC8F3DCF0B32936075EFAC864CC08DB8 -A90C9C68361DB7FD59B97050D6EE96FB83DB39297A5857AD41B1B7B32E3B440D -EBD668BD8A412295D325215271A544FFF91736D25392C2000B379B3093252DC4 -48239915EB77272C3F95B43665CB97DD293171F50ABE506E8488FA7105D8A47B -83435473CD6EBAF2292A5725169D48DF08E96F5FC3EBAD5848F9E6AEF5EF20D7 -8DE44C6C01CC1B4CB16A94024BBE96DF9FFC3E1E4DF8435E64AE6FD246F83EE2 -0298F1D7C1390FE13B974ADDE27CD95818DB908B8F049C7CA096069A751D1ADC -43C74BEAFB51B7823BEB325E10AC74CD5A907045CFF330356DA96A2C5642145C -0DC902847A1C9D581A404E7602EBE4D92A4E7C0CC8FD0504729E78C37BC2102D -16B2E4990BBC7B163729B18F533E24D420F8F29598C1B48BD362E49209D5FEE1 -6159864E0DE73B45B61386751408764D6716FD78E1696BC3458AC12275D4D065 -1E075EC213ADE4FC53761B52E0B53BB8D62848FDB790021CCF04CB8A57964D5D -58CCEE948B805403A784DE5F63E4F7A2909A9E5B26F25B00F335F20CEE97857F -5860D68E602B8AECBA14EEC24BB26DEF1183203685A0371E468D10ECDE079AB8 -464EE27DA225D3EE008BD55C8D042B4815945F34E7C5597D536D80B7958E7B97 -BB575430065E1BD8825AFEF88369EE338DA180866C8F100B4806FC9794855879 -D28AE203223A92A941A83028F0873D9B6C28A58241841596B590C547455ED5D1 -63603A6E637A4FE5DE7FC3876B869794839B9EB98E20D4212ABAA68E43179A94 -6A35CF5AD147B5148F20045F5BF11946C38E76B4DF741BAE8663E57C030D7D21 -3DB928111BE66557F19C3BE66F6F65A1AAB66D085EC5767F057D28D540BD6FEA -6CF387D5A22DF4977ACBB68B31FC401C6EF60E1AA46926AD3CD20C4C0602F15A -4367D6CF5DC457C43218C54A82071C8901ECF549B74125A9A11CB5A8D3D5C980 -24FA0D91E3CB11913D36165F25878A8E1894DFA510EE186664FF08B5BADA9E7F -8153850AAFA5D945ABD6415DE29194C72AE4B71D40734B206C447AF549A6404A -47A9B79CFC8637CFA69E5CB0F52766EB039D867D2CD3B7CD1F723E50FB21D671 -0A82BCAC35481AD72268CE45458EEED3454F9C1A1C82A664CC14417285FAB805 -8B9E83AA241C62F98E1CEB505189F9E8AA35F3DAB3B019BC35455DFCE8EF5A94 -FD6C54946DE4BE0D747FB6124009145BB5D2C8336745F39C66E2ABFCD7A83724 -1C1B1D501CBAC3D460E9C75052F660AE44E9DD1061AD361535F4EEAD65741B12 -9FCEC9B52A03CD06AD16E49B27DB27F7C3C1DB323926DCE761EBD7F4DCAA3DFA -5DE34AF388FF76100053EB35B9764EC8B7CF68176A7181B5FE6F80910D33877A -78F9D258F97FB5A604FD7101EAEE89A2865731C189D8AAB00862744A8052FB1B -55C957EA1FAFF8AC09376CDA3622D1E67F65D05F11A0F3912FE2572AD3F8B612 -EA2849D8699B206E1716B1073220F90D434E9F5551D00D8126C2A8481081D84E -D14080F6DADB7F4D0FA17A518859BCA1908746DA83E5D14636A6148206428DDB -BA89F9D2D1C718004D98010A5C56DBDA82A289CFE6BE8B3E37D704EB42D6E43B -FD8CAE6C85302DC1C98C6B14B36A7CA4D2FF608618AFB2B4AAA8DE89A80A372D -F1FE7A99F7F4AF835B305DFD802E3BD0A63C169FE9877E43C06A892C3B6B468A -C9C92B4E3241197D11B60F5EC49FF4C4C72E091C5A5966289FDD4ABBADD5D3D7 -E475B4934BB5322956A35C50EA88FFA3DABB7376E54E9D8899A22228C523F4C8 -CC16ABF36CFE30978D0396E85EC3056152A492CDF3C3A19F1633F32B6B2523FE -3229F9942CAFBBDD9B0B4F4083FDDF64701E859D45F35E20C555F99B7D533012 -E7D050658CDCB8498BCBB199A4D96C5333BDB77E4D0BB5D17B2D211C0217BEBA -0A423B678C64F1D7CC6E85400FACB0B29E197DA781AA197E95850C66C38D1CF9 -0A0235B74BDE5FDA26125ABFB3E930C57FE381D28BCB91269277336C53186E8F -19E89349BC4E1D7DB4A236FCCE813F2A01D850B6DE6054E882EE083A7DEDB9D5 -1C33025CC5B30B0933923A6DD546F1685FF54EAD3D32B612A7C8A8E979355400 -0A8756BF2F57887B238020D2B0A417852ABF09D9A0D892EE58B97868E91174F4 -07B40FA12845EF4BF69A8DFB730D75550B6BEE3238AECD48A5BE8BFB14547D6E -481CA7908F373EDE86F1877F35C597D2110C84A6A4B3E64B110E6CD163A3B96A -9FCD6243509CFEE665465BE95DD660FB171362B3551FF735D58DF86D94F961D4 -83D7ACA8575F69DB6AE6EEDD7EF8BDF160CEB55497C9ABF3DB42ACBABBC45100 -E10405D396CB9DAB8DF65E8601A46980DF746D48DD7FCBAF9E2415D414DCC51A -A08E4CE5D843EF553AD33118A6D0A64B3A911D1306324F885634D8A65E6F357F -B61E962289442E3DFD5DA068AE74F3AB692178A9D80130F44803D138396F36AA -DC1F95E77E82CA2393114ABDA11F18AA26820C7EFB2DF984E0662352F8063E9F -C5C9C81F7B224142E84C6946335518EA6550F0DF9C7C63FA555F28D4700623C7 -DC1662EB3410AB95E31F7B0A0AF8CDF8EDA9E3D382BB5EF6050E1B96D1D4C3AD -1C93A482D96185D413572CB03765C37D50F5195D3ED8FC61D143A7D72D872ECC -CE1D8D9CA0A9FF3BDB64B7773B9B49714136DEC95BCBD3C1CCB8FF86770D9C9C -86B7D7B3EEDA7B21ABDFB925FF159C7A4C2986DF7AFDF0445EA3E09876238680 -A5C83B57B27397190670F954F5336647E13CDF51686E3C03D9111182DBFCB335 -D97E43367A867CE0F105C88488379E88D4314DB435F050420C025ED915C881C4 -F16011A0AAE1D32475488D66B2762AB40656426576524BE5E7720D9D1984D95E -5B64D9E66FB960BDB84316AE17175A31BE184F823D1CEC6146F9E666284F8772 -F8E6B1AAA77BAB8DC708FB53BD0965C03771365AE8A8B4A610416683CDC421B9 -F950D5C760CB11D80F0B83410B6FC36957D35DE9A6D9176B95A91C9E4C3EED62 -D961C39D26A253AA5A2A74B9C528FFAE71450146F0CD2065E2D7C06742806620 -3AAD0B1C486CC62FA28D131392392DDBA187B24F60BF38C89F98A15B28C2B872 -F3AA742645DFA0B39588AA9EA323F73C5760BC6F3A9EE18E9E640C4322040406 -AC90F9089FD2A2F41E85D2FA3117458532A9A9182B9D33471598F1771E3D94CF -D00DE95A7370F76FEF4F15DDA8EC789BDF875D042957357B8550EF41EB96EF75 -F2736D4738D6B9A209D26868ED31DFB81A0F0B482C1120DA5D02B10C52AFB638 -8E8584EC145EB8CB160336FB56C0E6CDD54608D28A3DC196C96D2C14157F4513 -FFA37E4AEE25CD0CBA91B1A79FB0AD70E229FDD532942C01774CF4E8821186DF -83C68BC3FCA64AAB08DB3630477E028CE027B1E7718D78C010C4BC8CF6057506 -8FD212FAB5D0C9E343A0934F46F0FF6B59B7FF2F93F5A991D3B9457150114715 -802C7AC907B16A21C11212DBC362C10D01A1A10CC0B9756974EF0FA7222A1C52 -4DE1DD724AA70EB1B9C02BC69E066C0CC821F2D67FFBDEC0322B7454FEE52CC6 -5DF564F57DBB788FBC2470C36E379518FAF36BF07045D69C641300FEC69BBFFC -DFA900413DC325DCC7A5991BAF8004032F692DEB5CAE7E414BEDFC23E82924B6 -684D4C13856793AB5757EF70AF2E6B240DEFCC65E50238D77745FBD27B53FFA5 -F0277144EF0FA335DDF914BF90F63F16B8BBF1669E512019CBB85DD9520940BA -7D22EE89A9CA2D30BEC0090B431B40D7FB2005A0ABA8278EB74EE9C194473FF4 -9372753873F5584AA6CE0F353225A17D46FFE939A01E3C552A5A8A5C3328F315 -9E666A7351E84D0B48294F98928554FC391EE42B18BD16683AAE955C5F76DE18 -B429CA14DF7939BBC6889DDFE254FB7762C2C83875AD984AA3CB358989C64E56 -427FEEB273273DF16D1A267FBDA8EBFD56E08DBF41557518086037107F01113E -ADA7E152839EB08300C96779A2AFAE943E30B4B31AEE34B4CA851920B387910B -2F26B2B4BB5B5A3B72512F65CAF4095E01A87E502BCF8100B00CD533C7577E44 -E52248DAF2B66DEA839EBCD37E14575626BE17DA59FD9FF97FD0DF4686BF448D -63D9937E404C53ED366D2CE36D64EE6A6E1930A0AF95B0B192FC33F04757D9C8 -7103DBBF0B1DEB49F38C7FC7CCAF9AE4109BD4BDB97754D10E860DD7DF420B8E -2389FC919B6C381E6E0E03020158985EC49ABDBFD726809EF7F4A1835BC08AC9 -94CCCC2BF0E215EB64F095A3CB407B6766AF0919B9BDB13F833BD3F9FE3CBA2F -F8C495389E2E09BBF2DB9FDD57BC9DAF285379A79C77A05770715A7643D8A207 -F0BFE40E995980A3F9933C0A9E1A3BF5AA5EC74752D36F1D5BF04ABB67790307 -FE3245C738CD2CE3E0BC7D1016A597D385201BF0B903E1524670053286799C2D -15733637A45BF71E77B883832C2B2B2E85EF775763D329618C1E2623A9F0642D -DDE7F0B3F1DDB2FF1381B73CB7D605B6655285A6B0BD8C73BE872CDF6388F43D -3455C9D6F70B7D1BF9C329D344C3D32423F43E23EC950F683A6BFB9FDA1A25B9 -BAD1F6758F3207B69E17A870ABD0D353425A964ED374706E1D2CE029EA4DBDB1 -70D1052B79767C00CE74A16818E757B2471F4B7C66C37C075DB29BBDC0CC6977 -CD0B02E72B8D91C7186E75AA38DA53BB1B089F05A189B080705050ADA97D3945 -C480621ACE301614EC21D3FB065EF7D724E910D651DACEEC1DCF51850EE74AD5 -759E3AF3A81C418BA7347B633F1C285A47217F6B2B9B9295AFD32DEF6E9BAB70 -51A8363EE9ECEF904536F9B8899C122C62BEB13C616CCDFAF5170E2E987C3446 -267D2CEFD8BC432268AC9459529676FC5F93305AF1461524485AF2960A04B6AC -AA00BAEF0907F36DACB79DB3003EA756178E2E011B2E1DF680BD329C737CC800 -5E3E63C17D6571F3B22B69418CFED6468E9E8D0C7D52670D319E2D86BDF834A4 -FFDE583B1F7B209DD4A85E6F7A258C663B7386D882453BF13F1085700A9CDADA -628B1CC2E69A792BB40CD9C98D7AF768B0F428187524F864AD3E89E434C558FF -8BBC5044249EB21E71E40986F6BD7BE3F611F11339CBFDB08B5CB04DD94B4C39 -4D87C898209D827750DA7A51C99AAC44543ACFE9270CF62FEFA52B5B29C9D73B -2DD0E3C2196344ECE080D24B044F0E63B1F969D77FB458F0D6397510C7759310 -8B0645BDAAC6E10005DF53F59C0F1988B5D128EE05FA3D1B72B097D96681A771 -13A9D16FA21AC74357964B5D6E55497193865042D02092A10210C880DC2B0281 -143DB5921DE8EAC56ADBEFE14F4DB0A8CA6E817B99187C0A8ABA1C54136F4D80 -C217E0E6AB100CC1A7F33B33ED31BB6007A90DAD22155E9BA0B33628DB429D39 -C0B0B9E6331B93C0751E2C7B079D576BF55D69F83936795E9F3652B7A139D5D6 -D85E73CC6A76FA15B217748B3A7A58C961E40D0243F26D173B8F474869437DD8 -EAA03B88809FAC7DC3706638E79BD627C61716B4862BD5DA5D6BE4E09D835B47 -71249BC09203F5992A068FA4F242ACF5D4033789A80D71091C550025D9A66D5E -ED45FB3D9626BF0D35DA8870A18D3A51AE519627A55E220E113B38605614028E -351B70C4BA6DD84A6524341471D0857061A33A0425189A398923A095301E159B -CD45188C646CEF5FC8A3387B96D736F49A14A9CAD089954EFC96FBC1D5AAF56A -61C9CE117262033B2A9FE5BC0176C6430584F8756A80BFFC2F1ADB3D89FC39E9 -8752FA3079BAA57B5D45B71C95F07805D1EE7642D31C755A902AAF198CAC2780 -BDA66B52594D58830459793B16BFBD2FA49037C1BB70FECDEC91D072D7BCA535 -3F6978C20801F0895135E5F2262C694D6A9CF77110A90486973ADA5DCE514A45 -28185DA7DC9E11A5F142E631B1E0D517D7362C12D1A9C69A0347A7F3F6F899F1 -7826E7514CA68BB67B6D0D677D5837546DEF9641C57ACFFAD580638684866B40 -F6F305F8ABE2D10A5148473A1D647DDED3F2C87BEEC81F6F3EEC3AF8DA46201C -BD48701E38BC5E6CF588DFD010CBA45FF523A658FF23EAD45DEDB7BB3E971F57 -AA1507E5E5795384CF5326C49492702B44C3AC7ADB2BA6B75F4FA1118F6B71F4 -406F3250F2E2BE1F2669BB1AB8255415F4AC4ED7EA1B02F3A2747480412BB15B -8FCEF40A84FEBAE4CE559D17F2D2D254BE78AA1A08BF4CCB81A988D18AB629F7 -9FFE1086AA6CEDC80064DE7EB52EA9BB731B0ABF3A10815D649BBA5659F4A8F4 -991FAB4B924B15096882B87105DF33F3684E75018CAB88528ECA243E4B1F0627 -6BFDE587AE6D126732E70B9BE26B707B155402339368CDB505F28E1C1E3ABAE9 -3F3B6995AE7D3BB2D0411126A1CB7938C6FD8A3844CA670D00F44475E579EF34 -77068AA4C4500BE72386A8FC6F40FCEE796450CB3612F2A32E2DF65980FB7239 -7649D97AB49D3F6830A667A8F41B989CDC9E1BCCDFCB37162A1EEDA4113941C0 -376D8451E0EFBD87D79DE53B51E0DC25E216432464EED9CCA8051803B5F08EEB -16E2477037165809512B0F3AFE270D22EFA230C26174F1D6177AA594F16B434F -C3AE8803B189F91EF2724BDE31AD379638D201A9AFDE3CCD536617534C18CD90 -7C7BDFCF04393AE51DE125735AEAAF881194AA7D9781B0A49948B8D5ACA4549C -D1F9491570D763923658CA9A9493B2B71A638164DBA3ABEE88D8B8C8A309C6A4 -F597ED90D78F8B30537DF7265229B9D4A3CBB741496F12C952453B539CDD7898 -D2B4C0A282950F055E49C6CBD9F219A3A03587172B4409DA40B3273032FCFFD4 -4CA28F3954D3D75BE98CFF32DE14CD05E38A3D2E4942216167B05A2579E0E360 -ACC29884E9B442630EEF3938F3102CA18C31042807FE3131464C7112624B49DF -94F70E771CE5EF9B8021070C9E13B64AEC8500A4E55A1980BBEEFEB68D18472A -C641458F8A9F99BE6FEFF592A18309C30B782B72299445DCE6291D07ED95A80D -5D2A6A3737C6BC2AB3B749036F557489CB325FAB32C25FC1689B6D5C420B4AF8 -8264E88EF1254ACDABCD0CB2A9E22A42E1C757C98A2B887E86CC908D86BA0D7D -702C2811FE705E10406A110968C51923F21F487E310290B4CA4FDFE4D91B6343 -C05031669E0699AB8BDD5C52523B63A4CE33C01896931A6F9D7B10D25F203CE5 -2CEE5370BB39CF517818001A3888E1D4F811BE5F5C532BE0EC7571C399F493E4 -107D33B485F45D7F30258AFE57A340A98C1550BEB342052AC114814B92592F73 -41F54EB09AEF20388BAA1CECBEC4A11437D1289554B533E9E1F736D363816989 -208599041717B35BA674BA94DF52CF4BF9300766AD621C9E9F41609AE6200240 -C0C0B3D063D97A054E7C99B1F66B5CE6612084B2AF185A721815AEC22789F7CA -26984B6F7ECBEF53CA6ED1668E88613A8D7C4C42B434E59633783A4D34E724CE -BE311BEF3A88651B1B5E824A8964AE35DD946C3A189F4FD8C4C68BB62F835BBD -268113C5D3F968B63CE1C50F5F2D4E61FFB311 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.0: CMTT10 003.002 -%%Title: CMTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT10 def -/FontBBox {-4 -233 537 696 }readonly def -/UniqueID 5000832 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 34 /quotedbl put -dup 35 /numbersign put -dup 36 /dollar put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 53 /five put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 72 /H put -dup 73 /I put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 83 /S put -dup 84 /T put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 -7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 -6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 -14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 -0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 -3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 -BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F -D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 -FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB -556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F -8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E -F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB -B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 -125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 -A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 -4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC -56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 -E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F -15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 -2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 -05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 -6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD -04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 -C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 -70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA -4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A -A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 -62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 -240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D -69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 -ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 -121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 -0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB -D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A -0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 -D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C -550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 -CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A -9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 -FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F -7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 -E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 -50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A -2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 -9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 -44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE -49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 -385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 -8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 -6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C -EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 -E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB -C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE -484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 -4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 -0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C -6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F -5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C -1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 -909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 -BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 -CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 -2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 -CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 -EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 -0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 -9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A -D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 -21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 -7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F -52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A -FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD -AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 -F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 -067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E -E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 -C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 -5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B -0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD -CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC -2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD -E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 -56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 -F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F -E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F -0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D -67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 -EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 -CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 -9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 -9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 -C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 -327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 -F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC -60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD -A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 -B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 -0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F -1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 -DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D -55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C -7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E -75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 -E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 -8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E -F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB -8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F -D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 -54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 -49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 -CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 -34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 -1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA -6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A -DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 -E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD -4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD -2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC -ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 -3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE -97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C -FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 -A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF -639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 -D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 -E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 -1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E -A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 -F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 -5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 -4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 -664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 -4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 -35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 -1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 -01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A -5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 -2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 -DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C -BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 -39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 -C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 -99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 -7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE -D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 -6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 -5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 -6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B -F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 -E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 -39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 -7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 -ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 -6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 -2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 -1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 -06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE -5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A -288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E -7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F -759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF -E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E -03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A -6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 -314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 -74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D -906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 -673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E -A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 -931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B -CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 -E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 -4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 -2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE -F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B -E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE -E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE -251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 -7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 -46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C -E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 -DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 -F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 -507A8526DB26CE1C7BB734D124EB0386F7AA332FBEDA5E099B626A67B0061808 -B1AA8A9F4E87C682601AB378DCE08184B238AE514B57CBEE38C5A6038B4A69AB -A69749BFC89A1D7FEAAE52BC1DED5C1A601BD2FED84DC323FB5E8CA70DD44E6C -1F7AC9E39460ABB8201AC2684E63AE4120BD0C59EF31F0B218DCA1EC3AC2D43E -99D9499F6338448DFF4DB502DBCCDB5DE90D7BE62D2E2D8385B1E909605717D7 -749578237A043BF8DC51096B86BFC97621B1E7E9D9AE9AA465942C8C19D915CF -C9411456EAE9EF8D735BFB4715B7E2454D0F598F0BF61BA0C8F12AF87B7ACA21 -7066183BDB1DEDDE823DB3427A54739F3663F1D699F57FA6DF197F87C989B83B -302C91EFD4AB856B9CBC75EE64DB790EB35ECBC176CF0EDB8224AF9A58620B41 -A5C8997C5A7CF67EBC5F433EB0B8EB1F74EF96BF18327FFDFADD4377601B1A1B -1A671B75E2999BD99183436FB27AA0787654AB365D4132793CDF8DB09CEDBD42 -C0AA8C4DC3200920305C1597D3B454CD6504E6961B63F20CF6823E66CE60F1B9 -188CB4EE3C3101286C6D10890FF2EF0C37F97DBF5DF20D3D5AE4B2B5C0EAC000 -8E6F3E3F8D082AC5C1C0428A2626AFEC37BC4104C3AF60FA55FB84177F785F03 -3D885B728B7750481FF3126BAE5309893814BA28263EB863D5E7A39082FAC33D -B46457E63CB27220DC0FC981DCCB6732544DA11766C9B0D3440CE0C902F16063 -6D147F2E356462B2FE8F882191AF86A6CB3FECD914946C0E4535B4F7C0EFA1E5 -377DEF99D8763A928EA44DA3AD803AF38ACCEC624A78BA4B3B0F935D7B9F8761 -783E0C22513C88957309865BAB15B501109065D0D3723517580C00E0C196BF2C -B82F0B8E53A378F4DDAAB54B47989CBCAEDB8A304BDAF75DF3DFC5DCDA563C6F -1C8C9BC8514F4912E4DD84F19CD43A74BE4EB0759ADDDA74ED134379E63D9D00 -667CC3658B3E33987BE2F5358E6B18697134143D76C8B2184A53DC34FB969909 -7484E480154375A2809CC5ED83292ED9C25718AF0D3E1B622C37AE15D967E429 -545A65BB9BC5A0C28C9B6620C88AC1B10BF071AD542DB071B4027F31000E15F1 -636D6AD25B03A443509DF22B950DDB38150538219C18735C6FE1823BC639301A -619FFFEE5B7FB9F34A31B87D9D1A4A2541AE5339128CF7BEB9CC345D8D4E9063 -1978245ADC0EC3BD1D81444532769CDE9A960BB4B60F6F707824256C8F03DE6D -EEA8FBE3B23A4C7B16C5FFC37C0E523D2F89A1CC5E64E32A94C5E222348BAEDC -AE775455F358077326CCA58F4C8A2D1481910C9571003E25A16AEC3A003AD97E -76993E56B6B8EA458178B80CE273341C9856C2F93CA51A4ECDB83B64C9DA2734 -F58D596E67963AF1AE570B450372489B329DCD00EF9CE36101C6B886D2B11C2E -D407DBF4E83A21B3DA030163A73F6EA328E4CFDEDE30E97CDED64AE00827C895 -D8487149A8FFA1EB7F044A395C55E19C6107B45B60BB1B6D62DA83FD6744FFB0 -98997399E0CFF8E0DE311B7908624609106B760DB36843B8FAA2BA68EBD5D3A5 -8EBEF23A04F1959054046450359672AE227F270A4860755EF919663F035500B0 -ABB9D42EE87D178137BDE927F8A98CDC5E1CBE0B99F0EACAA52E40E56F473DD5 -B27BF1C51F1E42E813E85F163BC67A18CC1887DAC73A84259C4C1043A3869212 -7791949C93A0845B9602AFE0C7EE6618173CEDE77EEDCF52364C60F518EE6B93 -9CBCCA90FD837EA47FA3CBBF9F3B5EEE0616289C27C1517212BFF2CF9A0430CB -4BE69786504DA5CFACE59EDA94D33B37FAB0111AE31430B62343EC05D7AE5E91 -BD98E454F752CE741401DA52C81F984E972E628C1804455FA15857B7E3F1A352 -1FD2016251C8FAB46A61FDD17B076A6DE70F49BC5BE6C356CB33BD7BA6E4FF82 -2417BF7E5233C15CEF8BA5F7EB16708D2BE2CA040354BCB8E92AF0B9183F250A -E04683E3F060AAD181FE982D8CC50A950167935869EC0E7884E06617A9B7270A -C4A6F7CDC1CB54B13E7458D28CDCDB300EC47453E06401669A116264C1F74483 -C7210268D605A56DD7F4307D9B046A90BA8210E1C7CF6E302D9FED4F6898ADBA -B8C4891D68A761DE92636FBE41433632A244D2CE90CBC0716697396A9B0EFFC4 -03A17D2BBCC56F8A2A99AF870CA7F9414E42D689B020B11D382D4CAF5E16F85C -873B60A4E04F17DC736CD41A80EC051E8759A76CA4434847986A6834DC9EDB7B -E2947A586254C118401FC08F1496D9BD9060797845C1563D10C922B8682FB988 -983C9CA5D46AB6C62B54D4F601588C7F8D2E37B68DCA401224A9337BA92AD14B -2F917DDF1923D864001ECE575505E9D13F7C9E42DAB32399943E3FD64FB21591 -62CDA15DC14530341A1C7111468EF3397D4EBD9A25916DCBD85845ACC5D35A9A -2F0B2DBF2EFCBBD30636E1F31B355F9617AFD58A54622DA400D0E0B115E4BFB2 -15F781C8CF4E09FD1E019C59171665DE0C44D2F8534791B2E1F3001D76257656 -DD5BD20B737640F3A29B3C7EB47AA2BF9BA6CB5818D780E587FB38F2E494137B -4DF8E98D3AF8973B241DF7BAA52A90545B8A2B4827BC33E14988DB8444646806 -99F978DF8BC284C0947C01A919CFC988635868765BE662F25E9D935B223986E3 -771F39D9D2A58AF2827C867605BEC744376AA9C064CFBB7EE734890C67B2C910 -7B660E8B4909C37CEBACEE7270EA076115E876426F4466AEE7261993A02BC2A0 -6CB7CE5CDD1D4F19AC495807DC79EBC956D317FF9EF2367A702042C991592D8B -52487348C00DAB9B0BAFFAC2F05D947E767FF2268BED8317662788BD91EFDB7A -00290CE3F1673531E591D8A5AB24C231F36745BB9811E2B3FB3D68B1FD278AB8 -F2BA32A214DCEDD4414534FC16F6C2F3A2A2C764F2BC7C756435BB965684F9BC -EDD017BF09725925CC9F79863E850A0820CB3F9319122C135E363D9861525270 -E0F672BE94EF236EA6A734213C4837DE148223916BD6808FBBF4CA6E6665A046 -4504349740C2FA659E3CB5E7D6221A5F231C8D1651E7DB727828D8AFC23BC8F6 -4155CDB00E251AC2E595121F35358C9CACD078095014FA3C816B86B97FA02B55 -CA4373802EDE5D6B187F2A9A5B4D2CD7828CE08712E1ECAEFBF5AB2C8A5AF1CB -C8367EA30F9DC9F8236AD79D590912815142717B4380DD6C3F99A95F97A88C9D -6118B8D200359951534D77590B40E1612CAE03FB9639BD7F109654FC7A7A24E0 -832525837664B0D76720356ACD55D51115B799FFBABCC390E4656AB2D6F3193B -FDA32956C0F7F2A06C4E2C3A2C6E1F9DDF0A63E635458A7A6CB63361B1A0C4F7 -192C9FCC75309341595BE4646020FFCCB7B24E6B486D6DCC7C624477D290ADF7 -4F2366F76D837019E67F743B6B4FF2E90B5B926976ED8A507F2D19E39B5D6DC3 -5FB511CB042E117D6E3B4E35CDB787C320326D41747A138D1718EC76B4126BD3 -908B6E38D16793B9D0B4EC8A024B2F1193BCF234BC8390F16F6EEAACD55A3666 -4B23106A9145774A706A0E156BAA981F175DD9D590B08B2BCA021F553C6C81A5 -35AEA1A62BC7A0E1832338094C3FADB064B24F72017D4F0E02A8D8DFE49A1FFD -92E29AA0F2B2F6685E2C89FD994412A00D971A3FD1026BB5E0F00232AB362760 -990D2A64EDC4B6969E5A304CC968C3C421172E0838FFA96428C24C85C1B11729 -45E9171D8DD4AC40A9065668ADA5581DFF7BA0DFE6DE29521C3E492C7F0F9C61 -C02416E6ED291A2345307E76C13ED376557DFA57CC6B5C54E7F9EF939ED2E07D -B36D044C788A6B3DA78E1D86850D66DDBF90C3FA14C817F58699F70C10B5F6F3 -030A8C853B6AFF745029C4EF6B9B04D93C44E349D191627A8BCFF68E478FEE02 -D303BBE884B2FEA256EF66888C3F9CA10315B1AF06130C12E9420123B590CD18 -008CCBCDF5829539D50F627CC89AD547C8FF26372384C912D819C7A68AB0458A -F8B691B7BE82AD13D35308DA36FDFB0C9554F4E556D62E6DCC015E1C51BD749E -BA0CA2610C6D763E7F89AB32322AEF229BEE84115FAD8FA5A38A2A7BED7C018B -D29BBBBB517BAE5C1FD016305D6105444CB342570D9C46016F8915D4FCD9021B -29A772B0A22E95430D32D8E310C972A48CCCB6FADB25F0FEFB00818F6A1F470A -1A52F1F99638E20BF06313CBFC925552B86D8D789A6FF3A4EF4E46DFC45AA191 -F75483E41975C073583925591501E1E1CD8619F06DF990C0BB28F70E0990B971 -F323C6A00A6FFBAD9D3E145ABDAD886880B7CF42BFB08B98E5B90CD7E6E711D3 -55E66952D5DE574B5356005A82BC73D9050DDA2D4914B65F4ECA8379F7F7BF17 -7E628C6C7C7A466B5136BB04EB826D28D27FEA294379E25A11482398532C8C36 -32B5127786DC1EA568837BBCC0A1EE04914F589AFDD23BB6C24735E5F504C1F7 -F577AB86FDECCEE79E3E8755325437EF1F238C8CA5816AE9F03688A6E8AAD84A -19649CBC7BA469CC9C12F81B3BA68238737A771A332E58AA3B053008C33FF2F8 -1AAF03311BEEC8FA641539FD32138566247EECDDF8AC4429058B3DE134ECE83E -E15252186DD0E8EE240AF3AE52206F96B3D54030D337CA33CF666139E66CF7D2 -88CD8177A029CE181FED2F07D76BBA344C83F56F75E372A4CC726BA97D8D8606 -55BDFD76AF3AA09B71946F0919A9E6615FA7ABB7D31EA54C681D3544CD0425F1 -2BEE3B214193F8A2EEC7E8DF8E57CDFC9B5FDB66F32101DBCFFBE3839D1A45E3 -1FFE9EC86D0E556A9C3CFF7DC2A43FAAC36B9F0074988BD65A53D88BC2BF5A2A -2EBF480D31E7265C3341D3072CCD5DD93FE459119E619726DB7C9AFC1DDC403D -9C1EF23413C1FD9C077D62B7F82F750CC66F10E25AADBB4716A0351B70407870 -EA56558182E6B3FA63C4F141A3BF484E55DA46D1CF9A722555DA1AD642FDF1CD -9734688FD250C64832385CDF47C1BD247C2AE21BD71905A51EDC9F39CDEE603C -3B14F5C70D301656BFC6332E9A32E4461D9693851421C13BFA0B22F0D3D921AD -E3D6D65D1AC90C0668D7BAF7AE5EA0FCC8D7D37A93BF6C1D33A9736A7F342DE6 -882B32B0C9D1124961045D45663DB95D7A20FA222DA714AAC3D8858717B02277 -8C3B945EF5E69EEC9241CBFAE4CD39ABF1B77317CD4C6F1B0C7309CEFE0908D2 -D0B6F1E5E5C6BF068020C6424C7669C9B96D0089566105BEE9414DF45DE10173 -C30F45B9CC9B456B216BFBC9AA687A2242DC310CB2B6312F7BBC13E493C2C899 -3DAAB6C015F69EC85C903362C1989AD96895069003F7BB4A8FF51E7F8EBBCF7F -F85E17A941F96EC49949C75A3C8BC90E34B1646AD0ECE4528661C2F190C49184 -FE348AE644B4A54C059560AD15596D6282F5A1826A3B82449BCAFD90BCABA424 -03018F1C907E739A1FCB024889525AE427E6367E2CC166D4F940CEEC885BDCC4 -268650BF2AB39F338D6551D38EE67A8DEE2640177CBCDBDDADF1FA9DB1CE137A -743CE30546B3892991A86E0938AF43B76ABCA111A6222F1BB9D172EDD7BE9406 -EAB1E7A440F3BAC61396C901384FDA90AB4D413B3DC5F66F2E4345AF21BF2FC1 -2C3EC7E2E7C703930ACC675F2618F95AEF5366AF455A72A700C451DD41D84042 -7BD4457DD925418255AC1BFE3CC10A6DDB93EB62A03E770E6CD1CA168A05FA26 -194D1D533CF74C7AA3CBD09974AD2ED08A127D35A3444D643B1ACDED0B52E404 -59E99BF1ED70CB07798DC0BE24A5CE3138927E077D3429F4CCD3BFA4D2406F10 -76F820CC932DED8DA91D9E9480B84A234183D1CB950EF7EA8902C269A3C92286 -4CEC9DCEDA0CBFC50CD21979C66ADC8D01DE758ABA6ED72DA12372341F664B06 -8EA5668170D3814A7DA811DF4CD1834A1D997BD58EE8D51A3E6D35C0FFE86B17 -29AAE8E5B45DFC7D39D743B72B736104465B67063D0FCA5BACD7C05B21E473D3 -CB9FC55FC31B29F4090209FE7A36776DF2DA5D7D6082DF89CFD601A78DE26B93 -01735FED4EC83379D9A9EF09CC11582DAB1263EF1D94DD2C2A3561A1BA5B9CD3 -D9F45EA50E210DC927FCD7515BDE13E5075CE892CC6B6D797BC4861F50B8ED87 -697F09C4780B3963D714A5F44DE85466E8C3D01D6CF5DC1E2B1CEDE1961C1203 -F65FE1C61FF1CC5E0506C4DE5BACDBD5894AB5BB48A8399E0747298E908B5FCB -3FA8AF62850B0D38709FEF368971A9BE8852BABA795EAC463B5CD6298F532495 -96C2177636FAEC7A38D89E902380FE2C6EEC19C31E4E9FEECC877C959920D4B0 -13D9798859805CD7630D9A3C3D24829960C52BCA69D3ACB9E1F167C1434E5B0B -6878721036738944C6F912B012109161F4C350ECD183FCE075A774AB9BBABBD0 -91E523EC0B48FB12A920DFA1306D1139CC204AEE973657B036F5F541E0976016 -798472D73F2789456C1A8268A6C523EF8B5D3D4623372A3A84A356063164B37A -55E6220A6837ED36E1BDDEF99F1EFBF0A4200C1F77004D5641BB6BBCFEBCB286 -80E59CC23A95348FF9F2D8E1B6F6B916DB8FF32D68BE9F39EEA1FD096C6AFB6E -D9CB3EC1F724893D4EF23E0F44618D8915339D7E8329E90BB62A03F77E451712 -F888B8A371371EE01EEF3853A2EC7A7C8DF8314000B38026D8D0CFB241DF4684 -82A773D5CF3FB56CBA7B9FD2FC379AA99A332852841B3E94C2D02903B525BBBD -616F5E832B8788FC2832669FF0ACF08A0A9B34D891B1BAF78AA583598051943B -972AA191F7528F4DD407F27327258FC5F58BDD86EC1F3CA88FAA9F3B34A9CA38 -9B1F747F1354E70EA66D85D9C3C60A9BB79394B5E55AC9E0405E26F5352143E8 -ECD877505D96A16F8A828C4C89D05B5497FE14ED468B1F144C4D8E0B92731D34 -F0FB9B73B830961F26B3FBE450B50DBE3A959BB7AF1DDEDD891ACE264858C4E5 -58B65AFA44F43F47CF532E71573EB9EEE3A1A498B87C17549A40344874ED53E0 -F77CB0F19E5C5EB5DE7E10DF0C0F7F2AD411091E49BEE1FF101CC15FBE471B08 -CDD75E2634228A2A5D677F1479149F64CB3BBD980E975C074CC5B70D8FF535B2 -768474E2E7D47B85D15978F5E0EA83A6474F0A0D5726723D9A4FED424E6695EC -2B1F5EEC0ECA31DF06040F57BCC480F89B9E608DEE1C20676D0A34E01507E405 -EB308DC3238D11C2E2B279767BF2AED2A2B9079221992A282C677A0F98AF0451 -3D48976C569026F6FB3170B22AA6E556BC5F9BF546A0E60724AA1EE7E68B8FEC -B5F9A96FB5B30D36EC9C10075652ABDBF5730B526E32B1ED14C9176F25CA5AFF -85A11C041B0A89B815738E770560E529FA27EE353281381E3CC13C3B8CAC24D9 -04964964A320A1354B76F4A28E1FE443E16D028E46BDA9168569D8A4E91D2BA1 -D0E08EA4D34A63DD64FF8D687BFA2B020D5EFB4685F9B83A1FCC959563804D2F -10A59AA2D4479E2DBB7E8E43FA4145030B9798203C55CF62DDE6C99017E0395A -5D666B0825DF1312261769672D97F79DA24A3CDF62611858D41BCA89B53A6128 -210398A6A1D8BC2B9B8CFD6F03871A037973F9B8F7E4E069D4C3482207A42601 -AE22F4756A44F596F7FDB2D2F53DA5FE47F94EEF21D1C49FBE58D8C79B98D5A6 -818A313D952A72E1918A110C6E4DAD9D1F512F5D67ACB751404887D100319E5A -F3F88878B1DCAF8A34DC8CAC908A57C95E9E8BF270F7DC1325685E8ACC58ECCB -1BB270346CAFB828A694A75DB22FA68549A51EFF70750F544BC371D8D119F0B4 -E92A5BAFEACEC027A4E50458A4BA2491242308BFF75914F63CE7FE0D4F16884C -4FB0ABC7CA630F7AF59A3FD4185DCDC7DF8718074632F6BB063933769700A40C -457DF0F0E8CA71037B737074F10D7D21B2246D38F11C11EE42FB87959313FF24 -E47B087BD3692034A4493AC6D82D30313F5BF48DFECEFD5C83AF7158513BF0FD -7B961E43DCA6E60D24A48483B139BDCB51A2CEF47B4D6DFA4B45B6E42E31C2F2 -3D4124475E34BA7D17AC50FF84E3282B8810F8E3C95037772EF23E14D0084716 -4238C621313E5B1C895409FC9F281776346A94E3039CB04BD8942E61D5346AB8 -9BA46E8AD2891C98FE1B14262B0770C5F3045097FF949E39FFF96346907F9A90 -206B8D6E753851CB3588E229A18A855C727BF9EE7D08CB6A471CFBD12B679A39 -C2E2CE65721D2070E06D68C10C7B1EFE2062185CA60E8AFAB0C1E8C799C4834A -3C20A0DEC62F85AD4031C7620D6B8443FDA66AB4C5CD4B62DC25179897387CCE -6E49D4DD217440F9B8513B8250DD1C5D5268F9490CC38215BDAF9415C91AE7CD -1B453DECA5CD765E083CC515D3B61BAED6347FC35511CF91DBBAE0A24CBD2093 -F8323440E40907C53D68F61792FC5D9DAFDE5842C88404DF1D4ECCDC8221DB2D -4B01A56F6C31F0315106E08504F525DF166B4FF4F4B213D3821F0EA97E030372 -D76A7752E7B34F566A0718B1914D29F71846CF8647E7841054ADA442837DF927 -97F1940D546037EAF72E20CCD3AFC5BE4AFF17D11B4C9C92EE6A5239EEDB2CE2 -2253068A59509B7458E0112A845F65BF49FEF08398762174DC1C4F4094364EB7 -9DF018DC4B5429DE5BB4D1CBC9134503674F4201619BC5A52B93D40AD6771DCA -426DB4BC12DEABD891116E604BEE4C54A6AD6E700CD2847BB8B16501153729FF -27DD09239E0898BA571612A5BDC875DED7741E873AEE657915B063EA2A826527 -5B9DF021127F27C3BC1626C909AE6771FF2022C8C64AB4F116B06EDCC7BE9D64 -31A92E6B14F388CE96289600AC2CFCDD7835E273829378990005C9EB8BAE9F5A -45A92C86F6A3082C9415E5E921C53DED20A7EEFE36F5469A859929B555920E64 -64278316B1B1570F5BAF45EB09632D7FA3AAA546BACDED45446E51C3DF9F37A5 -075005829BC11D190D2D0D31EFA6CE32C76CDCBE49B6212B2BCE187543D5346A -E0CEA04CBF0142E9E51549007981E8AE0E6D65B50F977B6F7ADC275738E01944 -728CF17A3BC4CA89563174AC2C1495AADCBFA645EC0FFE0C567A7F43539EFCD9 -517011E3B8D75EF2EBE4138490541FBC8103DCFC951A299F78DD02287739EFE3 -13773E29919569E091EC9F5E34445C04733E3EE1655B2B34DFFCB4B7356EB67B -713509B732D4B60FD6C44E1902F25E6E1703216D861490F5CC9E39A618AFD328 -3C8F818B53E2826E9EB56A2812DBE46950DBF1A4F5A8E7640F9F10A8A8BB66A6 -90785918C2CDB3000119183AFE51105AFE0ED3E396B6634A2FD802C63DDB2834 -A088D41F1F5C7945EC4018D1AEE724B4A5B498FCDA1DEC7DE69A3C888664E5F0 -31E11F32E0AF985878EB0A55BF8841593424E191821BE7ED1A0108E28AF48646 -E2029C7F6ACEF238F08877013FC23F75816FED446D3F2B1B58F40C5C63961BB0 -67B51B0D2B158F31ADAC46B6AA4B61490B3E28164F9B63F115C8DCF64C08D8EA -ED2F20E7A1D36FA511E39FFBBE90FCA1F1950521A478FD575C98DA158F29D029 -80E3AB7A960350313DEA0CA5B3A0A0BD9FEB87522F0266E9AA9098ED8D740D9C -0D33D210828A41E2C21BFACC448A8D9F7D7239C10149176783C2F76EE6A057BD -BE248816283B2BA3D713B06A99FAA2FE50636C0775365B59329E3F6F75C0611F -E5B0547AF61859E0C03EA24873E7DD0C8685434BA263197DD58F63E136572FE1 -D04CFCF1305EE86B55D97AD5880C265417D16A6220CF13AC857228E5D805E338 -D6C92D8E0DF910C7E8CA8E01332E5561936CEC98333D98420DCD4156B16F7572 -564CD961B206166023852DD217A266325A698EC373E51B2ABB790F6A2F2E78D9 -E77CE19F96676CE81F40CC72BFB19862C404C6D0F9F2B2FB765E9F6833CA4704 -2B0B928FFE528187BA39C62E9F97305FC7E43A9CAA5EDFB7C4A8D6DA4EE27D88 -B2EC15412154C581AB32A8E896E06E91E4A3849CB766618A05EB4624D9A2CEB8 -D2636DB216102CF75C5617C1109285B9A0C9E3DB4BB0A22F591B53F7C29F2C1B -3A244AE48D2178AF8E0A88FFD7F0CAD3B2C5525D31C32588995FED6DD2EFB9BC -AB990B727E8174EFBA948DAA68791ED4EAF26CF8D518271A76BF896DF0024C1F -EBA1B3F7BAD42D735A7DAD1B2AA2E2A547E73DCCBECA12B839ECB91D6EC32C29 -FA33BD8C9B2918A8A6B94DC09A6420BEF0DEE1F4E2A976A303F07EE93F7A6AFF -FEE920618DA159604492F7669F6B0946A0D7AAA2774853510A541CD6CCB1123D -9B1B0C88833EFCE0C326B4850348E65D0294755BB1BA2191FBD8C2ED1BBD5A0E -3F481B9E13976355A5758380A6EC171AEFDEE3400573243D6BD90F65369F09F5 -656F465BA1D64B5FAA44144D1A93C2D715BD71D717D37D7F691D0C19818DD847 -A60BE6F97291A18DEDBDB67EB4294E6147C223D85D646010F70EE10E1B661F8E -10098913757D2068C32FED569F85201718C84C1F57AAD3078C989E8363708AAE -0841F2E746E3F5A7F06634710A2A4EE31081E367B8F1831BDD838B7FBD1498F3 -D3C005EEBC270544B6F2A016D3D917A319CF53E2E593B8C1CD65BBF3A67CDC1A -3A7A2592C39A623DB3DCDF869CE2CC9E36DB1C10B6360F4E65EFD0E6A1355BB9 -C6E760AED82DA1A9C2C71A8FE20E5A127A80BC76F29B959405FE70A178BEBF48 -43208C1A159256FC02B8ED54604D570265E5497793D6E31B66608BAD220596E3 -D2DF814166AFFD62426E9DC365633C46B3EFB97441E5715EE59D20A80B44E7B8 -6A5F4E9D47DB6AAE0875229F2915B98A62204B70C0C2CFFE3F7C0729408F1415 -6A2604D97605E2D13962DB6EE32EB38FF4D9BF32B813792F59ABCD9292C8D308 -DB3E6239064D723CDF3E3BA8C1FD84DCD45998CA8EAF3E07E632E9D22753A836 -C0BFDA891AC7DA4FEE50E991618E1458B228F269AF82E5BD47E0DC0A75C3B6C4 -917377F1677842AA4866F9EF618B5A73AC8093495DCF0FC7C51CA481F46CB80F -9A6723D1053A38155D1D062C50C5D6A26D4DB2A8E0D8074B48362180CF118844 -975B7A945882151B6FDFF0A81A7C636930A201727966DA2D170404B93E3E8579 -CF91CEB78A6A204C853C1497D5B87502B8DA828026803E5810D1D40FD5C871D2 -870292CCCF76801F23BF7A7582B0C9FEDD24904611DD4FE7251B71036EA87E2B -EF25EA2409082749CF330AF7B7856127E10D7CF149319866E892BD408300BCE4 -FCAF84CD0CEE8C2059BF79C50B4CF60A491DE56E0B2A1C8875C5E1423CE0A880 -4A9C780F7E13B7491818C95FBED38F76374F6593B5E4C717C2251CD7EC05C4C0 -65A2E4E49793842484EA9AC7FEEA28530AF0F24BF60EFF827260A5C417F1EDBD -B40C84498CF51F91A0C801504A8A92BA17ED925C55E4B0DF0EFF6864D95A28A8 -AD639601AB3A0C44787ABF6766B04036FF1664A744A6099950463407FC82D1C0 -D8649B266EC39DCCE7278034023E9FE803079B78A38F939F9E4BAB9C1BF6CCA7 -01CD9A388090D701B9D2C53B09F7F5F271F18BAD5E96F0A88DC4078B3CA9E123 -50BB1290FA43058D737D99B6DB17F088EF86D00AABB69FA4B40C506C136E5A96 -7B7F401E8F8CDF0D12B230FC7E498A773FA29F6A7A5059E0C7F51C33607771D5 -8B09D0BE1F5D7670B0B02AA49C1A343565F2731E12B33236B7F237AD8001452D -EB1CDDD2A730D6BF33FA2F45A2754DD7D0DD55D78AD52EAA7D8F51D3AA2AE015 -E8F2326835CE2B192B3689EF8750C80BB2D30DCE139744B3A47D8457F0B5C12E -1BA24DEC3A8E98953C199B6B2D3C223B3F322EDD8F05946D6EC7B7CC012CD2A5 -FD3D669F2725005544C6F1286B4EA9005E38DDFA460D5CDC5FCC2A0B82BAAB5D -8B62E83482FA3A601CB9B80FF96621885DCFBEFABEA445FB857F8D54BF1B06A0 -2B153234454F424ADA9A5782F93EC2E55C2B47751B30A133A0A8DC9078DA819E -0EB14EB158EF38FC9789F0F7A6466159F307CD7CF0D827CED9431C6D92CA3BE5 -54FD1EEFB1448B933ABB09744A5CEB84F154F9CDF52AF86931F888E5A263F45A -87CE74557CE8BEEBDFFF6BFF1609560D7242C0484642D82C06F04C662D317187 -93F3E9CB56BE479CB935173789951298DCE36548D1D17523263FD56AC7C09D2E -8D72A861C81F7210E39E06860B95B58770ACD8A0BAF536BBEEE1EFA65C2D9D03 -F3B865F2C72530093D40E98C8A8F8B505517C858FCCC701C409F5C0E33A2E520 -6F8D6B73528A331CF784F4071FB1A428C9B8A82777435BB14137607FAC13F4CB -BF7581FB6C0FA3570579242D54DAA7B54F9E1814B88DA7B5A15B6A5B0BF11FFB -D8C1778B9BCA433E64B745CC027C2BB894E0E0A8617F66A63AE21B43C3235572 -649CDAF9B1A6224AD11532887C5648BAD947E54D616CA9A242647A63EDA92B51 -9F8853E7FED6A39A9FD2FE608C76EB10FD3C7B22AE9BDEB7432A86F99E559898 -CCCA486E1AE88CC9AF748C8B1831CB5CB637320126941FEB7A5434C6866D701F -5C3C96EE1DDDBC2AD2B526C61F94D973B62685A749A876578D4FA9A50A602711 -B108C3F31909956395B6B036BFF558375F74034621B712DD3BC636B30E344656 -E6FF0541382FCB7EBA898DCC5AAED63E79ABBF52D6005B22B86927B856D6D793 -257CFEBCBE9DEF1C69A9112B73AAE10473A2AC3CAA28AC029409EEB4296348BA -B1EBE27C8FA32E808BFD96531DC497769CC8BE428B58A3A6F414B28F9B95B66F -9881E257BFDA020BD96BB1645BFF2A5D11F8CE9C3C8F94C6A056C1B6496E08B6 -CC60D9D06C7DE5F60E46C5AE33B8F72DD9C7382D42D52C38319373887B72FE9D -2971DB1DF330C846E988B564CBF1A4629F044A963F7EEA5D5264B4EFC32DD5D0 -3249A851D03224A5310A6A3C44380D5A8EB38EC4DA4A97B348CC71624B600025 -FA66BD818E62AEF526A6CF382F686FFD168AC57D5611ADE4A8ABB8A638DDF9AF -0666C2A3206E49B9242C4C14690712E2E8F1F8C471DC5F127CD0862E62726D6F -7F813C084CC8983FF7D16EE9F851F10FC8A706B65CE4751B3EBAB21262E3DA4D -66BBA37CEDF5217B4644926FF95860ECEE6E0FA538FFCEF5EE086D5C22D9C012 -5455DA62D9170902B622F054F6EF8B2B27F72B0AD597DF8BF51C3BB48B5983FB -844624B660464091C3B00E4CD17DD07AE659863B7979BC45FAE4836CD41B8B22 -A8E1B00BB24CE37434426495E896938B584450D97C71018B8FCD1E59CFA20045 -12D74518E17177978298DEE06A2AEE8811BB619DC5025AD056096A888150486C -FC523772DD0C63E7920FA9A9E4CB409D1BA833C15C3A2F95D7116333F9171E46 -77F08EE893B274B295EC5DE28FA11B223B03F6FA13A21CCDF695E376D2C9A3D0 -5FBDA9A2EC68D89895CD368EA0D90A4B9B516D5F9CF12359B9CCEBB1FAD0C346 -FCB6CB4450542937E4008E9E259E2E31F85827D6FE9F1CE3793C0C7474685394 -2477D84EBBFD1E36D4955A07B15B9DFA8CBE4BD732B3483F5823A3CB99181066 -CE01E76F4768F66AE85B6DA24ED8BB3F17C9D09800898833090B768BD62E22E2 -A155F9249D903C805602D3ADE0D5E5D042141A11C1DFBC1F47C33847643C4B4D -FB7F84A23527B14657BF6A368BD2FF6BB4A2FAEA1BE6A4CEF60E52E20F9E0D4F -655149A63BD643949B82E6082E4EDDAE82349AE86E9CB92BBD724148242CF221 -7C40520A585B34EE02B408EC8C4EC8506A3CF5F4EB81FC7BD4F63FA16C7C72CD -7E2EC14EF116E24E0B2C3DAC4AD457551497B537912B322F5FF60B9399F643C5 -BCF1A960E0CBF7D2E6F1D7330FDDB6E72815CFF8C4E9ECEFB0BD5B6765A17CD5 -4146DC0BA657D34466E939329D3520CD26ADE665AE1A53E531751B6E49DE06AF -24F67E21D31DAEC4D273699907AE35106EBA1EABFBA939E414029E79C7787E2F -5AE7E19175B90368F5F930B28C6BDF059975EEB7C73978C1359E4882B9C403F9 -53A82485AA4535770E40A8ABFDD71416E441ADF27B55326B6879F819967A26FA -38E2E95EDD50A95D830DA95576D1476B011ACAD87416255673DDA4195926A388 -D60FBBA6898493FAD872BF7528D6D899B86D6A776E7FD2AD80D3C918A1CECAC9 -C4CA602409F425882A033464895EF7133DFD55F994CCABDF07C31FCD17347A64 -E848C886AD6BA99B31D0C275BE271869FD2F81E7BC65471ECE04E57796CB39BC -567D506DA8379D3F0E9A441EFF8B7BB9888B53004BDA86807EF370D4AC3AA69F -5C7C395F4C30AD486A52AF38C6E5E1BFBA7858FFD054BDBE26F55AE561D37A53 -2D5464DB77C2D573E3D75CABF1BCB9EF39348BAA04C02C3C132DB72D01B641AA -B28C50D9805FFB15DA9016B2F596FAB2AA1700149B9843530B402B786902DA69 -DD1D23B8CB69C7E3020B8F89B658EE051B5191D4AFA9A2A3EE9B9C601E15A878 -5158BA2249CFAA403EFB8455DDA976456F36BBCF7E2B1482F11033C37826B5A6 -864B0B6C4F5F1685F98249C9E6FD3A48BEE4B7AB435B7D021F52770F7BDC27B8 -E9BD53B97D6BA321CECE7EFC0AE10F4838B3C6FBF5029E87026F3BB8514D70D9 -B920A236493923AC4AE2993F3D39EA4207007BE0F1E6758C6845910A537197BA -6C8637E3AC195097F6046F593AB0F5EF06B23D29A8697374AF8BC19B6A0E7B37 -04942FDC08DA523223A1AFF0C3E960DDB5313ABF09172A1F1B1F7E3A00BCE7AC -18111C1D9C02A1C4682AB45CD6DEF456D8B9FD984EFAF3CF9AB319C9F3BCA0E1 -D5DF413B4E971D85EFEF039167C23922A69F10DC861555D2FD93A7A2F5AA7ACC -EB03E21C5FF0708F5DBC735F01C969F3FF2C6722FF87C260783055CAB2DF83EA -8352E1EDBC4E09E8E38F2393D5949DBD7A05C61E3621CEE7045B0736E569AC99 -D16E49F8A7D0FB89D891650629BC80E21E15060F6439E9CCA6124C8CFDA56AB5 -BD7DBFD383412869B2845FA5B0D4A1B95DF0073DFA877F093844659E5D2DC587 -EA71B3D96E6A6B1C208876A2CC80C0A2E14D0B7971CDFF6134649D702E0785C3 -8F3ED8EC0C6515A0BA2862238BD9956E4470B233B747C5CA8BCC97934B19958C -41A7ADBFDD2673AEB701F198509042D7A168661A18EAAF981EC5D8D089ABB87D -9F287F6FBE32C44E591C25D2A77E46DEB9E39B4BDB1FD1CADDEB08351CC119FE -B6F2B6203C8DE6653188C0C56BC9B7259086A544D588484CF7EF616B231086F9 -E779AA0F1CDD206A68A58E1A47A8462B2808CBD002A638564E4C23972BF9F635 -F01E54BB0E029828E2C232641D917E572662B63786114AC078E118E94BBE657A -E5F8FA846D3327EE8AA4CEFB9E0F7DF6ED9F879FA07BF6C928B340E358641626 -50ACCF829ABA41BFF51B9D65FDBA687212FD3FA9BD7CAC88BFBA176738255525 -417B94803CD3BAD1B563457FB4471AA7FF37E627E881F994B1C0C41D8E8059D3 -53F7A2A9A20920A74D379C055DB9BEAABC42D892C881E23990406532BA96140B -C55BB738A9891534F3021C382099A814E69A9D122EB46A1CC258F80AE1373066 -7A74E73BEB9C73FB58B852FC5FEC78A4AD2559B7CD9EFC5943F245DFAED23F69 -9F1669F4C2B011AB9A5549B33DCD09FF8D5BFA416F45EABD4E3DBB0F297EEC2F -63492FEC28382935848A71069630DD698DE4CEDAEE365120D308956207017923 -067920F8422F3E911F8D4E41BEC6EC8DB4A4E0FBBE955F177485E598F0F228B8 -E49E512B96751CC529CA64C5EB95DEB9ABEACB1C0D6B0FA017FC4DBF8B0F1097 -6141E2CE4372B064C4D23150DD83989E5671003665BA0F0BEC06F814D463F4EB -9FAF59EDCD2D38675C12C0A6E8615184B5F90C2B4C8BE51A48B26A8F01A30E9A -1AD1EBDC0173D2F18F5E535CF13FE64668F9467EC4519F733330FF30DEE23E62 -574BB06B2947B2DF41850071AA4A902B7ECAC73060CF934901B6AD2925067583 -9347BA6810A632F5C0CBC4B237FFC0857E1049AF1840EBBF6E65F03574F725BB -D62FDAFF0F8DDA08561E04E4BDB7930661380D9F308EF466DA04F056C25A8C32 -60D9AC36CD03694CD8D59DCF94D0EA6D25A1D5593DBF7C1B0C1D0FDF363279F7 -33C164DB0E256D67C8C85DD9A2897B7220B071C88194F1D93A406B3881E4B2FD -528EE46EE86FC9C1D96C10B964C5A26E2109D1389C7BDC72A0A932D3C9033D70 -C2B77F7732B40A1A81FE552613FD2E09F45D0DDD4465D68CFF6687283DE4D1B9 -D2C347041B9C1CB3DB7B092A96D772D1836277D60F12BF9C9A4B7F8D807AE1AA -695CC7BD9A6A264B23C6B9162AB0B3D671932245E2842CE22BDCB255B4DF69A9 -A71703B270C9687A4648F6DEFBE3B70202C2F0217DC3659BED38D066C3CB74A0 -9AE76049B5307448647002C538E3604B8A46FE98F1C8238538A2E68CD4A72194 -8CE23F390CFE6F697871E8FDA2004895F6AA52AA3E5046C1DC4776EA1CB0DC6F -F151FA205EE5AAAFC249D2BABDD3A6138CB22DF41B87AD72E58071008D14FEF4 -3AE5F367E5884EB298B3A559FAD7B359A39A813032E7A373AF9550CF1E8CC32F -4136CCA26A5D85AAEC -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.0: CMBX12 003.002 -%%Title: CMBX12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMBX12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup -/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMBX12 def -/FontBBox {-53 -251 1139 750 }readonly def -/UniqueID 5000769 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE -0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D -2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 -1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C -42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 -FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE -78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 -22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE -A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 -4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 -4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 -95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D -9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC -5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF -9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 -CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 -BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 -9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 -EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A -D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE -2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE -947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B -0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 -4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C -BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 -F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 -6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 -D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 -F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 -481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 -FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D -419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 -7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B -70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 -2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE -0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC -9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A -C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D -1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 -A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 -21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 -7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 -17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 -30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F -3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 -96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 -B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 -1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B -57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE -B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC -8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 -8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 -B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E -BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC -21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 -D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 -FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F -A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 -A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 -A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA -DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 -7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F -07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 -BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E -8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 -E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C -B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 -45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 -2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 -5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF -A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 -5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 -E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 -5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 -6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 -8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB -BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 -9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB -B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B -B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E -8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD -595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E -FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 -13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A -FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 -DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB -313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 -C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 -F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD -DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 -8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 -E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 -A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 -C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 -417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 -19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 -9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 -12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 -3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 -A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 -90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 -3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 -B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B -82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 -1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 -AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D -9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 -2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 -99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A -31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 -3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 -F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 -70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E -5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 -84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 -BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 -8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 -5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 -9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B -F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E -94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE -0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC -E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 -7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 -596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 -F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E -7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 -1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 -AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE -4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F -744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D -67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA -054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA -6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B -8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE -CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 -EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 -C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 -57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 -5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F -C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 -CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 -848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C -B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB -77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 -87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 -3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 -409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 -A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B -72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D -99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD -8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB -E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C -82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 -C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 -EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 -23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A -59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F -C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 -1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C -403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 -1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 -75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E -0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 -82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 -C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 -A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC -9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 -0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C -5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 -62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D -6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E -1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 -648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 -FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 -754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A -E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE -E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4 -0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61 -CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27D78FA90FBE923D372C680C87B -7F0E702B8FECBE0CBCB087ADD6D28549FE707FCB616448B0D94CBDC404915943 -66539B177D5940370C2035D0FEBB3A3C666ADCEB45F5B15DEA729BF86BBCC309 -0294FF267657EEA805DD28DF5DABB6A7B71D004E91381247F415B3723C651F59 -E431909315A3116090A5ADB8F0EE8F6AE295C7E35C0D7DBFBFC166F037592B16 -7D5FE08342FB4FA5F8917890AD3B65472B2F7942C58D22D4D1C4E68993DAC227 -E1FFDF6DAD0609A83A3F859773FCB1D303EA09D6AFAF573599096E2F5B2C2230 -2F3693CFE8F5696E867B18CEA2D326BDBEDDBA7FFBA2B898A0C0D750C87D46DB -2EBF18A3B4A755CA55C4E18D6213F91DE30CBCF10E761EFE51A7A2757ECD1546 -9A5885C20029D8B356139A9FAD7C139BCF3BF3866BA4E4F3C07DDC4D83B4CDA4 -A7CC1B3D354FE93D8C364927835EFE48AE8A45BF56946998530269C80A84B04A -0F1D0B9410A17F168847CDB932B3DC45942A869D629470067AA18B9217686360 -E26D83C17240217E220C51EFC11E7AD229CB15CCED719FD38A376942D5EEDD46 -B2452DCFC5D3189CEFE38CCB5C90CB5B9D10CDA0385E885116F2642CD37869BC -08F1D693EAB827003ECC87ECD984B89358A571A37D86407FB645DDA209CC18A0 -2AB65E06463312D48584280C888322666AFCFF3C09E6E9CAEB86D1264A09BFDC -85A45ECF1D6ABACBCF01650014E555FB6C43829D16B8AFCFA730C0D910A61020 -8140A2D918AC80813DA9C67C2C6B3CA1BB53115EBDAA0B3CB2EBAF5DB938AECA -119815951F54CE148D64844516AA4B19D17048FF516C10C5F3B33C6A08153E1D -7DF66783CE0499806294DF6928FAB72532A7A1BB3C0C516130664B2D6D5E0285 -C21978BB8AC16E106ED26DAB5B039E1DC3B92A4FEDE498065E574E58403BC25B -4CF360BBC5CF56E4987C4C16C9FC939E824376789F96229B011EF2677D6DE8AD -59D96B9996AF4B0A1E4A219CCF84F1CD572773762A5E69725F13FFEB701394B4 -ABCB9512C24334811951B8757A9534859D5705750CB30A1F61F0366CFC75FB52 -CA2A5662890DA557C9E1FD52A5763E2A1A58C4B3C35CA0C6201169995B98DCAA -E7789539F4335566644E5E1EFF07DF3D0BB5ED9F54E7E46272D80BA7EF73B5FC -50D05C8E3F2963FF15F22DE6C9243DE4317CFCA8515F5CC8D0E3342DB81142D4 -FD822AE9F1054C80525A4B918DB6120387263BFCECD948BE6161B7DE9F8CDD2E -4716059B7EDE5C91F1A80236419BCB3073D2238C47A773D0FAC685E4BD0B504C -F190FA4ABBC001C639DDB5075ECCB53EB53A41D99BAC97C4794F551E4A34E87D -ABA419227FA74659FDF5F5B934694FE5BD327086D7CA15E88ACF7D5E041708C9 -8C2C12B050DAE9D1E112AB3FA5D91BDD00C42E0C03C03FB74174D9E02D6FB3E5 -80044FA5E9D9EE05BE46D6D1FAC58D9B720F5584C67969613511C5ABD9B5B86A -C65732922AE2366550E1FF002C2B93C286EC8BB0E1503A1F14A011A0CF82978C -3390FC3AC1AC2DF0DF14AAA60460B80D82306DB1A420C9F03650AEFCD8FFE836 -48A619D12CE2473670FF6310304CE2D317E6C7C4AE5A0B1635F66855F6C89676 -2E7FABD22FBE155D1A2C5A11C76A10695FBDF4C347CD9B8CD07A20AC88FCD513 -877987741CE4BE714804073767DFE5B276E325F1C62221F4730BA23644717206 -131642D598848D3ED015E30DA58A7920035A61A9434FFADD6EF7C4119F7A3967 -E71737A64698C4A0D1A20C509BF22B1E00A353E4BA2C309D6FC8EC57EB89B7A1 -3FDFFFD729B690A6D24A0BC71C6B72D6E305A19BCF038B9058F20BFE39E4D45B -1D53C68F4A9C3B31CACFEC2982342DA7491857136FEAA880A1827E80CC4C1D1A -0777414C68B551DB90F7E3176456B615920B6F56AC7F805E2EA7071BDD50115F -9900152ABF51FCE0F5FE546C75C5C75DA556C0BE01B1BAC49FEB4994B8D61CCE -303C2A58553AD31EB9C02AF6A6CD50D4CF9E34B1152B61DD0250BB40D7ACAA03 -64074FD026AA04A3C49B67A70D915A1C05CF21D91B1AF87EDDAEB1BC373AECC8 -A6A14A8F465D4766D3C7FB27216207C6D93AEF8E5353C6FDD6E0356D4C87A530 -7910660F1EBDC5B1DC85EBEAA9EEF36CC8D2AED67E42EE0C9CAB64105E799680 -0B2CB3350F8194910480F0435971FCA6154C2501CB9251E4CF2B37D00F1D80F9 -303B79FB5A503CB366B833CC84EE21E0A6641746813FC96281AC600E00544049 -A1E208E333E1DC640A34DAAA186B312EB6D5F8284B7F94B980ABE7972B988FBB -D562C51AEE661A699DE631CA76F40E85FF848FB9885161F11CC6ABEB5B3D6FAB -D27E57EAEE1803DF0B9AE156F877732FFF4A86F5689187641D296B6658F52993 -181A7610DEBF37320B355D45BF44217F1FC1A124D3C962465B32A94624E5729D -E168C57E98744C114CF8DAFAA5D3CD3705D10CCFEDF9CE2640183CA4204C758B -ADF722AD70C1B9D1F9E68540E8D63BC3C918AA0859935B78CCD0D7D7A45D25AB -7DCC66887B305BD6908AF3F5418CA41C43F0F5A9580D17A6001774B8E1DB4A5E -96992867E048E8B3C5F7533E35305106E7EC6465504CF2EF1D57E7253D400ED3 -4EE06A8B8F462974204E5FB1DAAD6AD3BDFD2CD64AE8741701D6AC1FE78183F8 -78622799D4F3FE60732D97AA5993A832C8CD2DFB2224022F45F340BEC5E9E832 -B4CD470C1EE990962EF61A2D41EEF284C62EE027E647941522BB5F9F9C608827 -2569970192B32D8CCAD5E090A5EB55853BB2A7FE3A982326AC7BE414425DB460 -E54409225889675B65F666A1A8DCA63A787D308799D28BA394F2B38451E89882 -84B59FD092C0DDC1AC4A2265D1BE33FE548871CEB8AEEBD84B53A4231A72DA05 -8C0E71C54053FCCE1AE51479853991112B672DBA938A97749154FB0B3557CE6B -A8FB54F4D3685DF1A82A7E51158929215FA322808FEE9B17E02D02947C47DCF6 -FF36F6ED59E66FA1BD04AC0AF2CCA4F525AEF758677F5ECF2CA1C892C7235151 -E21722C2B7AE48EC3D72292C3902039F5EF205030B2F4B333186F6A34EF42FDE -AF32BFFB7082D67DDF250E3AABB0B3567DE1F4BEF5729D280CA1258CDAB72E6A -28963014D3DA3B68C2324B6DF2B13DC89FD6726C993A22CD74EF13A4BAB6849B -E7CB4FA37549AED5386AB76771C2C8E95FBD3F6E244525C048BC50D5A3A1D22E -E144EE66054AEC0FFB6C8F7D732559E032E217943641B4B736EF02514C6FDCDC -0B82D54898E44DD745228ECA6D2ABAF7CAB5035BF672B7F2021C3A612869180A -1DFB2DD6F7E8119B5253F61A49473F9C7D35521F10CB64077152D0D23E77912E -7ED0B2EA1D685086FB16922E1FB7A91EEE57CAA764978E496BC56A69812092E9 -2DA4D04DCAEFF97B267BA8F7EE5154023B7A3BD80EE3CB0CD404049E0C3D16C7 -6265461EBB8407737D2AFC07162D23FEA093C63019BA6B85E967DD2EF2C97E22 -D61B5B845678AAAB99202C6CFB095B6B8A1CFE72F07ED3DD17A14A68980BB8C3 -A1E04633FEAB19789433F08ED91577E5E2491FE93EBB4937FB4034C8EA9D2297 -AF8E11F48CDD0866E05843E502BF63E044ABBD801D8ADA842562FF23432F7274 -0E668DF5ABB0728C7D64E626D42D416216BF6229C4A5D0B4F784486E777710F8 -90EDAD8F2444B45166313D1BEC1B9AB520486B987D7C4F476D445B9DEFA5ADDD -584C6E301B2215098A05AAF9CCCF3BE7EAAE9B8B33C3C4C917DE6441A14A5A44 -248893527BC01375F774C0FA90C709684A3651C87D5AF2515C0D4B2AF2D97924 -D22FBE194A13DD9B6158905E370BE7F1D212D2CA186B673FDCC5356015989411 -A9609F8473F78AB75C27EDC644F8A460912EBD78DE25C3F7E814112F20AC1995 -B8D720AF2BCEAFD2F30F6910410D168E80A2E8D0E6754B0BB7539BCC15E225A5 -BCE15745DD67E2221A3CDDAE730917FB0563C909B7040538B5E7641C17BE6FFA -913607BBC5F85B0D12ADFABE7A9F8965D10651C94BD3D1905AFA653B850C9553 -73C1DC314DD89162B9B109757176652CB42673EFD926676E9B9195CB515FC34B -2812BD7D069B627ECFD242AA9498606A2155D175117BE9926A854DED16CF4F25 -31D7FCC8A0ECEAB9AA6D0C880182E8C3218CA53A7628EA0EDEEA367BD1F47DA4 -77031FCE672A66479BC6D5A12B5EB6D2DC10C1B4E10BA2972B9F3E1806CD9564 -D88955610D1E80A6E5278E8BF1F083EDE7933D0C5525F6114C5BE139372EC6FA -68D29B1CE6B485CE5FB423D80E809C9AEA33F1B43E394B463CC33DA07AC3498C -D6532C3ED58F7835EA832174189FC324A7867104B1E8754A06B8BD9B6581C0FF -49906BAC92023F1671A772F0D21EA57DAE88FF2B7727987E3D3EC475ECA20D31 -BA96015904A963E248E07AD608D1B34145F3EFA1F69E6ACEAFD78908529016F4 -C72C03C78EB7D2C67A73A5BC2D85810994CE916B53C4C5CD60E58ED05F9C93AB -F06BAD33A15C332384936DD59A9CC3D409107899E096B2E7AE02EDB5ADECBA2B -EC5A4F170204BB9696D4806F0B3099DA4CAFE2D2E529B1EF17DEF2C4EA306AE7 -30A357E94B8028EA6850C70483213C60B3D257150035E4C5E32060AEE2533891 -09C35861411A23BFBDF36000F9DB23B365503F49BCD2A134EAD32C2C20DDF725 -DDBB02D89A616BC2032B2C0666B33715948A160E80FAB4ABB396D662716FC1D3 -9944DA5F7AC4AEAAB838CA3AF620151BF840F22C5075661BC683410C726B6C9C -18EC021306F335622395C6227BCAECC714FBC9436F67ED4051A4F51D4D5F0843 -968F59A7C871C198B54F92058B67E73F72ACA89CBF2CA6A2F7ECD4DEEB154FAD -706008B1174DCCA69F5FFCDBDC1C8E9FD454996D3BC830CB0F13EA777C349978 -0B18E4C33AA64795C6B151DC2546A9D82AF3D8E6360066F8BE15A8431D222E97 -7926CD92541669A89B976F9781C543BE5932E9FCDFB7F114FF576D3315BD3B4A -F7C9BFA8118B263FD5007F7DAB616B6EE04683E03E456469890FB878F10ED1ED -9C034FD690364078F3E03DA910ED833F50BC57834916A7CB65BCBB4BD980B59F -6FE0CE4D988F936B13ED085DA2729D1133F9C417DD2F663DEC20F992964519DD -3555825693AA815D60DCC7B4051525C246E9AE5887BB2D6C9EA20C8485C037D7 -1E4672A4392112A927473810D13B861DCAC2D9B9CE04519E1451DDF8DE23AAD6 -C2FF6F8E7AB06832298BFEC1D28CC39F204C49A8C3EA2EA3D1EEAE27AAADBE25 -BD0002C336FC4C4F91B89AF330C2230274C25BE75503458F945C2FF8ECAE6AE3 -ABB01D7A56C9D7B052F1B9386EE9F656ADFDDD68F10A56891BBAF42CF3A81BE2 -CC98B4B9453D8ACF30E703580BA2788C932D6C9C9DCCF8868E98B6EBFB6DAB2D -33236A77CF940210FE27E796371B129540723C2F216BEB1A3E240A64797A0B5B -28B2EE3A781069FC4C7AAEE3A57BC008BFEE473CAE86AC4BA1996119246D6706 -C114C75D6C0318A5835E339AB8E68E586C15FE50BE15B55679486D3309468289 -1AE95CB9AB4587DD7443AB38CA7C19E2087123EFC4FA2E48F4FE6B1BD18215AF -416609AA9D21E3039C419FAAC1EBDCAB2D5298F58CD87DCF781203BA4E44438D -4FDE8BB651800AB50B5407AE224515928FBCF7337082C2EBE189C0A614ED9005 -ADF8E44D77774D737F880196EE269DADE0802FD27132A03AEC7B2E3450830B8C -3A5C6AAA02B76A42B3C01BD3C0E36F58860E67CF3DB1B75CE191920ACE608FB4 -CB4C2C63D42F78490DEEF35EF1AE6A425ABF199239E6AACB28D629648ED118B7 -6AD6529A182D3ACC8A27802054FB55E5063B3423536EF4347DA38C7644CB5449 -DA861CC41056BF3F684E30F7D4C8C270420038650732B777A13FF01BE5FAF6C8 -8A8C8F9A9463BF9204CB961593C1604E8A8893CC655AAFC06AAD5B5ED25F32B8 -BFA326C2DB9FBF2E63F15241777D4CF02F52232DB36C8004462DB106AA2AF3D9 -29997EF8567794B7DA7D6160A6373E2AF3B9D00EC0100B4D024CD66FA9214E5E -2BF5FB4C7BCA4315670FA0103BE85FA49BFABBE99CA42314AF2801D028ECE6D6 -B52FA6A21AB3CB83C79084A9C71516582B0C5C53F7346691175CB7F437533A3B -8A66A2BA1EFB4A3140079829F7668BB4489076785AE019C21FAD154FAB6C30F7 -D190C6B2FE6A52457089688A60B5B168A138332BDE0EC9573228A76E94EF538F -D4AB4BD467787BF7B0192DCD536F8F88CCAB88891097120E2D77ADC5C144E202 -EBC4CDA18F43A475BFA9455E7E44230CED292F75D36AD92CD47D7008E3288ABD -18FCD0F77239D048AC59D64B97EDC5A96F518ABFD6FA203A55EC4976489EF969 -ACAF6A34E3495CA4D335530791757EBEF5DEF56929884734F7B7C2DEF6269715 -6C1FB90DADC1A41DDABF8F8EDEE0B6E78A42B23D5985A5BCA0841B964CA15746 -EE1796E9E65DF0BDFFC97DB2CCA9B11BFBD78F517AADC23D2A94792FA1482D90 -CA8E0111886C9CB6214EF6A55E75D61A8A8ADB81500B03843CB7D440284DA069 -D7E39A8A5F4CB43BCF71194B85AE7FDF7873092C1AE2715A487958D08BE84EEC -46E015BEB68E5FB8B58CFC404DD4012E0A72B3B3D3B3BE14349DEBF2D684C4E6 -94E276891FCDB2E072BED7277B7A03B424FD231EF02A472B141E89E504428BA1 -8EB5F5D3917664113643CBF1D9DDAAF803B1FFE91D29C4B00FF725B1A1382454 -51D47A9537EF8043AB429DF4A4DF0ADAA648834FC1CB68EBEE8BA3A78C55E316 -9D4531B98C489768E228D11CDE5228D267D8B518DFBAB4E65597E1E6CF6618DA -3A6748B23E4887FD7723EF2EAE06263FDC8F588DB0538C43210ADB19D1FC00CF -C3532743621A5B7EE0F0C947E208AD177EEDA005587B321C91DA2EF7558D8FF0 -71976BFD6C20E65321F9876675BF4E85C985992E29C0E81DFC148A5669BD7AB1 -D2B8C5D7567045665A0BE5AB78ACC62DBC606C8BC8BE72668422F7C34453F79D -1D139BD531AE59496BAD8391A28B8F90A796CE140BB827D5B0F400239513C462 -545D26FC79E1887065AEAAAAC827D64093B631C21C9EA4785463E7F0CB4EC970 -E77A97EFD96FA07BA7948F8E0EC73F0791D7B43D9D3132230683D9085A663965 -71E1F854A9A63DABDF52FDD089C9F4FCF15BD7B46BFBE6CF0AB7C5B88A8592CA -C085CE41FD15F5CDB0A754B4E74E72C0C42D1B8E31CAF1435CCC9CC7A5057E98 -EBBA851DA97723F22079BF4B0258C85C2E1D5967F5FF29BCC9270BE86E59585C -2E929A51A9486AE925E4DC135F4D8F20CCF716EA5364A85F9CEF91389E9943D3 -EFEEE6B35309899900D3844EEFDF773D4EF5D7D12FF737F0BDA0438FEC8B240C -2EB9F4B8D7B2E245882CB8CD1E6DAF06C28A67994D159D4C88D2F0B0C0D23B9A -4C1ED644E00CF218DFEA43DDBFAE046EEBAD0D332226058AEA329BC85F69E9B3 -1F0CC47264196FDED22427A1F88D82B4BFCB46B50F6DBA87DA83AACA9E62E69C -D71479AE3BBB599ACC52D3983BBEEA42D1B97224E620A22BD378695C9BA9CDE1 -0509FF5F962082B688B786A3D5D0C5AC21CFD09B85934C34CD2448F96A6B1807 -A98AAB7D2AD5298A389256FABC0FC62A0D85456EDA49118BFA5264DD037CE55A -FA985E515E591DEC2623F204C4E7057A6901898F9D8964AFD57F4B0D4AC79F15 -FFBB35EF968DCBAF5B042FC8C57BC91FE91B4BE2D773082B118C38A57A7FDDBE -03779C4EF91266AECF14EB23AAE9075548F9A9D6BAA7D7BD3B771BDB6F37BC48 -3985CAC11BA5E826741A3E8DD6B0320E68FFD39B9E4A287A4AF340D3738D96D9 -8AD44BBDBE68EC122CF3A5E1A17A1A5C5478BF91D9F9F55055DA8AF421845771 -CB36B067C263BE913F3C33880724DBD0242281D8735593F13A8C4EAD2ECF7EB9 -0C8C93DB06CCE8A05447405A7C43CC6F92FD49A4CE7E943FDB747B9859B9F8C4 -90588C8E489646E46866E82ADEC333014E6E8A45F0B496FE54AEF91A15A2E0BA -836AD72E6445F91E0E06DD4164A97731F59B60B1A46FBEF80395858B1EA75F7A -36B246DC095555976C546D7697AF32D31C83C4C0C5D978B0C62B93E1AB2C2F48 -0803157631A16B5E8FF34A9E756C6DA2908815C9CD14143273D15472013791E2 -1FF12FB88B34B0785102B169807EBF77189EF85107151B366716D016791E2A97 -C2E9560778A1C54616E7AB057E131D63D2465A6E0B0C55B50CB63929534DDA5C -125E57D805B925A4443F3BBF3D16D31BF812A67D8ED5A6A72946632537E4DEDC -D0BAECE36F04028EE2E5C9695383358D855FAF0749D6AF131368C3ADBBDA756E -95A5A9964103BEA1A561186239AFC87694206E6EDFF49966DAC73CC3C13DE343 -7A5164EBF38F0248E1AFBDBFA0CE1331F97C687EC8EF077FF25C58D11A0E7520 -4A111D5A90D921669A55C92E905408855A0C99103E42571D128FD0EAFF03E970 -6F3A79F55D018C03A5369F3EB50AFC61305237D340E0DC24B920EEB8C5F6942C -56D3CAE8F99B9253A4B1B9BD61CE98B2E95361F9D97FAC2F4532F1718D374D0F -092F4666453679B742938CAAA9FC894B4C59EC0940D75D38257B2CDE928EBCBB -7DE583835CA1D6A033AE0341674FBB203BC91F46931C660642FDF9F59D46C135 -4E5FC1A68734F63083B9E82EFDD074ABBE9B5AB9070C77FB9277606BB5F656D5 -42A4FCE98ACAF597D51A1EE37B081A9831B2B50A47CEDE7F2FFF6F4C640A05A3 -64E0DB2BAED6EBE8A256E6A8AD22A9BE340F3C0C8EAB1BA9ECFF1B882B73C6A8 -422209057773FB6D6C087AFEBA0922338CD73AB2E809D91DBDDE557D4C512E86 -A9C78A8DD4D22C5A9D0E6BE107AFC9A3651557279334B60099F574B146D07552 -F7D49EF1476222E376284CB2E8E73C2D4418F76D6849E3048A5B2E3CA30F9436 -DF0269D126118A00826639E44B8631D092EEABD03A33DD031F274C16B1A615AC -ABD91CF310E2D98B37D2143241295CB6B43EF594CA5CC879634A6927B00153F5 -1A94E210F3B7FBB99D8A1CD56B4174FBD35FDA6FF6B1C93B20D730B43691583C -55DB97F1A06396E8B3AAAE294D5E0D513EC332A286EF321D22535A5A7C107FAE -081B30F5CBEB7AF8BA1D69A7A7E4E7DA3F851DD3AAA0F70C3C24EEA69D6977FD -795BAC0B51D23D7876CB7D34D476F9AE4AA88D2AAEDBBF9A9D5D4D298EA951F5 -69819F2AF82A3630D55E7DE78DC8335E54A07492A19A13DAE03BCFB7353E27B8 -AF54163020D3546D92B935685843B61043DFEB6CA5134A735CE3A205C3F29825 -A6C758B203F7EAE65A7E4474EBA34ED704AA223A2F809626299B9242400E42C1 -34D679E57E1C954BB5300CF19E8BAF32801EEF461F357287D4277FEB2DBBA19B -E783CC34EE84710E6C8362D326B17483599767846AAF663E6A7B89A03FB089EB -7FD4B6ECA63440B74CC49DB2C53C0BF574D83233689402170A1375C3B23E0786 -4A52EF9F53F15F871D5860F4B439E60CE6E821FA5225F57E5B28922E88185167 -9989A4589D992921FE039B7B8118BA4615FFFE61693A75943A77BE0724FBE556 -ADDDB26D68D9014A365ED3D237731A11E2DD7D9AA51E3DFE4E1C40E0D1533E7D -21E4C4625108019255F71968EF2F89BEFEE4E9BE9A4B975DAC52DB0E3FC24FE0 -BF0C6AEA94DB4DF19A7964676D72C7706DA7FDC9ACCB80E59E0C69B60A71C18C -D15DB7EF042C58DBB38B63C81B961787D428DDCEF02B136A7EC4DAE53AC4F1B9 -BA74E3490C0C4D99742C777FEB8E2558CB627D78E5FC42B87E17AB389967964F -6AB51694215582BCB587CCDA2D1AFBC8E30F56763271E55849FAC7DD65EECF04 -243204403EDFD1D4A4FCF30554D254A7BFF1693623248E04788897E45A72964C -6FA63E1A9E5CD923104D934BAB99ADF847E2656B739D4A5CFD3DC7ECBC5E6148 -4084013ACC36D4BE9E7100D663551B64E36BBE99FED5A3353F976C373205B7E7 -7F33363C29A5BD36932B50E9BFE2441363AEA85B32F3F0A1889B795068187B85 -FAA0E5B34981AC5687785DDE5D8FFEF98F82C1C4A6D8D5B1172F121B13DD6C67 -6517E553E70270BE7D9ACADD018AEA11239ED14A5501854385E6A40B03E973DC -1FEE444C8050CD4CFB10245322CECC1F0F237CF7A1B3BEE10842B238D4693EAD -B57592FBA63A955D6763EFF0A007003A602FCA61BE2434922A811742DCD6E65D -5C5E054794124C14A81DDA7A452B787C6F2862C3857BE32B71E43957D8992D91 -2DD8888D7B66DC2750615B8644E6CD2559BC1178028EC68D66CCEA96FB62DEAD -AB30C790C5736B44745C89E3384FC18444A3135F57216E1DE5705CE4992C7129 -0BA6042F3A1C2D68D42FE579D48E5D71C79EE28232D79C1490A69C3827D1586A -F3F54704F98AB482599627BD8EF83362D4CCA5D5ACEA99CD0863933852E6F0E4 -9263657CE5F3128FA8B4970BB7BE185B0DC3351CB99E05ED3E03C8BEA7F66BFA -2FD54BECF1E017AAE03B1341F384D8EAA51D3E3D878EEB587491B60E28349123 -C06667C604018CE1821FFADB76CB0BFA9DEDE0539E9AF61AC16408D6732FB860 -93B3BCA78EBD0BF04F390D4F88C297DF5B973B2A76344EEC3AE27730999F7E20 -90950066C9AFB641E8A399C9EBFE4C42F57F965FE926192E24085D4487614EBF -163A248F9A2052CB37A4C3DC5C87396100CB079CD1F29D720B3DD43E832D229D -CD1856FC52C5B4A1B41B66AFD8A194BC7296641F3FA7023C5CC9559EC0D2389A -2BD806D255A7129BFD584FF4246B092B579CF09AF23AF59313C9353715B3F9AF -920F8AF936DFCD834AC0E3D6FE2AFE9EE678892DFD49889AB8B3A98318DC9C41 -19F9F06427D3C0842C7B1297F998A4A418C35CC6E1698839653F30CF265342B9 -5D489655750893D1FBB2FCCB3416E0A649322B8E07E0AA99A549356F20624E4C -C1A488BE36A1FEE7D46AA360CD8EA3434E24F70C8B65231C45563AE589DB0EFD -AB15D028A6B11DC7F05689005D36BF7448228327D6EB5EBE192742301C9FA0D5 -F6B660AFC5B1419A3F4759DDDC5D189573658911078AE51A1634D472AC03D419 -801615D6C3C5D194F80CC92CA2769061E9E130049F22032EA34BA39A31FBC065 -9013292C481DFA698E2417DF30BA6035E8B5686488B1515E99780D2EADE876D7 -31041C0C986F31495B7143C249079DDACDCF4A2E7E83537645AE60D68291254E -8AA4076B44068AC5E6980C3FD91636A2725188E623C5637AE59D839DA12CF247 -09FEEA50307900AB27DB9CC9CDC88A25E1D78EAD90A7DE78EF3045F0CCECA7D7 -2975998866837777B5D9B9895C8CD1C494FBB129C4D02FCA23CD9EC08532CCE9 -1F262A97C588A09FDB1464DE7E532A3129C65D609C02BA7FE221552601F459ED -FB88F5CFB4A3EBED73460AEAE2669488B528176747E4067A7BD8F85AFB3BF237 -CB00F1C0AD0AA5E25D8BEDFF7C8A4533B56B51D82C204BE683A235B8FF0CCB8E -46FBF025A784E6923081199AE2F5458E53667B45074606335F34EE27D134C109 -0F8CBFBEA45DFDF4199A27301BBC190562CCDDCD54515CBCB9439245AF95C620 -1764B0FE0E4C46CAC634292BDF57DBA10E2043A8BA45D8FE670D01C588C48AA5 -EDB7489839B6BAB1B6F2AAACC921B8E26135DF45942C3E20E8052549CA6B186D -F4D5BDA93AAC2DC7F23E50A81E700EEA9872C8574202F1C183D7587940E38608 -51D165AA7E8474A2FA78A9EFDE259C74DC837E82A8C1BDA65614F3C1605CC050 -7A9977C5D078D45F422BC7E327C62A43B80A127E623F8400CC55FB45900CFAB0 -88C6246A4F05BCA3A0AFE7352F0F2CF77FF5F001715910F8280B356A17CAFB78 -DB43081520259E452D79CAAEB5603A2B6C9AB027C2799CC51D081453C901F424 -6838294A51489B38C8EDDF7C6C903F232EDD9951F4151254B953E00115121F92 -5F5FD9F91BDB704F7717183C9C55C21807FCCCB268B93751DD737EC905C8A9B0 -98910693233B856ECADFD55DDFDFEAEF53F1FC27D7C7089DA7582A583F425C6C -DE8CF462400F9FF1B462787D0005A05F16F5904D1D10B0C60BC364A307B054C2 -E9E8D931B3A092535AD45D70265AB56D3E4403C7D410BB83227484D16E10C9A7 -52EA004678CEDFE2C2835C021F46E347ABADF4354E04C35431864305AAB8D7C0 -8776CF6239EF485E44F14C1E616F04D98627897D310FAF339B00F3019223310A -60641A172E0831EDB572F4E7D85BBC15DF0448A6DBD3435B5FF0A952DD86C0E7 -157A3B667BB97BD85FF37BD0E12D65D2D7E5A33DC12764720734815B65302351 -5B03174E29B57E3216BCD3F2B81001D8D625FFAA375B4487478079FFE5F0E21B -1A90AE727938630961DBF133B943E8A45EB061DF80FC718D35ECC246A24183F2 -43861B1258406ED408DED145F18D4CCB95069048C52AB14552BDFF1CB1F1F963 -6531054246EF3F3BC9D65B36345DFF7819B8949515F2313AC76B0F241DA78099 -E82A60D2BEBBF180E744C06F5F8E8C38226525FE21EA8A6CD551D94B15F0B8A5 -9EF3FB5A7F2EBCE1C29414821CDF3BBBFF808D4125E38D05F77E732EEE0E0CB3 -509229A60A80F475D61844189DDDE1F980D153F9F374B710AB3B96FD576B9AE8 -178CC951143C0E8EFF96B72AB4FF837BD334D2A516EDEB59C1E6CDCFCB3FD915 -C446C459C028EFFA658A6F1E833682ECC949E8D2353A24ED34643D348D16B4DD -020D8E8DC9E989BEC200429804E1B8161A9F7FF2DB2BC00F25BFDFFD02A5A82F -71F4678E5E5A8F6CAEDE2A3187285FF305C5AAB49B85C3A40087A3459E4DABF4 -145B0C79EC8AFB73E22391AD1D0DECB592354837433E6DD2057B6CC9B330AC18 -4D8C09E732E5E08EB842CE59BC1CAB5064E019B265E75F5457C41B811370030D -4E81B1D9C66D9D60DAE4027945F24F144B5003841881B8882D8E333E7F7A3A7F -F857D2F1EE8DDE2A6D441763AED454D51BC3428EB8CEDBC31FEAE877202D7EE8 -4C2E39CD808863A2E56930DFDDA7796750F6C133A419228BAF7ED0A19A3132B0 -39E641CAAFD425F43B1AEEDE1FC34517B97E41CA66B85EB35934ECC22B75F595 -CD0162C13EE55BBFDC923AA3BDC67CAEB280985C5DF695B81FBEA93E39E8E18A -09377C3D7A71BAEC59E0491BD32EE5E9B0678FD769796B4130F0DBF715E18137 -D02B5E851DAC95769FB5C038BAD5F4AFF7A77A0116B4E934BD06FF3C39F7A971 -5908D9993176C289C45F09C5D85DEB820CBBC935BC15E22A8CC0633904BDE106 -01EF4D1BF93D558582670B2059463B5E1D9B123B59E983DABE5F9E4A2C863D9D -B3254E1AB66A7F40394866559F0CF497A068A443851A02640762FD4010E6BAF8 -CAC3C146CBFC3ACF13F52A82B5867F1521251AC8D7206C93552E68BE284F0CF8 -6117F8B806C05C2EC35A1253F8DEF2A35637DFA8B65C316BBDD16BDF3179864F -8A89E92B76B761BA884AB48BBEB92C1075CDF454823F9264F9B028CE06320F1E -996245BF51EB4803E2D6CDA5EFB2153D26341F0FCD5DFA11D492DD002CFA5926 -1F1522A7645E6075D38D9D50F3FC54A24B2AACB2D4A0FF8BF1B43C97D7513141 -B828405C4D6FC4CEE5A4B8BEE106BFA1574B356C2BA95EA5B6EBCC5308F87AAC -E3E789CAC8FE3D7CAFBAA3A265682CE80E227A5C8B32ED67359D35C88BA03FA5 -DDC4D534D835A4C4085CDFAF7F2CB4E83AE70CE0C2C30B96179A0B8B73E0B1AD -16B7B134FAEFDA10FA5CF744050D7EF1336C335E4C3FA6D4A5B4C860F7AE1723 -D22660832E3B3D4F40E6EA7E85268D654F82DCD6B4DB7C5D27F4EED055938AFE -A7035ADC3A8B1774C85E1C49360C3335B33E46BF6636B93CDEAC43913625F72B -56D4A938A9CECE709D59EBD4F09C2AE6652D81D825ED1AA3A8D21F20EAC32A32 -85862B555A52DA2EB5BA78154E3DE2D7BE7A1311BA3AD091F7DA08BADC926238 -080920CE8E320C7F77AE8AAA3B6EED7A0C401BFFCBA8680BD4F5510B2B19C94A -E39A1118FB5848F30A401229BF01732FA0B0813CB092BC4CCE395357C3D361D6 -BD39C35DA23E57558D02D71384092EE97CC093F167275773DB33F7EAB779E614 -BC0C4CF4A98FBDADB230FBC21A134F0BB7011F03B55364EF6029A77997EC0A8A -7F109D48EB7F8308F2B2379B959DD5A84C2B19A7B5C887F16AB0E5FC30EEB9A2 -70E77EF36E155B426EE71FA1F4932BBE62F77215B235958FB97E4A572653D49A -D5DE24024D06E5EFB629FBB27039F9C52B63B7F8041665A09D760B0725A59DE2 -DC33D08C10F4D32D33982DF3FE18FC75B0EA2074367FBA4B21F51826FAB40E3C -F1E299C7757D2E6BFDA7C6BA8617590EB6E8AA4EB56762A6F9B0FA9A6A7EEFC3 -607BFC -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMBX10 -%!PS-AdobeFont-1.0: CMBX10 003.002 -%%Title: CMBX10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMBX10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup -/UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMBX10 def -/FontBBox {-56 -250 1164 750 }readonly def -/UniqueID 5000768 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX10.) readonly def -/FullName (CMBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 70 /F put -dup 73 /I put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43B233BABF23DF8DB -B6C2BD2F04672F9A3B7FE430263E962F16A948319C51B8ADE6E8A80D3D88023A -6DEA4D271676C2C8615C4A0EA7DC8F6601610F398673A4D4B905F49EA868FEF6 -39BE073001A36DEA6C08ED51452F062B971740019692E221F4455EDE46AF24B8 -407A98B791F6AD525C72C09776247E194043281D04FE1CD1D8AD8DCEEC3045B4 -F95B3B41CD3300768D8A049815348BD7AC1004F5500817E3A267D694AE108BAF -285B288FC5F28A03E9D34FE5D9B2F9A9BB26ADE66B1CF8EB5BE606E83D213C33 -DE083C20D636EF780E761944FCE3B8A950B1E6E7568F33B557C6D59E0CEAF185 -53E609A4F58AC4D5269116F958C4D115C44B5A6DABAB79D3BB6E60BDFCECE108 -74CFBE258779F32C80CD7D9A7CEBA50A0966BD9961F71560119668C4A0C30A5D -ED91ACB30940502B24F33906D6E0F16F81DA87EB6D7FC8B7853BE388C40D75C2 -2CA8F94713AAA1561F5321CE97997CB4AF0E37F44E25B0F73CF4986422B1CD89 -8F861CA623004ADB1C28268D7F8C484AA10C9519B6AEADC95AFAA3304D60E85D -718B2F67D2B734095E5A92C90785252C98067DC05137BE735220BBCB7C341D61 -C4B98BFB1EAF883D38D7A93195A059EF82B42027F23B6CD633231D704B891A9B -03D11A646F13898F20321D7BC150C63FD6DC6BF9CAFD8DA759E95384B729A0B2 -767B9F3E55C682F7A248BC1184F7D294CFFAE0B246DFCC8F215625DDD4F49F09 -FA8D41CBF4A06152FEB152C61539ADF7E70A4D23AF8267D25CE3B12D39D62377 -547E2528D18DC4134FA3BE0437EE0B3509223D71F06D44C6227D62BD01AC0A2A -3EDA975E894371C07CA1027B102549A7D552FFD25ED2DCC68E29E71BBAB43C62 -57B0BFC6A953ABC2EF703F35D112F6B5460018CDCEAD17F149DBE5B52C2B9E10 -9818EA6D97C8AC884F6841C9B600A7D868F59C1D80E98DE0741D06D69858EC84 -1B33C6C9938B7E8A6FF6C12AD456EECBD3EBAF0D7331536B9F6422019FAFFFA4 -822E79D6D89D6366DA636CB708894FEF904F366E295F1CB808E78E883913C4FB -1631248ED6A7CF1095C0C61C4F05E4B9DFC47533A5FD24540AD71A0E2907B98B -28085EB88ABFC3478C9644594C7DC4244ED5A7C1CA8D960B65497D56D174645A -B88F12C2CF0A807DA314017984CF3C4FB7F47392A651EB9CFA961B28E2989893 -9FC4D97171BD5338673F5D1CE2C3C08D48A1B77769F01D5058236C655FFD864B -80E28F900191D4EB349AA5E400A7B0A0FCA0F3E79D7A7C69775BF754329397B7 -D18B20B2683CBC4A19729BA878B3C17EBA0A7E9EE297A5B67E915CAD92C8F356 -582B8299DE6A58E73408F525F7EA895C48A8F0D626A06A96A50348DFBE479D89 -4272576FBB0CD332193D28A8F11503BAE98F8E1D73CF5BCADF23DCD4E6586ABB -323568F5A34E359661074D50CD8D9DF27191FCE24F10225A5D721EFDE2547E1D -CA998077D2340B1A4ADFFF570AA677CDF3305D5E3A394BB1626EB35074D4EEAC -2F037CA2EA389F7683FD17A8E07C12B4CB3BA8C249C9B12D297C618009F76717 -0EBF5F2DD39A6BDA10A2E5A811D4E190660F5FDDBA29201B6F8042620397AB2C -E59267A7247B0463891831A6F40582BC3F614E5167B646A8F53D8A31717DD9A1 -9034034E705BA7884F0E0738307AF69D3517147C282747F2788462FDC4336A4F -9CD222908401A25F0A1F7B13B8DAE622DC965AD0BE62497420B70C04AF432237 -E0FDD043456187658ED93B0F9822A3998511DF05E59CC85B7B9992CA0CE3B814 -9723BAE70D2631F32B4BF93511F67179FFAD2075E1591CA5907A4C67701B56CF -A5E5B02EB4A842BA1F18D6864E5677359C2FB4AF5BCBABAFB053F230CC129B45 -8D15413F736EB07C571521C7DE2A13F2AC1C133D491B0A607197BE9AA1231D96 -BED7968788246B2E4D2BD330F802810F5BDA3760FEA5210CFC6F54748FB1D921 -5CC3624BBA5B8962AA7D94159651589540B17CF7A785F297264F9C1006D36928 -6E2756D3B623A6087E4B106FBA76255903C624C07E18A1AF4E185A533C640711 -86BB477A906ADD36EB6C8F4A12BC2F01B2B98412E4E105977640930CD998D990 -0254A1E5E9843B7A8ADE0AF6D5871E6D3D666465AE69813A2E26333213FF6713 -6F08D55A90C079A56E1B9AC655F720FC22B5AD8550FFF26DA7B0C5A0B60DDB05 -64E8FAF684F3A455BA9BC9278043D79537D201D520E38750335A4C8FEA887377 -879331B68DAD6B253F4FF9981D0F9B9550ED5179B15EEEB00E560A3DB6E5973B -63403E4E2F40A3D0B937246E9652000B917B1369741E0F913C14C2D2D6D1FCBE -2CEC4422177C58523715BD070002EC2E13D383A1DC8C84228862B6C5D3B65667 -9FA97E175239BB7FE7E37E14B96DD7960A8AD49DF428CFC13B5D3CC22E245317 -47B5244DA97F1DF954CED2D552477237CB23D037C0DE728E26C82738954EEA1F -F34FE497DA005AF03746DD2ACF77F6E6F2C224862A1D18AF6F7A5DAF34564387 -9E01DBFF49F8621C058C04C2B3F4F3033FF3E8A977B2CD6B2A3CA4A6C569B19F -C5AC457AE9AF334DA66A730960C7565E93A2D373C0E3DE14646FFDA05DF4C6EB -6D4CA8ACCA3C3115764F77B842581760BFB9E5C0EBE55308B0577A8F4D968CE2 -BA3361D79378D451DD150C34D7E901397AC63B33BD7DB13C50D678F5DE999238 -4B4EA15BD449C46F262D931478F5685CDEEC4C4201FC3EFA607AFB8F27AF6751 -125DE42D2FE2D31DE769B7E7FD8CC8C5D91343B537139A822A5BC4160BB5314E -37501F65B4FC35475FE9E03E34CBF6795AE86CE409500BD0799DE39FA69978B6 -EC74D2197C03632D3F59B85F404DB31240968FA75059B2581B101E028CDECC2E -7E5E25DFA106E9B8ADB81E82BE9ED3BAA9D03EEB22B7B67AB1262DF6AF5F5EFD -A5627EFEB84F3A5F92EF2557EDA2843D7D18C592635623CEAB14CC3620F33986 -410D6DBAEF9F86E4E6682054540E2B01D8FF2161F10E66851A188BC15BD6666E -8D3F21709F196A31EE676D28A2D12639CC2E7020A52910F052E61A0710DF09B0 -064171D05611451BD24FAD64716F141E1C41D3218A8115A3D73CA041D02B46D9 -28C3D07DF0FB668E8E91409C8D0A26A65CD737C075E026AC0A974C9BE658199B -3B9D82ED95E4646977D8F60717DA4C68767DBD7E8320D5AA1D5DEB2E6B009759 -8282F27D64F1F904830AAB501CDA4D9233FC2F12F77F0FBCC46E6B729C71F6D5 -E6F3EA02EC35D1048394F4EF2177FC5EB726DE5EF2DE7997166B8BE5B5105D08 -EAAC3481FC612665CA112D3F889A0E5B7843EFFCEFACA24A01B6AC2B7DDE02F4 -A9295AA2409A3756BAAB44608DACBB56840060037869455BEBA46F10AFC68DD0 -0563843DF111C6D34911CF13AA6023E5E899060B5EC60D0F78FDEF3E981151A9 -24903EB13ED1A67EA1977449716D1A5A7EDE1A2E9465C9C2B20A58AF02D9F373 -73E627CBF296B3A6A4670C39F3B5EA30D76F0362C81020A1777F0ADDBC6B52F7 -213FEE1718214087837049CF2AF00407639657428B9E8B532F68B631611A3501 -3D9DCA38090E227BD0D6D0FB4130EE866DB6B195C873AFD18DDB3B1E40F740C6 -B3B375ADCBBF628A07A5FACED539FEDA3379D3B60216C2EA6629BE2F65199D82 -FE3AE627D7C67270F3497AE75F7A9514968B5950E2D63C38DA240AF4E6CAE88E -E25167D179108679876E7C80C85FE1D2BCC2EC9B88BE76A8F5736E8E6B3A9CF9 -42E58A4ECB7914865E67C1468CF66D658206830B9380FE346DC2DC4BB56A92CE -4B5E4EA9036C177869315A2D9E6CFE97E3BFD7CBE0747D40CE5E8A3A0988576B -8AD2B1E4314C0D8A0CBCA08844A49F7E054D31BA7543730C0A7390BC4A288D10 -CE29E389A4791305D3AC1BB6F77C805F1032787306F78FF76A20A9E629899F6D -13356768D33D7B9E294E8CD50CBFB9CA02A193922BD9B4372C912D1689B6644D -52CAA30F7421E8114D077288119AD9514EF21E5B9989CCE2ABA0C12549FDF493 -FFB39736AC9EB72DAF45E4EA6057527FA9F5AA0A1A3F03C12F7482E465C766D3 -760DA7714D56C91BDAED507A5572BEB51A895F8DD3BD5AAB042650154FC7E4E5 -5EEA6194DF73AC5EE2CBD4EE26E29B1D2D0C458B4850BFE842DDF2EBB4E2A25D -C6A11CA2D8F346E2B736DF88A3D57BC0380B52396A6C039212699F5D3342EB58 -0C3DD5D01D5078479BD9FD10C07925556C0AB0F03606F33796BA72074549EDA6 -E33644F62CA35207D7421D2727AD8419AD1772789D33405FCDDC9286BC34C974 -A52297F5BBD2E541E8BB473F733AE5097BBC9D5FACF18DE4173B4711E28B23ED -16E0A6746A60F6FF903026A3900169EDA87D98396E762C2EC963D89197B8CD0C -25244806BE7CBF46BE60A8F9171731EADFC969C28679B025371E5572E52A0EF8 -B3FD9B4638D03E20BFDEC9345E70B8166D38846DCA68E0D0B4B53629C7E7620B -45E0A610BCD07FEF8814CF915CFB11119F42407D1C6DC1E6353451D40A382C2E -C74DF2A4889ED5A3495C3E973565F7178CA190D22C9693C10EB12C1E7A8679CE -4AFECFC964CC98111BA4ED2BA9B10292A71D5B11870EB08EB483922CE8628A06 -05E7CF6DF93E112B60EF888AA8DB52994EC33DC7277D7B7A4F913AD30257261A -D6EE80476A9A8D316D190BE6CE0046CBBCED365AB305495284FA921BE0638E00 -63DB2AA4C5F163340BCCD1061B469504DEE350B82FBE1689C1B65D095405614B -35997D6F0DACA7190D64ABA351705B17B23FE2EE5996FCD607F49F54392463EC -DD5B944A4B82FA2BE3E75E2946D483060DF99277340B0AB65A2042AD088E2B75 -BBDAB869D1940F64B50D25078519D18748AD64AC5615EFAAF4F3105B0111AD40 -70EE173ABE6A4ACE486B4E5999158A4377FDA6922FAA6E9305F48570D14BC81F -BFF4C663E1EA9D1E050534F9315A663C4C5DA52CB02EA6408AA473C32CB0CD71 -169BB43C0508A842F400240F0063243B4C459A1FCB3312C41C32ED0EE87F591A -BCB6D5D3830AE4645CB4D40336DB4AB6540B52E70E1EA415CC6D886827EBC5B3 -EC35CC5C136243B0C20B3C603B648B132B99D05F9B48263ACFA59A856BE74441 -FECF5C6D1FE9D1F4F9942F460961901E16017144C37E83C6822177B2A6C47ECC -6C47A1104460665E5BCFCF08874008302750EB991CD98D0D8D22B921F90B99B9 -05EE7C39F2BC2A7798157503743C9F2F267BDBE2E8A4CDA7317F81DBF8962E1C -EC02822CC7F770FD4D08D335904375BF0C6DAA0510771627ECB9EE69C0F47D30 -69A87052989DF80D9F4F19F75B070C3689AB3BE0966453F9D56CED6C1745B50D -813AE6D7E44B73423AB3778ABE4CD2C4DF40E14C5A426043F7057E2DFA2DAA70 -EA6723F1C7967FECB1E7C1C0CA283334163FBE31C32254490170C3513580A552 -19A5DD75E6C4ADCB12D33517A03318A6BBC7E4214266E125140D8C40F78A0340 -1F95D9FBEC4DCC55B71E89375AA94B0D55646F6C069561480407D0A3AC127024 -D7D1E9ED6B599A2A8766B8792F46D35508B66F302D289405B101A3C6BADA680D -8C56E2A00B766A4CB155446F862FCF17537A2BE85418E20CD77C4F1F69F70BC6 -17BB5DA8FAA876D0E8BABE273A19C04A8697B3E3CF4725E2C77C8761A9243F24 -96F8AE96399996001A57FD75106745AB4646FB9C6421F1D4EBF3BE533BD11AE8 -14BFBD6D308376B26E08E4ADA490DDCCA94BE8240403D5EB0FE3549061DFB668 -4105B4FE77189546619B6BCF3F9723E278E98D50A17DB8A4C46744FA21760635 -5B332689316BD17C966D466AE737FE3ED7ABC443ADD88D4823A10BC9747ABDEE -027515AC353A420523F85298029475D8BFD83A2CD00C02CA07974BAA581D2215 -A850E6E4C0A5E17E0EDF91C63FAC18C70093F40FEEAF0350B403E2806F4EAE96 -BF616A805616EE55C4657418C26CAF54187A6684821B86A76F15088AC4D5B551 -66C3CA8DC61E9810858D1204F899C7E3A1754F483134609F6EEE6364B1CC04FD -92C86EF194FA3249601AD722D75D1D395CD15A93C768EC60A486AE885683364F -93DA00A865C1035F913FDA69E7D9A0422880FB81EC23C00427F07A5EA3CCB613 -83C859958AC53FAEA26A6BB39ABA068863CCE3D447720BC31A5136E08EE58963 -093AF587A72112D55853A1048A2B1695DB2D7F13CC924F2F0902071260C33ED6 -30893A04577C0ACF0681C0FEC23E5404F844A83BB5A2F8DE1F0792196139993C -1152094BC36A6AE5BAB4B8281E506F485F0BAEEBBE71E174B7CED1E52A8242F9 -DBDF3E0FBA296538D964EB5B7A4E23B1BB0F59872C9D4FE8498203E3AC08B71E -D2B965AA6CD5D20DA6C83FDC86F4A5D68A58A72C5BB9BFE9BC755C56B24025CE -6F24443D3CF32CD711D3D94C7C1DC275DDAE3341D840090F97CB6CAEF274C94F -9F3BD3AAB3F98BA8A7B5CE5E48D1462DAAB37BEB1C10B410E8D33FA42D898183 -BD4F807112D78AA94509E33C179BF7C9E82E55AA7D09E128A0DA06A330CF4AF8 -5DC861498CE029CE8C1BD15C923A708F2E7AF98E4F7B34212A0CB417553C86EB -6DD46B0466F1A21D29FC5111226794ECFCA5DD4240C0B8D106CCD7EA6F03E133 -BB7733F055D6FFA04EF5C6F872B4FDA3E42F0F036C4825543D75682ACF71B548 -DED160ACD05625274799D0AE201305DA526E01A3D2A719B1B15C05CC09467F3A -5627860C0F36C503EE392E1786620F3F2287AFE56634E03566B9B1F537FD92A2 -913166228791871A8F8CBA1A1DA634E8224058052A10FE1E67CBD3FD21A6C07E -243CBF58BDC78577847664EEA5225EB8D6679AB17C563848A9D4D58995EA3609 -51C1443B752A070D9872FE1643F0677019235AC25DC2B29169D38308F2170A1A -A0FDCC59E6602197D2815B914041FFC7106DAAAF30CD97400C6D0826A40385A4 -C8520119A065CF32CF2FC5FBD8DFD29222528A7F96FDA533145846B3428F8239 -E50277C366418D713F84B12A5FD4F904DC13DB1844A391FDAEB97643A6FD2945 -942FD4FC5A4A35E184F23304B8B4D93D0C37EFCC4E106D4FCD0DA3E5D2117589 -3FFC2BD1D121026562C55C455C3585050B9460891B006F62D9D9B66695C3D348 -A467C14C0256FA9621CB056E7CD389505194FF463BCC4010897F9A690EA87D9D -BB3ED4C174FBADB8A4744C6E4A44D773967FD703EC37672F9993DC48BCC8A060 -6CEFE8E6B8F10886E15BA0466AF410B90DF0020FAB88BE493606B6A734EA85BB -926950EB10D2F2CFDBD182B0F133809612CCF6ACCAD049C8005A42FAF78368B9 -E7684F98DE421BE0A3BC0FAEE024A7BE67E15C8394F17FE84DFD8156C2A3E94D -08259E15CC657E8CE3088395BF6B5F825764E141AE15EBD186DC049261623D26 -8636705E06C6E4A1F8ACAEA59F91B042DF5DB9C2AB986A784384706A43E5F18E -42C29CC1CA86D4F247B3BBBC89F3633EE074DCA4AC15B1E33EE4822812A62E88 -C32B0AA57249980EE17AFC1346074800FA529445D18649A0475246A25CF325A0 -BDA06AAF392FD455218B13D9ED577D51A9500B9FB7860716A8E2FB3A8C4BE3B3 -6656C6A5653AEF00184020ACA0BCCBF48BE3BF91E11C8658686C89848E714E6D -DC158DCD1C1BC03B83FF94C60B1DC71CE8A86B46DBE661C9F8F4677F8A2C7CF1 -E41A91EBDA2304735147BE66CDFF2673F09D408297302124C127F0B35690CAE9 -CE1679120CC4D582FB69550AD34A047DDFCD9D411724554CCED753DB52D6AA7B -22B0C55EB698ADDBB0F8ED15C971AEF113C74B9E25DA29199237B98DA4023665 -C2A63A837E4CAB38F8DF37DBAB5DC80C0AB25B56BCA5D899F1575E61ADF75676 -F48EE26C054AD9A75FD88A3E17498AC26FD4DC8000A125D6DD423540B8A98779 -B28CE97C9CAFAC45693FF43249E4B559E7F19FB349F94B60AAAAF05B5FBF244E -982B4B51D997DA5811CD43E1917DA885DD96133A5CE1A290DBBFD88AF285A879 -D3136C41C839FD2276760A7B4F21F4026AADCDAB3F113FCCCA9588C7FB72643E -AB8F6D8AEAD1DC3DCA6E436B3DF24E7DC6AD37137B49327871EA80F3B8AEE932 -D20D9A5B4779DFFAD7B3E5D447023D6433575F8F5AF589D7E094DA3786555D0C -046A427ADF128E00AC7B458D5A131A130D6F49A7ABF47833791F172D69FE6393 -EAE0E90E7FF7BC2333D4E0215D5201E4B209591782F8A664335F67B9DDE36DBA -793EC77E5EB405862D14EAB6A99218B3F66F11EA2F345629C402BD8FD9CA0AC8 -FB5A2E119DAA9F80083C9BC54F4586C44320993CB5D9CBDC8F8522001F82A16C -E307F175B794F4426E5D273581A6D2844444D82093FB03482B270D693391DEA7 -CB26D4A418E48A2989167B7DCE251F0D53D5C9B29D359A568FEDB965DF31CBF3 -900392FE739A2B43BFA2363CA74FA72668FC761D1A17B9C0B56D6172499CDDCC -90EA538A5526FD5AFF81D04BFEA703E5DA963B11042723106704021C1B90557C -B7AA96E076842E2C5F929FDA6D05E0B91B5548006EB4A6EB262077411083C2EE -D51D0D237A85D6480DA41A9D8DC24EAEC0C849E0D53D9FE1E54ECD82C957B8B9 -ED68D7B29A43F369C28272083B7B4E700546D293DEDAC7E74EEC946B4412B0B2 -0639AB78E79402C787F50C4F78991DBC12D73F5B371BBA2CD9535EEF0550084F -40A4B2C4D178C0C001E63E08DAF15D064426F6F24C49E02AF5417D18BB7997D1 -46CD6476615EE2F496EF2D2E5A6DE68ACABAEC2033F9F3689D9F8CA23483C81F -8E9CC42B7AF2BC3FA80B68FD37E3B87FC27AEB7AF6D2DFF9B4B7A60D26292AB2 -36461A349D3BEFAAB8918729204873D7793A647387156252B5A1B975639E02C8 -9715F8B4853B592ED9E467BA41B32363ED0D7557EA0AFB8EB093B4CB1FB3CCD9 -3369A67A60448575C7CE305DE7C1B59DC21DB0132F2B67B7B31EA068C5942DBD -7D1BE9CBA33107AA60AD033EA5B3618B83BEBA01BC0DB592BCB0796AF520E8EF -BAE6CBAA5DAB5897040D6CB1E3EEE78A98B59897138A084E64E116446EDAB213 -46AF2FED3E303F05D7EE630434645AD21B410AF8C1808A79F96CFC56741F62B4 -431AD2FD90CCF0A876EDDE18506E73B4E390C752DB45A2E8BB824F2E0310C59E -864A74877AB522D1B477F5A3D7ABF80CC031C2F2BE5D633E49E6D10EB6EB8434 -F17B15274840BEB842587F3B9AED05B97DD603AAF94D5FA688675B55D40FA43C -6D97741D9FE5F54C7D441AA62D48801769531ED7EFB3C438EFB1B513E93686D7 -1738FE955FD7C67F11323E059BCD0C4BEB275C26835080FD2AC78DE88BF65298 -A8EB4181F48C420D219CED950E4C0FC0330B49547E593F961B2BA33F375B75AD -3EC510349E6F496EBDCD1206243547DEC26F9A61DA31D6CD94A54CC54EC81B0B -176D21AC6779041F73E5DBC0A2107B612B9B89E20C373A057CD51327757A7928 -709B4C8BF80A78F5E2ED84A4941811EB4615720B646962D8037B07FE87D0E97C -F4FA509B30F40B5268F2FAA0615532EAE51CE1F857F270CB5304C5D21C76E501 -E0FFF703BC5D6E89877C911182DA4A939000AB0025E8A2B45590E4E80363ED65 -A7DC71D49784A7FEDC08AB6A58051F7A1CB16BCE7EFCD3969E2B49DAED8F29F5 -82ED86CAF81946032CA6EE62D04B068FB960219EFD6F33B33C27B6B49AE12BA2 -E6E677B95C8A90014C261C50958C69140F1F2C914618188154E7455D050B48CB -DC2B7CEF8518BFCBA0E1FE18CBB79A5BCE21BFA46CCFD6B4158BE06C768C73F4 -7089A6CFE99CAD9971037145AED0AE8FDDB40713F58F4803A0A78C455C560DD5 -2D9CB7B33928A0A248D16C6625A52C621744F41DEEEE6A9467DB7E5464F6CF6C -76B1CA4074893F360FD2D627F1D3FAE885D922A305F3CAFDAE6C20BA6346F0EE -E6593B6AB680AE19B67C76E8ABD370D5384B34D68C341B1DA6E735C370E8B5CC -3FD853D69EF243D1E3FBD3B1E5D72540938F542D983040DB65AD2F2D3AACC061 -BBAB7E37B95B6FE56D0CC3E90F2872FCCC2258B343F753A7BC8B7A60E9C93E58 -16581287CA52C91C95FFC4606C3187E7F38A87993F4D9B3EABC6E30D57CCF0FA -4E3D392CB0EE88E45E599BB5CC61C9EB26AAF4CB4E7AD44889B5E7E8B0ADB020 -2E2A034C09BF4A3D889594991EE6081B03663C98D3B0DB40C47E34709944DBC0 -5AA388D4A770C9085F5068F9964DE441F538254C4583D04EA2DF6DD8E4FBB600 -3E41629615843693874D67FB56FED2352DCE40FA1BAC8386E1F2924D310CD0C6 -3115E709D26257B5C19979E675BADE74EBDCC4993871E9718A75DF7F3B5D3FAF -F141BA38D65529F8C28C28D20FE50000C38BDC6A50BE2FF853710E22F1F98824 -AF736EB973F5BB591EFBA74DF88040460BE1B41F1DCEB1349D281A1FA5BDFB1F -A225CEDE409A83E8E129216035F189C9764F5744027B50DF95864E0159B477B9 -4FACFD9D63347D2E8B820DD0211E2DD31FF5A7AC48D7F471F1DBE0D0535789B8 -1AD29000BC87CD89A67BCA5F06C891C34A4660A3E4769323AADE88F539BDD546 -18B6F184F78735DDC5B14BA036E451D2B942C3780BD59AF901EA738ED4A85D77 -64EBB3116622F640366726C4A4B42BE89AE7040E10AE6F7E3E0D97E46E70E0CF -312F217028C2BD74CBD41D7FCFD4BC7267E2739FFEA096527A5B6CD8AFE97A87 -CF71BFAF222A2688683647271CEAFB80232EFD4948079302D79FD349D84446BE -5929269B0B4D05B3980E64E135A4F2A47C030203360F1941FAC5C1A1A83104B5 -68A3601806C60B33034A103DC16FD18B309C660D5004585BA6602B782939220D -351CE8179EE650B0D9C5050670AE394987D800FF2403F3A9C6A02B03E13DB99D -69CFA7C0AC1AB29B7607279862E41997BA05852B825D2575676BA141BF5BEB16 -7F3B35D43FA75D54066C370280B51CE82D5A1DF1205655D7358809552E38F80B -4DED0107CB4EFB3792223A2AA23AE7025F99D532574ED7CE8FBAAAEFD096F439 -B2D128A440DDC4886679BF01A7B127F68F2914E13BFEF37D799DADD1A6BE6D49 -17E8A084B9C290783AC358B95492AC7E1450E00BB9D0279A3809C6F6A80550E3 -A89AA8A100BAECC283B284661CE584A0F2CA51AC50C41D300E540D53723DE0B0 -184FE92989C382E8FAC2DADEDB73FBE42FE8E5BFFA61ACB36FCAD4F88BBEC2E2 -464A453049ABA5139548EA09718566B9DE86D04C3628DA170A885E82EAF0F9AF -A9C087F43AD07BFE56FD1D6ECD3F813C4B799B37D21481BB42DF6FC2EE0E526A -D721BCF39FCDD82C29413B52E8382F4E226B6D0A34EF6C23E528EF92F4C1B3BC -3128DCE9B8D68B81467A88252A70737B5140DFE152598D33FA161541F3F685BE -AA9AB71AABE3C2B949BEF8F9E96DA8472455910D6D61F24053B2D535147195B7 -2AE08A0D398286B2FB9050CA34766751BE84E730E799E404C7DB577CFEE6EBDB -10C814AB76183540CC368C0576501E138E4B2B3E55277F279CC71C87586C0736 -E62CD1CEB660425F040200EDAE2413F87FB6319106D6558A8DDBB3DBFC5E3532 -E70E13657B792C145FF2515C0D4B2AF2D9C3047E5DDC31CB8BEE42930CF633C6 -9D64978FD33DEB0B660C6C18E482FA39E54AF024B5924F5370E9C13FF635889F -4585DE3FB8127107D4220765D6C17A4A6536C586D6C9F763892AFB4F4404CBCD -515710D6B05C1D56C412718F41E74F1A3F132BB07771BEA13BD36C2714F75B49 -7F4632B1E182ECDC3B6F35E15E1EF3DF68FC2169556E2C39534F12614E0D50CF -902F521371898EE2F22B6965A3BD5CA5663314D11182E93939192490B0A5D703 -393ABA71EEC2416639F5AF6443AC340E3C4D43C6BE69357242509F738DEF1A52 -744FF295793FB839921F63516F5B2668420D17F2A20DE6C4C8CCD1BBB12881EE -74E1B7E08BDC853376FDC5BE44503C1B1FD00D758952A1E8403E16679A7124EF -C120F517CD16470C6945C1BF0C5E9F217FA5052D5143848C1ABCA495C4AD7980 -D8EE59A9F3F4A5E3E3898E7A9F829E3F52990B719FF6A47FD59038B5F4E552AB -9627B35725DED3B01496731471E3864466F59B909A039B8A02835E748597CD52 -470ED016CC613ECB5389C3E95E4F4E5780F00005CA8113C577AC7D43A10EEA63 -187FC9BF6907DAF69425D53BE1EE19D427AF6EA42D868A458ECEDF0532BC4268 -2F93CB185890DAFAF858FDEF5E5DC3D71EE13FCD512AC3A7E46A9FE960636E7A -563CEA2B5907088AD0C7E5AC7F2CA4F5960E199CE277D9387A34CEA35ADCA39C -F884C21560E71E1FC3F8248FB899107B2711337DB9E4DEEE132EAB7E0C3F6D87 -213567D866F34F405F07EB49952ADE4CADB5DD00B52E6BD1DD9A4FFBAC99213B -4105603374C9297D5D024F0F19E2E70AFBFECC928925668EACB52A75AE71F012 -39B1AFE2F7C0689AFD18C695292A08A4DDBDB3F1B33B1124D83F6CBCE2C621B3 -261D18AD7027CC619E9AB8A36141E409543918493ADFD1851C5CA878F461DE33 -706D4DF25FD9182144F2C7AEF5C003B1879D14A50D5069F0B6D52C049054A401 -E038942915E40B5D9806EDF9501D77774F7ED693CAECF88C9594782E03C3C114 -D36902199BCC84FF858DBE4C95DC4479CC051020A9F43A6FBA9649749030F2FB -3C48150B93D9E06A2FADE997CBEEBAFD0D1749D6DA209390F000D7EC4EBB9704 -32DA27E9AC1E6CF58F4100ABC8C6127AECE3FB8EA4BB97E4F60A7CD2D8A05BDA -8033CC5E39862C78FF5929791D839E6D342A47FBB29799E9EF3CD6A8D9EA09E2 -F97223CB4493A5C3BC1CD3EB4BDCEEA60FC78A82F6FCAC670252AC6FAC74261B -06B92BAFF8EB6DBDDC6E8AF7655C8F4729BB39435104D6479A816C56363E9DDA -01D132AED79F244A9050F81FAD6D73368ED5AFDD320D9E6D066849719CEA7C1C -99B901F2D7D63043D36309F06063557760BB0EA7805A438AAB42E6C360D2F050 -D5CF8F2BD82076DD38D7F4090080220D23CF25C7ACF3E3CBD66EC58EFA89A4A5 -A519D8D2F4D510C659F57DF4DCCC76A21806A24FFEC1A930125874B2B979C033 -B576965EFFC8F193D843DEBF3350376263F67B732F60166495F50105F43E4F29 -47EFDFC20A4DF5CB29838ECB95F682C382B55AAA87B02588A6A2FD64E95670F5 -AB185C2AE26BCFDB3DA40F4C615A21E18FE8A4981D4E9D4D7F5E235509044B12 -BA093E7ABFC169BF21DC7A2038290A70A5CF293ED04F9F892B58EE52FBBB2328 -EC9737EA4EC06131E5E4A438657969EF06AA1B4D4CBCFD4541D2777C97A3A170 -04776173B38C1B77F82669484FD07061BC5978F9ADA0197AAE090E9014EEB1A7 -72156C2BC994E748283D15444774B7D43F481522B7514AF900C7B772D52D8835 -2C1B6B496DBE45EAC8D1F54697500D71542E9E7405435CEA41D9F2F597D94539 -A163328FC05077111438BCB042C962E337E4493491C9C1F0196A6905A9965F49 -872B07EBA22F515AA56B5122711B3CAB4EF9FE8AB5FAA1814653F5684D15DDF3 -89B4B65AFC530B543E2F5287BE210270B93D0DCB125512D6775E8B8C6790F291 -736B3D9261F333AED2A69199A0ADE3C12533C8BE653447F9954D3B56E1995BB9 -5252295542A72FE2EE4589DDAAD72CC0E6C30470E4AE5399D054D42DCCFEC5ED -63F51E58627D5E262212579899A972B7835E41E4499B682B22645E49E4843545 -924546BD825A388A284708A4A9D358DEBB89BF70EF17F3C93390D29ECBF02C74 -B9F283AAF7ED938EDFB91AA665061354F84D0654EB67993D18073EEFF9508D30 -EFD997B30F1D783F9D6D4E2DA75E11BA36F8C26E810F718B13646CFABFF54643 -555A00BD56387C9C551889D698B46FB83704EC7FF41F573C79356CBC2EBA2061 -9D4A5E685EEB6A66FB690E03292AE7524609359715B0D5053E349C5CAEEECEB2 -7DC3C3354AEF685620751C70E0713C47141F87581B82BECC81A6045E89958EC4 -0E7D81594558E39A89292FEC67F306AE635FDBA5755FD01237748CAC14472552 -36B0A2CE2264A34F35741831CF21AEF590BD407FB80D726DE4C3FB5A1FA63959 -8C5298BD02EABCCCC2B4CDCBB6A5CE017A18A7513BAB33AAD8C1147C7611A9BA -FFF33ADCDDAC7A049B3AE0A94D2F35C4872320500E68C579F9961B7C40F06561 -0F5BFFF12A52686A4B8A180E5D088647A90248820E0C204E081CF17DE6301417 -6FE85B823A7C5C24D52120D7EEE87F1CE1638A6C39B554563FDFCFE7F57B3F6F -04CA206D2BF1373654D8AFF1F31557F7F274EAD3A0CE54CC7B45A70FCBAB27FD -C5D4A36653D4663E33173E5C99CBA2196FF85C9E48C224CF93084A27559309A1 -D39DC29FAE619426DFDFB6ABE33C5B9E6D85B95235613B6CB8ABA8D9B7167F71 -4F3529F3B691D452EE991BF9D159F51AA5066CD85A1E11AD16B293960775B199 -8EA3327F8B6701CF2692A12510BA4308C594DCCA4F6AFCD015C8FA8C921FDBDB -2773016895922821F87E18A18ECB0F44E37DFB1DE5A1202EBD0B745207FBBE14 -2E56E41B8F41A025F308E5E0A7AA69A90166661002FA6784A81925B56582A26D -1BF437F4187D598513D13DFC19C9FA4A525273CDCFF6769014093DCA26556BEF -0BC97DA1B23FAC0E48708F60DADC477FF34DC5880774A1F87F2C0C70A9942567 -5695A0ABC7361FB116EED1AE2A0123C1ECA4416BA0EC454DB2FA62E127795D30 -B240472543D83C85284C2CC51C4B08263313213BEB45BF043D34721866BC48A6 -E54490A93E958B9F47C3E881C8F476F2D963395E27844991D49E3F0BDC2DB17F -5A99BF8C8438D2C98C6E1CEAA8F48B19D4D7EBE6B1C9F153901C2F563E3E6B46 -E2B8B72027365AFA49351308EADD1A03E5D0F70632336D1C7F5A726D874A6C30 -91834B39EE6ECAD3EE7CE8536E2E313E43A348D6B42E0255E583B79B955AAA78 -2E456E0E0FADBFF233E2C7F14FFCBBA768AC70D424FE9E33F07710FF6362704D -9A602F812BA693365B1FA730A5E411B4DEB12F138373A9CDEF11E8568659AB35 -2442BD5DC23DFD1D3534864F1B1F08E1C90E2D393BC1574E70877958B7F3795C -00DCDA29EEBEF10B21468F32610DA773CA1EB721F84E299F921D810E01B501B2 -BA04AE51EFDEFDAFD90A93E8B1F4DFB226BBA3F11593E52C9B729BFADB533608 -720B0C72FA5548BB957A8AD061B696D051AEF50771CD338BDB2ABC4188F01ECF -299A8820B472E2E992F582EB8F2E8D16D211CFABBACF65AEB73A5BC81C817093 -6978C77D9E18731D34A0817EFBD6AE1C55B507A6B130EEEB31C8E769AE5E3346 -8844EA1958AB9048B992AD7432E14AE883B71E32BA80AF59605D99D6BF5DAFC7 -8C97CC9665851EA7115F8023B5D0A87D334E74C46E5E463C7579A2AFC0FC4EA2 -0E08FCAEC43F1FE423F1D855B297A6F2A709F364742C53B66D367D6D3D16C202 -A0B83A6041C9538548590A94E399A0C25692DE48FDB3D32D64869A9BB7E6B90B -3025D56C235D53A7E31F7A408529A86B0FAF7F415B3CCDE70DF025580677A455 -F028010F5E3FCF7D16A50C9500A6CF3D3C4CC7C0007CE52E4A17E3A940F3C1ED -6E15D8E189B5DC36224884FDAF0ADF4A12BC4B53114CA1E3D7AAAF8CBB7DDEC5 -2C108337BBA511F1394AA5FD0DCA9E14A07B167513EABF33029447D962D9825F -90B0AA9C76D4EA2C6D6F971A10B18945B5EF6CA014602BCDAA68E05F00872F84 -F208006F6A62C102911BD442CC584FD6EA91F7041C4557C98128FEAD19962F35 -23A9BD5A28F496B3DA188BBB6C646C225FC2F0D289F77ACF7F1721AA7F4A55DF -343F16DCA7F33A6A094EF095285D295595AC942C1EE9A39F868ACFB1AE7DACE2 -C6CE1BEDEA0587474F2BCE1B5EDB01395A54E656E7D0224BD6EC3EA8AA0E5C9A -AD672BC1B020D479318ACAD7810EB67C7517728831E193678AAFB249525DC218 -02676F4275E656CCA7F30470E4D6A9BE604128F1834FDACEF510EFF999F0CEED -1AF10B5B441796683305771A612944D3415824637F3167B455200B397E79A7D2 -A462FB0ABE96485B857F306725AB27E349B3711EEEB7033C52EBC1F2251FFD34 -F37184161E9E3017F646FB7704DFDF783BEC88651E1BE53B06D0297687367E1A -10842CA16C864D91A891A32B39F0C7A172BA374AB9C1D440243FC8404772A347 -6F6970579327343366E4A6EC2FB370A2B55654B4342F02C1D8E3C5AB45A7B6A9 -1CD7F03D0ABD1EF0D60D8CDE18A69981088E4A6324E3AA3545972D0DF2298EF9 -D676EC8CE48DDA8A62F03222ECC6B0B5EFEF0CEF9218B15730304662A7584EE8 -3C415696AC089BAD01BD6FFAD858F63A9B0E12DBB17F630E7E062D49E5191F12 -D65270203B25EB0F29FCC609749E9C2E874D5F11DFC0B452DEBC1C6BC2C15AD3 -9798E7D993822FF3C8744BEB56E989112C16437BE92E1BDB1521AB47AFCEFC39 -0BD391C6F3D21FBBAAD0CFA3B3C6F771E7EC6D48D9024B1745DB3042E986D1FA -8228ABAE9ABB2005E1491751F3A0176016F90E4C013BBD320A9F4D8CE7AEAE0B -82C5F6803D2DA18A1649E30DDF8FBA7DE0171F36AC856BF413F64EB03EC9915C -CB6E4F3060912B3A5A28742D137AFCE62859BE8AF6492BD0787C4C9329D931EB -7A9700F3B92995B26B09857241042BCECD556E37AFFE1CFD46CB8731B83689AF -60D9CCDA940D54B47716CBEF543EAA8FA757FFC84E6CFFCFED7C57FD85AD9B97 -22836AE06B69B330AEBF53CD0D06D5979CD877A9E5B845A6954AC46505D146DE -BF8C1E5CB4417D38716A8A9D88422781FFAD344A5394C8EDDD5880C7EBEE79B7 -4389F9DFE9DB33B362EF519C6C87999EF91FD793EB27CC09687B47201C3F78A0 -33828638489A89A3916709356208D8A278243D08A28F4F965C80B0B80245F95A -AD8CD2A62D16BEFDAB35E540AF4D5BF38F05BD173BA880E83ED1341B874AD164 -16C77E269A1FC2202FDAA375818BC28021EE1DF39681B545484771622DCCC4CF -F977242E74F056F5DF5E01A29684E3775D89F0B6B5C532D78B5DC546B1DD49EA -E360B18F4B4B20B77467F4E0405A64F57EFD5FB2F3C81424F7674DC5A3CAB914 -0D0EE78D6FA6F20C8E14D71ED117265A8FA0E4DF98DFA53AAADB40A528CE4B12 -8D33BE361DC980B0892A493E5939693EE966DED5DD1FFB31C0B16349ABC6923E -BAA8E352A0B7EDEB0CFE35448C1605A709DB9A947CE13495B37221ECB51F7CD4 -125B9223C197FD75E1C5EEB1F0BB6849E53CBC7C86C641DF87D34C48B0F03A1C -B4963BD66541CBE63127BA45D6E662D76EDBB844E71CE1A7B659F6EC35B09B9C -7A6443CF78887C04DA8E5E7185F3F149601449EB8C91DD0742297AB932745FFC -1E928F7DECDD5B004A02F98FC482CE090D39436450431324A635898E4E4B501A -A6BF1F39FA9BA52D7914E4C30652852E60C4EDA2749AED12FE7712F278449FEE -8A74CF28C245A352E719FC44447FE6E411C8D396974F2D0A93D2E6521E20CAEE -8EC36FB3778DE8A1836B0E7C0FAF06AAC5130955196FA7B2A224CE12FACC9BD5 -FDABD478DF2964A8169DF400690A8BD1FCB12D7B09DD46AEBEFEE91C64D64AE6 -93C33A92C936F28B7F7F369C62FEBE3CE6A75DDBEF8D80C150DBF417545668A4 -B2640525F0474CC4DD1739511491CFDAA41BC75DB2718E7ED6E0852015D266A6 -42CD2685A239D55F0B521B7E1EBCF85BDA0A09E6B6BB75766C4670BC03E88EB1 -2CD2EA69751B123A8DE9B17B33A96136C1529C8106FF4E3CAA73AB2B9AC5978D -CD3B9F70E40EF15D859E69646C73257F9327BCA00198C8967BBCA4A3A9D72140 -30CD111C4DCA5420A7BBE5D52CBF684FE007486D18898806CD1903C4E43FF4C3 -80C4B970C0AC65DAC87BBE1F6CEA015A0226A19D78014D6DD9EDA07FE4D6597F -2FF99B9E6969F1C84AA7567365E641CE9715AAD10325465F2C011FC88B020CD7 -C0C8EEB65F2DE85EFC9A6ADFD1502C881F121DF3FCA2417A0301FC6C8D9FA300 -07FA909571CD4F5B06362BDF7F833BD0584D8514E6DC71EE505E9280FB2FE188 -7B9F4B251B031C79653B9AF27272CCCF9FFC516E782B1D79EBBFE8D77BC0572C -58A8F6B355ED227F2138E5F3A385740581146E3767189946F9FE7710003A15C7 -CA5E0138778501630A870F03F0473479CEB85E44C263BE451E50E8E051644D7A -42D2EAC4917F2302EB45B1AB7F3303BCA046AB044DFC90C6351DDCB5C9C64416 -9747926238B69881787B9407B395C1776AAADA4F3CB734458218658C7FDECB51 -FB8179CEFDB7905887250286826CCD018AAE1F25022032A09E7B1D5ABB43677E -6E58542B3A4F801175EBB069B17CEC3D49A0086E5F3410B6645865AEA0768A3E -9F27F08DC87E8C436A75D1CBBAD46D05DA8D4CAF70790909149D6D8EA22C750F -4BDA941B6F31936C342F2847B3350E4D3A8202BA86D103F1AE2D416DD3E2EDD0 -69E5B111F4FF3C3DD3A75AA86721BD95ED2B14F17BEEF95E2CC0FDC3364FAA94 -F2C41CF57CFBE8DEF4BE7C4EC6ACAB89BEBECCB8C7735EA45033BB9B8038C35F -027FAC621F9C82A62B3FBB91AD33EF893C906C2756A98566679AEB20099C1B3F -E6D6E1E2BBEAEAB3485197DD03F743F51D26C672CF0DB1AC905EFA6038FB9B0B -CD3FA26B0865937A759C6B5F1A694BA9CF778FB7AED5628BF949411C4159F3FC -A41E1070870F50E2DF82C8DA5EAE42E2D6611397C65781470DF7EEB7C09F6A55 -A6C8AC34342F45D78F676510768D8F9154784C087C6C2507821A371676E514A7 -7C1D358E8110E7B40CF5C3FACD3A74C4BF1455BBA4DBEF2DC051AB36317A7B30 -DC063D31D6FCD5BCC1A139D1F0D8365D54E32DACF2A49909CDE3A6EAF40F071E -354AAA97C01188ABA1F01669132F696279483C431BCBDCF6E6386BA85FF7F0E3 -B6D859AC79348711D1BEE093334FEF60D856AC0A5F0969DB94CEE10BE69F79AD -3E5F79AF68ADD91ACEF7D32E8E8185741F2A9FF91BE15E837FE2751121E86CC0 -2105D77B86DD542EBB74CDAE2883DA9F3AF2A2A530066A50689FDD29F766CDE3 -806D775F877F08C6F2426E19FE361FE6870EF24BAFE518A82541A721AF5F6FEA -26CA4FAA9974B2598ECC7A9A31937B8C3A01874357C6A820B465D582B092AC6D -976DAE72B808E32BD4D19230B3E07108E15E482F0F77722B28C673D6162DA69D -BC1493255B456AEEE531CF8FEB2C232741A05EB98152F1C4E506316CBBB57088 -5D273535D36C1D96EBAC6F157007961767F715CF317702F1D8B438DEBAD37CAA -8FC81CC1A33C553707931A28A05FBDCFCCBE061607B2E2EBB273690D3A79B5F8 -17BD66A7703997B9D4F6BB3F4D127E9D6E5C57D7011CB79DBC33311FE1CB5372 -D5FA910243FB85840880F8C446B9D62D7AC256A3C4723CF81F74279323B5BD51 -494E2E719813FB3C04CD77B298F36322024599C0EF0FB8E59EB4F569F4385057 -3CAA85539DEA522AE7C528A5AD7953342406164B8D04A7FCA4DDEE4D3417DD8B -A2493490ECEFC88EB32AD3D2F884CD7AAC0E97D8F60841467D224AB9FE423073 -33F58B50C4CE5C924C9501CBD8EC763F2AAA91DAF246477E7AA1D04B9ABFD784 -EED48EEE9A5BF7F6408DDF9E767EB5EFE760AEF49493B284D261FA290D7D6571 -6CB501C36ADD79150207885B6E09D8ED8C379EA29C64F4F45683A61A71B618D9 -926AE986EC3740C4E2D8540F67844942201DEEE5BB871D3C21A466F9095DA182 -D796C081DFE67CA73C9BE74D000D60B2C8E89A63CEA1BB4EA824E82877519591 -C309F1DFB74F6FE3DA0050E995012263195F25B5E04F38CD85378EF971A1876D -A1DD02AA52562508CD79DF49E62B07E25CC9B4AE82979E01823DD9112042D99D -BFA6F0177784B13A1C6C17DCE6A5B11D37C55EAF5A079842035B2BEB80B6E80D -75A18AE1AE91D17778423D83EF86CB7F96D820033C76914C981641E63797A376 -0E4856250356F84255D64425F72978AA4099DC1B312F6BB567EE65770B9B936D -40DBAF3566C91A1A0AA8A63A3594552D3FAFF8B20D60851634773700B6C5975A -E294B0209CD31DE60BA4C89807039EE27ECC63ED0B30103D9264839A79B64C97 -0526A1FAE7648AD90DED9E0F297D698CCA33D83E7071306AFCCD15B6D9BB8BB7 -63E8F768DD41469743E4603B06C0BAF81E3F9382AAC9E08944710D7C5A10455C -35701F0105E4EA0A91866201E087290A5BAA7FC4BF325F9B1D860B3A85AE14A5 -C2FA8B12AF03131CCD2E728494E49027550F0EB469D8CE32ACABD2B1615BA044 -9B6C6417855530BA109E863A9A49740AC52330CDC0C56E82725BBA17EABDBF71 -F73E71B68C6C28003FB41F9AF7E5B643234DFBAFF08C97BC2E738410BCA10D9E -A85E74EEFF37F7C23D6419207D09A842E1D772937FEAD47D97BD6DE8AA2BAD34 -F0EA516227BFD2C38DCBD6AF0DE795DAEDA5742B2952C4A4BEEA84383BEF3F24 -E9666344B63AA4AA7BF8A81562E3863D0ACCA7FF120D8B348F02DE8B1844796A -3EFC082E4EA1B9CE68FA4093F0782A3E84B88EB3EE80752908DAB7F44F2EA078 -30FB84231E442648ADF1DBDB9EFCBC7FF86FEB25C1ACB394A951CDA3E6B0BA96 -0A46701F3E098009A9B798EAE63E0EBE0AD92E6F622FE571A142B319DED37251 -727D16650E96385715A3E30C782D11FF71CCB96EF8622A2F155FE38158D27879 -6C83A35F43D9ACFBB7879088AC5D42FC089EB04DC6FFF1782358555A41FA4A0C -8ABE13D29AF8C8704D32AEEDBC1CA1C26FB424E58A188D4FC6EA93928E0EF165 -CF4F623777C470FC014A5E0F4692FC48F1FC5E7EB5BFC27080CDD804692D9C03 -38FFA892F6646CEF24389001D864F948C4E2FFEA85EB3D38860347CF27C14B11 -C8ADAFD3470E4F36301728DE3ABC113B5524CCEEBA4B131B0C28AA7F5704607F -068F25D944724A720089DE0D31EA9F28E102CC2C5E7171045EBDF6F2B247D375 -1AB8275270FFBD8C7296BA324F41A50531FC5CE4A744F597B9721B517D0920CD -EC9BD2591A68C26E7FD8C85FF53296870B217F3E7CEDBEA624AE86B053519D43 -351A9ABD9200A210C37B63E3709AA987D5BD0E38E42FBBEF95D6AC8AFF39AFA9 -D617C95439431C548318902386CA491C8323DB9091E5D99A34876114073842B0 -4080A4C566AF2BE80C18728B4006906ED393B03F1483CFC1BE8AD34015DAEDA0 -52157860A182CF1273773E3935205A5A5471E4189D6CEF1C14D883EAF33A6A1A -97561202E48FEBFB694F64518121343FB6AD6A82FC3D8FFF30C12A4ECB069BEF -20051BEC2DC96D847B5D55DA3FDBD4E1141349B680BF87E0732C674FB43398A5 -9ABBA32B9E1CB05F252132AE267909E50545DD9AA346B82EF9A6ED32D003E154 -F56FF97CCFAA615AED2D602D4999F0897AC771B20D108A37AA837073D4B736A0 -24C71913D7FDC760069CA22DA19A894BC2BC0AB15B5D79B6342F27564C85BFCE -295F38B751FB4B001A1AA33C59B67382EB7E39A94C5667583B95E1966CC6C48F -D2486E9038DA341233176F50F02F8EAE53CE08912408D5051FAB8C5735442886 -C2DF65C0E354EEF4942C165BC9606DB23AC5501EFD2874771EBAAD3C163B7618 -11C6C10614BA0D80FB4CA69F9D086B02F0CB41C05902F714E8D2063A5080AFD8 -21373E9B5315889D838CCE0ED5D0E008407E2A84C978A33DC26A93070422DB9D -69B546FE7A35D50AF6D79AFB76BBAA096DF5AC92F1EA49223F1FF8780134AE63 -256048C0DD9E01DA1922B71A639B7C44BD7EE445905921052D7D8F388FCD9C44 -B6D5D314FB66472621113A6C7C659202F7723A40CC66E5069BC87327A5BC741C -AEA58DA6EF9C066ADC27FA41F58E33413451375E849DCB729431644F71E567B2 -3FDBB581F154C1E3CE505D015D5674AD6FFFAA8C34692DC90998C287130741A2 -ACC309F2EC1C1BA2687607B2A926F37E214EA8E3F786A8C0F720ED6225EEEEE7 -80ABCC7A1BAC33BF773DD5BE85947018612B376C47146667E32C964AA28168CE -5422582536FC6A15D6267A2C947E3E7E30746BEC06CD58F1BD87662C914A851D -AC113F4366560D6C5FBC874991CB3140ED7EA7B9DE23E0C5CD1D359476208DC3 -2297446F1F10E33F87EAD9379BDF1F327F1960A95D73FB1F1AF2E2546042DF29 -4EAA9243532A32E4B477F2FEC68C0A62D80FEF79177EDEC5B68B323E0098C842 -B812EB2A6AC35270AD5DBD54FD480E14701FB6EE024FB368CABB3C101A27A8B4 -139F707F03D27F954E965B26EDED11AD94E12ADAF4CEC098942A57CE1E3431CB -71ADDEB0722A5D3358E6C198E77C622CE1B8AC0926146A066640CE4B93E629F3 -44047767A4AE4BA22C62440985D81148CBFF2AF2C9CF4BF5FF470CF180DCF7CA -421C39825DEBDC32732C89880A1F01B6F0B5D4DF3D027FE085205665F38808EB -11C4E7EF100FCF42E6E2F6D9C0B8ED4C1FEDBFF2C0018E5791C4E7C476538EBF -2C9A1E3A637317FA9205F3E573EC10F4B64A2365089AF788DC7BC287D1F6A118 -A089C88DA558B5971DA04059DB4E50478574BBC5A168BF2AB2E20C6670342803 -843A1530112D5351BF57AAB18BE59B259BC31ADD0E09F5D74CEB65EE7F36D680 -F2EFF02FD7E28A41F252EB104B634427AF94C4D217F97561224122779530BCD8 -801CE8B85EC861118F8BFF03E6F0CD1DC849C1E926EFFA8D97AB46E37F542BD5 -EDAA0F0BBD6FB4DE0B9262BB62C16FC1C2AE6B293FDE5871FFC7281201DD1554 -6C854B7EDD2B6B0CDD8EE4FF8ABB384439E10466D26D429BBF4BB08141D25DE6 -14D21B427CEC42EB7D3F87503C815C98389EFD885A294026C2833DE371D57C6B -9A954EECBC8779C97D91DD7700C2E72BB555368F023DB92F052F3061C55A3507 -8FE9159D4C9729D1C7C68F0AABCFAD94E26BDFF858A6E72620C64D2E22BA6973 -8A4F897AA78F7D687C76474A9B23E526709142A6F7F3AF0086599A3E058A00B7 -57D6F9DCA2042B5EB6090750210C199931178AB3871F6D29F2970790BA0CBA58 -68E4FE92BC0663B9DA027F0038A151F117917525A8A0344490FE2DA3F6E86E30 -BBAAFFB548663A219F279321D099A29456E8B7F0C8A64D38A7F442FDD62F671B -01770FE0346EE1B13B504813FA52CCEC02D7CB1B8493A48761746AC966AC5314 -46FFF54315967666226901BF678CE112D69E2AB4B0EFA1657960CB1206EE696F -AEBBE067327BB8BD9806B66E7B7BD3E2F79B3A816D4A33165D4F742111D16798 -7A08CE4817294D85265BC9811BB1290A4963206A559BABA4E0BA8CEF5DB00B1E -3D96B4CFBE5C0C314EA62C469E1127D34A69E6CC3BA9BEC71EE25E45807D2C42 -5800706DF39D6DA998C8FD58E55F43A98CC91156B3F7EFE86EA0F98DF4ADE76A -FCA59D60D0F0A72878BC777565E94EBCB231DD2269E52F330B4B902BF8B41A4A -DED27BDC29C8E5532AC8D90110624A056840A71D54A333922DA9BC06DDCC065E -684B4E2378B593EA97953F08FD4CD1100CE5E8C1E231E72EF37871676AB50991 -37F07B58A725414088C6038BDA82084ED6D051B8CBE8D3575E5D0ECA800970CC -F4AFD3F945F5AEF79A8BB93491BC10CCCBCA635DC6C6C22392501F97C38DCED8 -6EB6C3D31108DD0AF903EDE33D36DA630DFAD75AF23D61E9ADA3AF8EC6A4B9E8 -5ACF5E0A02D63B06D45D0F98A93CD2671F213C0A4F27AD93CEE03A809445E381 -0B3EC3858D51448616623F36B6674E538572B99AA41F6298FC502B4C4C61CB06 -6D66D5D5C8C58C1B9AC62A4594D39BCAD5D3A82CEBEE4846D81F795B90784896 -2F3C4CF282FC10FA9FCC21E70B313AB2CCFD81A6F6F6CDB09FC559B2E19377F8 -28D8C5 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.0: CMR10 003.002 -%%Title: CMR10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup -/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR10 def -/FontBBox {-40 -250 1009 750 }readonly def -/UniqueID 5000793 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 14 /ffi put -dup 15 /ffl put -dup 25 /germandbls put -dup 34 /quotedblright put -dup 35 /numbersign put -dup 36 /dollar put -dup 37 /percent put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 94 /circumflex put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /endash put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 -569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 -24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A -2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 -8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E -3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 -D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 -D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B -03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 -767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A -8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B -DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E -94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 -22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 -72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C -8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 -344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A -64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B -07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC -1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 -78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 -CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 -7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 -BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 -4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A -5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D -EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE -EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 -4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE -0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 -C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 -314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E -DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 -EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 -DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E -DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 -7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 -1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 -69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE -EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 -7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 -CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D -38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 -22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C -0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 -BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D -4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F -3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD -B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE -15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 -849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 -FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 -4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 -1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 -84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF -7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 -CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA -4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B -3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 -F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D -F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 -DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 -D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 -56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 -8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 -59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED -49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 -87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B -8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 -C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 -D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 -D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 -F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 -0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B -5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 -229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC -17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 -01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 -F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 -3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 -689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 -4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F -A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 -DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D -364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F -7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F -26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 -43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD -8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 -C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 -94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 -C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 -B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 -4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 -7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 -204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE -B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 -7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 -279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB -E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 -CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A -65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 -BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 -6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 -B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 -63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 -4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A -A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 -67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C -DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A -5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 -C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C -9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D -B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 -963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 -D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB -B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B -72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE -B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 -8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB -3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 -668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 -ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 -69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 -C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 -3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 -407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 -11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF -2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 -4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 -2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF -9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 -CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 -DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 -0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 -5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 -9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A -EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 -09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A -2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 -AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 -324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 -486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A -EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 -52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 -9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 -4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D -B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 -BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 -6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 -B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 -16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED -E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 -546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED -6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 -559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B -C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A -ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 -04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B -7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A -8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B -A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 -94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB -C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC -41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 -7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 -18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 -9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD -E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 -5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F -4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F -E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF -9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 -89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 -7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 -AAAEC15ED0F43F9A1290E91C463895BD12E8A831DAD661EF23CB9AD2C26CFB26 -71B72D15270CD8CB1D59CA2D9DEE4B63A8FD2929735CBAADF336DB2088C0BAD9 -B79DA00F002B98E0B4790F729DB337A63C1BF138947E9552402C37257019A2AE -6961E7DE6E5472914BBA36D0E9F53FA5771D2801267609C8B8B12A11E0AB6031 -E251D1F7D5055B426B1CEEB8B381E7D0C3953C9493D87FC6BF93A12EA642FE24 -2DF17AA5366C023E4C8CF8FBBFC9E17F1834BFA8B62DC91E5252BB2A1044B616 -C6A52E741050DD47796F65BA79F3465F7305DC0EDBB76D3873FD32A1EF0C6595 -55F853978F6483C58F2F27B70623BB0193E1DBFF2AB5B1368EFBF754882FF3DC -718EE9DF75250DE6FB69CD1F3FA88F74C28AB75D63C8632FECAD68D32B21307D -28832F55FD651BC6D56B03073DCF6DEB5873E715677479DB92989DF9FB1300BE -EB57CFF22C7CBA28D69C7E54DAB585AC1706688C94717B2F1204BBE9A32B02C5 -69FE47B757805513524F45903E166D92493145C52FB2AF2E61D48B83F794BED5 -E77E07C36E69E259E3E3D4156C9152A59752B0F2EE315A2ED05A5189E0C5A31E -35448577FD635ABA25D2D1E8ED86030B6FFC8FE5B6ED9A726CED9E29D9E11C12 -1BC6DBBF00CDAC1B83B6413C89AE9C0B75E2F3010CC15E842B0D6941E1062912 -E8AD848E60F4D09A441DD1B3CDFA4A39501C1657A4131B1C2F5F9081052FD7FE -48537BB9F93F480589012D7881C8E345FAE43DFDFF5F9C602EB47F4DF8FE8A5E -DC6EE00429F29DF6424012BC1FD7F41D8396162C3E37439A9BCFFDCEA7E9686C -074CDB097FE2E5FA7A4DE7C79850BDDDEE9E0845A4158485503684E0C5808916 -5DEF8158FF61B3601D83CFA2183777A4463C553A9D3FA7C7612CE52815250A47 -2B8DC7C58DFE9DF10BBC7C44086BC9088D744562422545FF61762A272F01A2A9 -1BA32B481655BB1D5A1D7873601C1318E24225317A8D8DDE34504C3252DE1BA1 -4616BCBEB112B3ACEB1C95129F14D50E1375DC1FA05957A0F054AE750CFD0800 -ED2E2AEE7903141C655655C007B65C755A23B3EE225AEEEE4199F65D8CE85A71 -6FAF25258A6FB58A9FB12A7CE8D1889F3A5672E14A759C03AD3089DA55B3DCC9 -318748F6ABB3AB456D19D9769EAE8761D3F2FAA263C6B723AE4E25543FC00F14 -0F43244E094BFA939E13EC7291BFF41F9C6C165AFC320B35CCDB5D8E13419C35 -989845797DF580DA0E0A4F6DB3FF53E47D79C93DBCA24D114668BF0933E4375B -0F19706FCAD31A30036E5778DCC3F224EDA854D4E210DAFD6601CFA788ADCDF6 -43C209226ECCB4FFA430CD0CA7B04681AFB83A9E85CE3D05FA59E3A4AA6C03AB -564001FEECD82EA90C526B7C069F7DFBD72517B16623441FB9F22209EEDDC398 -6FFE2E028E6F38694C8F8DC44FBA56798D8BC3FDC37AA148E17A0BA6D3F31894 -552717DFC8A538A12ABE23EAABF4378EA1AC7FB3A56AD0148429BC13BA6744A2 -78B6D8ADF0E5274BE625F3F1D1C471A889E06E4F7ADDACF6AF87A1D7613AA7C5 -19BCE1662DC2FF7B075BAFE9B5DE88D4C7E9BA4DAA2E68F6B00B0D233256F3BA -4120E57F166EE0323CA9B4716B63E1EFEFDCB3A71D1B4EF5408AE432A0EBBEFC -C4E1B70FADDC7800CF67337AF9A3F236C7462C608A5F680718EF99483F49460E -8535A62CF2E44BCFAAC6CBDEC0E56A55E18E0B8D3EC7E806B4728BE7045DF339 -751CEE9BCFAD1DBDF31DE8B449A841994FEA0B2C6B2E0B3D1A3CA8F705AFB312 -986143729B8A0B5B1591B6493D53C4E7ACAAF84D2E4898BBD96830A112FA2769 -8E2316852222C1C8FFB4B6B3CB02A3A4A604FF1E78EBBC6C56A8E448153895A3 -0B4A82AF5946FDA0A1D8287E95DCD5BF08A1FFCA11B8BD493853D06CBDB6303C -06F30AF37522828F5502EB7437BF4286C8546ED5D6C0E3081D83DBAAEE918F38 -F1B9E3F1296EBB8EF26D1B429057CE65E413EDA36A71E7B691A72FECC2A86FEF -6979FE7215557FA66E61C99533F4636BBAB037B0A3F808E890D1582E1E08A29B -B161EF7DB88DA4B045E17B4F7D5232E23470E0CE83C8E610D0FC97526C614C58 -D6AD7669F2185285C3D81BA82AB066516E81CD12261B97DE4D37A45283F5BB13 -CBBE74570767979CEC35A117AAD1DD78EC0DED1BE9967C8AB2B71F08C6C3D437 -D1791D6570725E8477C26075C8A819E11C98500653702E62937C1883F40C5506 -E6654A1C779B3E97C1235263B3D05F76F471A46DE232B3A44F7AA2BF1B70E7B5 -B5862C1AEF64BD04D1317E0394443FEE2BF46CBF877A487B252B5C8ECB4BBF0C -8AAF20088C9CA414DA5CF96A6F3FD39BD1204C93FD562F766BF6ACE4CF454DC4 -F17115FF5AB424DE55B277110EC8772128EFE9D83799A10BBB734D570F417BF4 -183D36FCFE919CD4ECE02EDAB6E65E2D49B5ABB051053D4FD805E250E92112CC -BD815A603AA52B9A33D5AACC0EBCDFEBF0CBADAFC5640344126F091C95C427FE -5C0B265BFF2B6BF271B4E439800F4175F04BF1B180B36040A6E556B4C3972DC9 -C186980FC25FBD19E33B4B791F11B1859B9E19B54C00F586804E192C0B1960B2 -86C97ECA03C5AC8933B3219B95CC3529EA8B10F6A09F40F8E4171E7245B0BDBF -3850A455A4BF878CA4C3DE60753B640307594753878D6C83B0BB79222513E257 -3DB609F9AAD8241B5A21B97A11E8A79A428F23B0F9B99692ADB0A09EE2E8BD55 -ACE7DED1225E5D860AB55E7F75E7FE5CC3426B22380B10AB2CAAA53B3B00A484 -48ECDC5E0226FCB10AFD47A1E2CB0F1F34F746455CC8B4AB162A8717F653103D -CAFD245C7B1F1047F47883359E4FFBE3857AF495A7F2B78BCD0823AC7E1E2025 -0E3AAB8758531D63D87181A3EEC1AD962E9417335D5E048521B2659656F9F7CB -E6C7FA3C27329D0C0D23799846911C6779A481CE7409E4E4DA600E5845B0A7B0 -2DE636111815ECD8DC921109991E7182DEA45A8D2C0298F54A56B2AF180671B6 -EFF4B42E03C760F6DDE2E6D311F3C54CFC0B2EA17B3A81901277A14D6C77058D -B59914E9576E25EB201C382190E112D64A81554DE99891B2F0D7EBF8D4C5DBE2 -73EBD4D52570D5DD5FBFAB9F6A941E5C5540002F29D19089D33D5A87D9E7AA45 -99020AEAC725B77764E530DE619BC3EF4D3C708824045B88C5088B8AA8C06EB7 -7B86EAB90B7FAADC4B50E3E892A5024FFA986DDF098E40E56AFF983715324807 -97E5C6BB1C54F665D63DF1AE22836A7E4948BF4DCE3B3B12C214D99E68F11657 -225A2C22AF9E5DEDF038F276EBEF811FDC5FB6CF767D24D5A22BA1060BFFDE0F -7D05AEC38EE038F811CF34BAB81F8FCB42A086E4C3D9080B58EC971402C4D6A3 -5BEBBF3EA120DE4F130A0B512508C566F265A4E0A25B9C7C4F5C41E2C0FF4395 -BEA88B830DCEE2F4E5177F4561B5DAAED2DEE10380BD028519280570B3D870EE -B5E23536A32BE129DD55913AB136B69E0300B60AB1780B3BF87021A251235B8E -485E42682E9F4C6A317239E4774F66DF77395FB3EEDBC971DA6C2698612A4EF0 -60B4B73403CD7DB537BD73E5546629028DCA3773494073CB6196341BF42F6A61 -A4FD298BF1AE9E404EF4F3F92B0DDD4C7520B11492D5F484A3E9DC21714D304D -ABE2D4C7135CD91BC11969A0F03E83161FAA1FA5B369D5E10CD71EEAAD098515 -40047B466EDDA89161EF8AEBBD38727F99076C63EC11C0CAA44C420C63229547 -841D36838D978E748A17A489B48CEFB85094854B5399ABCE0578AE20395635FB -33F399DBE972BA6F587102E1322FD08D6A1AD27024064FE8A785A3F66FFA385B -06A5C6F8495002E2A1DE3A1A676B565D7221F8D06EAAD43B626B8FBE73737903 -DE67E77566BB46EB6E8EB21382738DBA2830BADA6559929D616EF85F9DFBC289 -71C38FF6EDAF5D6C7BB6E40EE3EE505963717F4BBF420844446784B44F764CBA -D8D78B010A57B0C60732C984C398DB68FDBD24AABA00FB4631080066D1AA344F -E6F307228D7AB162EEADBB0B55F9C88123B62748D59922C5A5ADE7DD2AA96F4E -2E4650172463E7515E16F653C7F38A21429A9C1ED493DC71793E84BB038A07AD -BF0C24B9B322C361606FA6D8C8D83BB142B59477C368E35090C584D80F2DECF5 -0026C2CEFEB188AED87FA8D62A27D876A9A7D177222708945F9CC15C9669D209 -C3F43C5280E47C868308F3909B349CBDF897BF27736264F3A322DD55FEA99BE0 -FA9319F93F61B943815C000CBAAF4D8B1B920CEFFD34CC7850D4C09DA4EA2619 -C5122CCD1D5D807ECC4DAD91294893A7DA2C3ABF2B3E92559213BDFFFCD5CBAC -69A729C257BBE45A134F852F6EC3B1AAB0A8AEDC639B9C178D588AAD639CA04C -4E11FACE82C7EE87E64BDCA204945533BCBDBA14BD6E2EA1C3D785EF35C137E1 -7EBEB144224AA134D37E372342F292C15B2479B064A7C3CA87B7E5BBBCCB72D6 -E2DD788CCE37A721DB3DB7F08BD0F05444D9179149217DF6B36367AFA9386AB3 -2299F3DF4D06CED7009D348534EFAC6F7A5B6B9AC28D9C53D79DB19F848987CC -417517CF6F42243C234413756CA68A0F125A0E7C142D5999892446E4AF11C73D -526DE031FDE880348E1D6047F69779962573177E41250B70584E1BE4060333E4 -277DC522EC949F494669BCBCDE44BE80FAF49A42D33D8E79B4C628C9DA340E6B -7E864FC494626389BB2A07981E8090C3CA746B492B3F2090039563C2318069C6 -3018054CB8AE70D910AC6987E546C6E433A5C5494B9C31A180ED7D64C8D5C906 -28079C0CD805D9951D78789E7A3C9CAE15C186F6622FE721565CA4EABB14F6B9 -68D6C041D372AA81E33F34D77DF1D4123C266FE7300ADA662A732717DDA2B9A4 -41DA122921A6D987AD5D190BFAB12DE3FFEFBE2D7E324AF689E509A5F4CC08C6 -5F7CC1E0DE8AF88A448703D6101D1068D9DDC87DD608BD8679AAD51A259259CD -CF34FD0A33C82EB8A22A0537B9FCB7B78BD405287F5B1708FD0685C575449D29 -B51B30154E1501956276EDB93F1C143489363393F082E5ACC9FFDD1D90CA8189 -128BFE91A8696182161D557DA31A46FD5F24C877187796B3FF181058A1508EA0 -1E831214F7475EC7402791E1521B7642C7CCE6BEF9450CC68CEFF4DCABD7D922 -FC9BD10B688716058586012D42F0136F685428278E94C7DB872C6148A6B01931 -0EFC5E3BA1B04275033C4AAC3E18B02E65529D5FCD89FA9DB129352C06305664 -4F0319F22926BEE62ED455433442616A4C59248CFC9D7494E26582C63DA4A44C -DF95FA809B0F5FF2C8B862EE357855A01F21A61ACA426DB4BC12DEABBEECCFFB -079579F14686ED8E524E2244F64426BF8DEDA7755779416A08D0020E107BDDAA -A28D752A1C6EC87B4779FE03959A8EDCF072D248782F562F11448B756464160C -C70BB16FB6C0BB9E9393DA2CAFE45B3DFB070FCD1ED7743C35C73D6BA23E2941 -B85D00DDDD4DAA7454FC002446758262B90DFDAC3FCBF09A1C95825CFF2374E3 -3FD629441B82B0E148721AC3B443E7F7DADDC996E9EDE494DED89C746C69F9BA -E7662D04E3FD1874FA26179EA32176F2EBD45DAB751B8610B4CD9C16DD78761F -C9EAF01C45907119C3B07D5DE4617D17CEA3C9FFDED8B859263727957760826E -3F77F63EB00FCA5DBFB6FF6DD3994E72C79E397358F3C25EF8069BD8E5221E17 -B30C30F30C10522C2443C66BD7EC2719790CDD8D8236AD87B62E7A206B0EF403 -C93A9F3320F5F7990CB440AD4AEF0F9EAA7FAC600E65DD15C9C7E2C3B7D91AEF -EF71982648B53B26EA2310D400BE0744EA2DB6491AA220E0F307A86F9605DFDC -FF3D8F82203863B7E6A243700C31EEFC7139DF2CBE9507CFCCBE098B20AD88DD -B3492FCC625A73A2F9D133E81CB0AFAFA85A68556B1B65DC56D9AB12152BEF13 -D11D0A59408474B15008ACA21DDF965DEC28BE269B03A32073F5FF199DA83D32 -9085038A7B13CB2000AC3AC0433BFA7CA2EE48AC2063C256D51A52BF0D97B34C -313B579445747E7B5DAB31C81A3EB9B26931BDDCCF1F78DF4B7A41E21451394B -FD42560B379433F92EF6ED0654C1439DCE967B5DF595F89D7FCF6E24AD4F89A3 -8EB88F2C66ACC618420BA08810946E9E6DC7FDF2429C0ABBF816D98380F9C21E -89B09F6DF0E55634A5D9D3832CDB4671A67DDA477F87C2D12E01882C4958711D -8C93EDB509E79E3B0884832236EBF71B1CBB32E309CF1F99DD0BD3EE92DD1E93 -BA43C1126C126DAD53AD421863CEC59548823CF508C9590F11A1C9C7A9F7EFB7 -4D2F4154EA1F85A3C967D7F0D9EA815B18449974C3C6534ED6CCF0DF1B8002E8 -BF296A65E6D2566990B091DB2F6B458208BEFDD736242F7E1F9A9E1B3333EAEB -9D9B42EC68EC61B8F04EFD71481C8771D5F79E8E0B91049FA201449195B9D032 -21CC3EBFDADBB9195F850EC164E2C94AB650C80DA43A11D969C91E5D2C239909 -EB94D77A077FC4384EFCE586302B6C509E99154D8E36CE22E60AAC296211D46E -15E20F8EC1F8813DBB3ACA52C89746693C6A49ABE5DF040383BEFD466C4DF102 -8034543FA5E46F11F081A0B0E9698E283440AFC1AE93F6F311E0D15FF8BBA9DB -EC4E1302BC04A7337DB384762BE9C70D52E795A58D33CDE4455CEEB406118F1C -3C9B97141F096FEC8E3CEDB81047B6FAA3E0BFC95D171ACB70DA688E108C3141 -9165B94E25D083C53CACBF001E16EF046B87B19B7459F5181B5A70583700BDFC -2B3E109173C5604104AE2D290461836B0210A52D1EFD7DE714503137B4724AF1 -2A745F62993A47C1D46D4CEC47095D65750D822750669963E62DDE363A16129D -F268BE71FA84E64C9D8EC78180B5EF2E6CFD96C52722EFEC6BBCDB14764672C6 -228DEDB8A2F96DB1A69A9AD2FBDB2B531485EB80B267F70C05125BF1AABFB7CF -4D35CFFAEE03972735EA9D2D49D43098274CAC9C8938210116025ED282524B4F -CE2EB4155CF7BBB5127853DA344070A439C51C532197E87F2FAAA68A8A345497 -18565D75CA93E9A31ABA74507BF0ECBA8576D53A3F36CA02D548A8E36647BF3E -F4A2D999D579117B67BA1B8A14D09C312B0DA67F5E28683619E6A28B39C59836 -A091BC6B4BD0CDC749725100BEED6652D75E3CF7527DB0B383F674093587963C -665E70D245826DD32EA04946605D12F4EB2718802177E659100A2196C3E24B51 -A74DFA76C8DFCC9D06B13F6DA2EC3E91B5A67910ECF0766844DF389E461D4B9F -AFCCE6B97776EFB3EE6A979E162863346B6A2DB3574D442CB339F78C1846D0C4 -304309A1D68B0EE29304B20F84BE8EBFB5E52B26820218ADE1EAD41F03D6C6E1 -21E407DC64895AA38BBD38221F00FC586D67142EE082ABD57AAE5F689AF38468 -8B9F81EFD34AE428A7A02AD8E6BC8505FB45291079E1AE7A0C2EBDACAEE3708E -3C32681C0382B638915CB17045C2F0E81DDF09EB23D0D682A4DF62935087F7DA -5D0936C3507E2D5459041D547B8D255D306D3BD5C9C86E06EE84B5DEA86E978D -D9F0EF653B677BFDB4466801D835B819E95CEDEFB492E525F2D978E9CB28B3BD -C181F7BBB3794F0605C34CD4893500950C68C5A382E3A513EAF0A7B1C44E6697 -6F59C1C1D7C6E3A21F923268E13C6429D1E5B8EC78719E289412095B7E1AD936 -6686C8552127572A7AA700D4AE749407406CBC353F8CC9AF9CACE4CB0ECA8DB9 -777382C58A7B16FE1E7BF54BA03614BF1B1041C5C68C45B7D277F24C77F472E7 -7484BFD070D9236AFE5C943060D3E22699B746E96289994E943EB53A575F74F3 -8F18A75B46AD3F9B077264B4E72A5C82EE6D5E85EC30E7AA77762BF70AB5CCB2 -328B2B453ED7332623F7FA1018D9129505305766E28A13CD621AB3AE39B5FD8E -499E3F859C9846518C50C6272BED0A4FCBC9B8E9DF7383BA206A71D6084D3706 -E0227F7737289EF02CB9A063F9EA7081583A46C7AE3DE7242C987ED6703FDC6B -9B274E3C0F18928CA3303B92002B7507BDDA3E482861C92EDEFEF82798A1B1EA -DD97B1E6263AFE58BA1D72DC9231C4E40AB90F19BF54E807EF08D71838A33FDC -1EDBE07F50D986A29E42609E770E8BAB3C99BCA591AA32FC0551082F4DFF7A46 -6C0B45EFDA26DA8F8E158B1CC554BC0DF11075C1B0DA6152C53B563C0EF832A9 -E41846A57D0DE1552EAFD8FE44E0AB25983620310A3BB2CD4B6E1CFBC8300557 -E3E93504C3263CAA0962A0F9FE4EBBB4CC7DB9404E3301112D1CCDD005E55A4A -40ABD5E9942B4072C8627D4F38E1C6DBBB3B0539B4800ACFDFD1EC7D38BFEAA3 -AB140913D95B0A5F4CB5029AEB0B80DC6E0C45221B298E7A8A7A2755D5463970 -E9943BE672F551ABEAA747DF7C01F81BB2A240CDF82BDDF076E583628EF280A3 -A5826EA2CB3801592D910C932FE389A802797F33ACF8B933CA97078CE60AC97B -78C85CA773AAF818DFABDB4FD60AF12218C12C4B89D3579B4DCF1B697D213878 -BCCFB9D0DDE10FEAF270D473A7121184AB0DAEE1BECEEE46552F5825B9E497A9 -B17E02A4B1D7A60E8296E219170853F34DD6FD5514009F01BAAD9BA60B5C31FC -9E9F1493F9D828EE4D32456EE0249F375601EA4E1CA329BAA095C5DCC3750E59 -A2C5DADF6D5AD6DEEA9526478F8B3C8A6B8209818E1C5E9AFD9CD8363DF71C55 -65AF5B84510A5A31B2611029A72868EE9D01A4E308908BDFCE0D47F5F59A5875 -4A34A9A04FE68AA99DA440E927F4482AAE615EC3D649782279FB8864CD4E0078 -975BF61927DB520E5C540614DD882127481CAA42E9E0F9E06D8225D1DAC8B72C -1120DEA694861980A749F631F0219291A2129AD24DD053A7D70F06E894D26AB6 -80F3CC17D7D10930BDFE1754DBC8B137F99FF7CDBF725A6980E603FBA5B1F246 -F983C8BCD2E5F7DCD880E592378BFBF360F2C5535C16084FE2BFEB789F4F2239 -E51E3B7D7D4878C982D414E23FD2ABC318BDDB9C2B8DCEF39155DB40113AEC78 -68B1ECAABC5A22FAC5D839CE1E94048B6DE6F1E407520E80F9A459A74249068D -F1E50811FD6B2C06A074E45E20E5BECC9C78CABCE1AF1DDEDAD62F779B479707 -3FF6C110DE23F9154789B43241C269F4857374CB0FD313DB8FD3F358564B3415 -5830EAAABB95B187A4643879246F7C3178E493C801EB969DA2B34E270E5D4AAF -33E023668A92E5980712193A746DA33999189772E9F9266621FEBFC113BDADD7 -535F35CADD91136D3526457294A57DDBCF90E4E7344F3F67E00B2E7E7728F1D0 -4A4333374B4420DB9BE21B0008A982A9BDCE7E8A2F964AB6097247DD8DCB48AE -154810F8DC3633D9648BDE5AF9F5E90BB94C231B6DA6A182BB18A4E9EFFDDF8C -8A35D50D172136A8276156D9BEBC833F6895C5DA560CA412DCF311285228AA65 -AF102A1CC345B5B06CEB6EA5CA84932C89D76070F21A3D702C2B10231DDAED36 -1E6956F2D434067919EDA0C522F394D92D7AB18FB497164B0EA6F86912571B1F -C4B517F6535C0E67D552DDC65B3B3A2D11EACC8B5CE1BD3E87367929BF4897D4 -B84699731A6B3F86AFDBABB80BF2E62BA4E5B3DC4BC10D42A759A29135E26A7D -227809FEBF6AB48ADD106600FD9D7619EAA99F980665B74F33E0B73EBADBB379 -6610DD542AC6774BFAD42D0701FA1FE3D2526A63A23A657D2F48C2FA327385C2 -33984DF1095623271530155D25873791184E971F612CAA247E1E4D0F71EEAA82 -8E5601C70060A1789536D912DC1538B14CDA30A55CC9FEE9FEBF645824A37CA1 -A90E3B0DB87EB63A0D819B406807EE24653C218061FC6DAA12D74B121692F411 -33FED8C09966E4DC8759B3C0DCEDD402907D65370B274D29D60458D13DCCC21E -4B9FAF103267B8EC438FE7510FD3D1D1318C89BE7C2C5D549FA58902A5AF468F -539A10DC92E4B4942C757E3340713EC3DDD0DC456AA78A8C395DB7BCE107A386 -A0E4FE02136806AD1BCFF2EECD965CEB7CDB0E11BDDFD1402B8A5AE155E4E6B5 -4324D6EA65D3911E42568D2F8ACE0B4D12FA4862B6D4BAB15E433D36E04AE4E1 -5B9B76A20105EBCE0963CE2588912BE12D9F5762516588FB0B4549BE4CD45E90 -19BBB3FFD45F59A5701143DF58A8C89C9D1E6EF5729AE66BA3E83FC000434CA2 -4DF0517717C07D7D570A5E230237A2E53623484FF465ACF79D3F6860CD07F5FF -4A432DEBDEA9C5A621C0C69D6699D4464A30B9EA35C856F4B8914C08243CAAC8 -704939D1F838593E7979361CFF14F9D27CEBC56DB5289DA6034AA36A45C4622B -32939B064407071A63CEABB44FF97E7A513E34633831FEB057D5350E0ED9AA2B -6F46113A0A5CF7400E7B20B5B2344E2E6057B4A56428A4466BA9BA2845E5E165 -75CEB41E2D93E4E93FC183B980BF23A4CEFBD379CC8F9A1EA6461F2DD43299EA -3739A056169E7D53B3CC623B82EB1740F8A9002BCF312C6B142B1AFB2A34C188 -CE4767EF06ED56E91C20EAD1A9144D573B73EAA8B3334199C10A16E7A8C8DDA5 -48079A1AE853735E6BEB9CEE8F94EC7D2F89733ED3196B516103AF28934A55F4 -7D4C1692F423A5A4CADE2ACC8074FEC7F6AFB87147B4ACF45E002AECCCB15714 -39E5AF3F9C52B81CC0C4739B10B9E138F52D8E7D72088A84452C6110B0889D5B -37D64DE992D41574897B1DE7B5A7328397AA90B29A912993183D706C291F1D11 -5984844021655F433BB06D09479CD28DF71D186F2BC77688A0C2188FC8539B0A -4ED602D896F504D48136F192EC125F26D0D2B859EA843BC508F8F017510DA017 -31AA63614F0FC2EC91410B5609CC1D1BDF7925040A3222B08C2C2375DD644CD5 -CBBED0DEE20F78E13DB387FF8110827975A04E58654FB9B179FF36CD63132B59 -0D928A09BA4C0DD215C4961B4BF565C207EEA5F43C51988F188862A09C6EAA4F -56B73623EC1C6F279D405F6A4B5F0BC9EDA774DD15454858563868A0D16DEB16 -C8B72ED9F06F64348F130B0AC9B75E69BE56C017DDA4560DC8E69A51324602EF -D6091069F7B27F0FD384BD9D5861B5694159623805A4D537411A9B66DAB1D955 -4E45DBE9817A4255EB492EE4BC783B37084A7DC9B4B68A1DFC1B46705FC9763E -94679EDCCB0A4DE850C4480948133C2DD1CD525F498B01F5046FAF642EB6C5A4 -6861840CF18A04F1C84FD2A66D97A61AF17C2E66E7350BD46F94BE9B41DD776C -6EAFCC1759479016C3A27F0E12C5DC2E8A40E45571D5BB130E68EA57B97070E9 -33A07A9AD9130D3FA73207D372381836FC968813A578138A07F2F3826A2E41EA -03F607A5F8E637576965A41970039DCFEDA28E7D327F0F4C117F8AC445FA52E7 -CBD97BDB0EDF0D88B9DBB90D76E037C2489AE870AE0D83C143627D17C09A1A1D -CB0803B3A6CE9118E9AFA8FE44720B40ED6658D521F2C91735188EB59D12B833 -AFFAD67B5890E609F2CC73ECB235D27A14613AD6F9CAB6E7CDDF9A697A0BCDFD -3140825F77A4827D91D28192CE11D69D02705CF641C64F39BD531C74F49711CA -533AD45C5447EB029FA55E8A1E1DC69661D8C225B90255441E91557DFC761140 -22EA9B3681DB1A1460B3270D4FC7CEE62664234DF963BEEE1CE7776CF28E35B3 -2AA2DD131635AA1D3F394C8E39942DBB0DB456A7BBD5A21F6A7915830576D066 -600E72555CCC7E9F3C9D65F274A7A78317FFD2A359EF28E279B94439CB5FAFAC -5182486D5C820304993B2F59394E573CD409CF5657AE0AC097F2FBB4C6C6E1BE -A8CFC67244702D1C4832BCBC3924896389F9834D8960E0290B681C653A39EDE3 -F9E6D6626CC108BD5B26BFB4CA0117E1B29B138CFF8F5D77D5E5B49570A921A5 -8649D00FFC8E0D6ED7642E3352D1A6B3199C444976F34F301F2950F503BF335C -5EF25B82EFD2C40ECA5074264B9C6EDAF019A450B3C215E4AD72FEA7E1E4C59A -E3ACB379F4714216C4093711E17C5BB71F5D5B395AB8D02D1E5308D6BA838CCF -EF37988BB0E6C2F010C63B73D731119800BF923A9E0A9ECC93AE903B04DC7006 -95B18FB928D00DA2809AAEC38D83841083019E6DE38084773754AD52DCF168F5 -8FFD5DBBBA626D61716ECB0BA75240C14D16301D8C171A21E44D72F10BFA8A6D -6347CF46F17E8EBD4EB2304FCD5D2B3D97720F2409BDE416A21640655FC313BE -399C834B1E5C0691005BEB9C217C4725FFA537CC1DD8B3213202582D9E135F73 -E7B4CD4342DCC837DDB367C72849B0245588D1849D7B2402F69C01BEE77445AE -F8401907E6C77FF4DE2526545B3FB7946F693C04C544723FDAA03A532E4F180F -2DC2CE1694AFB703FE30B216086FCC4DC76B04DE1AB9AF8A8A1A068FE1DE76DC -4331566865F6B13C21507936C590C305192A9E3004190FD117C7BC922AF29E9C -D686E46B969C4F9A1A993ED2ED52A862737C6D46673CE064E1B7AE0CBC9BE116 -046CB1041E32E320D8AC967B12C6160AE8F3D8DE94C4CD19AE46A2879070923F -CB31881E14AEB002465B721587F600C5704ADCB4B3957E1B8ADD7A58CE1A9225 -B0FEC571F009611A48CB34B8E9173488B9F4C64CC52F438F544FCB12BCD994BE -CD1B7910BBFF76A0D063D8174376C3B9CE8AA11489D41D4AD5BE489852BD4F53 -9D1FDFA6A62951FDCA68ADDD1EA7DFA3012B2C859D98E20A4C116510D8EA67C1 -3D3A378FD21E99E132332A6388C0CB71380AA3272B437BE0F3341FB9B559CA00 -93B5F3896887F0DB0C5CDBCBE8D4A66562B841EEEF30F99ACD5BC89EC84A4925 -DCE688FDB27FE493ACE1A5E4B11C9102BA94F8725DD829A9D6679DCE2D08D70C -7AAAAF05EAD756142DE83A927103ECF8FC8F60F48A144DB116B3F8A6996E959B -A82DF5C6260FAAF934E052C95BB77377757E0CA686753E8E52123A64266661E8 -F5B9553B91933186C853BD5C428320396555DA1A22700A87676FA321798F8AD0 -59A2232670FA28E18B15C0C2D67A03489A730551FEA2007139330DA11EB80919 -CB8B1DFDFEFFC98335F6363A668D350F53A053B1E7AFF7832C08EA445DF32F79 -2EA754EB444BB61992CE75E20F2DC0BDDF917B50EC9CCFE6D83A9D150DD61997 -DE0954114663B21AC5B4FFFD52A8ED8577F72A527CF162F64ED65962C58B67FA -7E492D98AF68FA08A397736FD4D243C90BB7949ACD00099C3598330013E46BB6 -4AEF51F0FC8063050D27DB0577A5C28C480B80E20068E20AC6E67D013F479AB4 -D9DF8B27D9C16BEB06D96AE5C3934DF2C9E1B29CE389D3C92C5570559EFDBD7E -BD7F97F7B956F1471D96C9C6AA23E5761CF7BF3F0810DD432939EC465E50CADE -E581FB32ED1FF03A77D6EA7A35359AEC1D986BE6750BD647DD8CEE4FCFF3DF69 -3959B8D13ABE6949C4DD4685FED5A787A55E33444E9424D98BC288116499ED6E -76E10B1C56AED7FC99F0F1E053E7BA2066091C9F04F787785F95A620B155FE71 -706A20326226AB916E4816514FE598D46FFBF77A9113C7ABFF365A12446FF0B9 -0744C3C5C1B278968D2071C0322DDA802BFEA3D83B0ACE5E4CCD580233350196 -45D9C4601E86E3F77E0B06E2A313927795E8858FD27F0CC7147985D1A6EAA623 -CA96A0345C745A0F47581A977A220C598F4CF4CD539DDDBA83267F5D9E4F3AD2 -BC287248F885489206B590D9A34E948E6791F0F9948DDDA6AA1312D8559AC611 -33E35C7420B3394EBB1EA5E9D411FCF690A5B1357D06D41EE5062852CD122347 -FAD22F141F84284AC0B95F7A000AA1299A1EA2EC7D6F6EF8335B4989F8CC6B48 -0232CC4C044D7A7298C88A3720C693E2115A26711EF0FE171DDB45747BE2C9C0 -40562C2E7C6AFCA159AE341573055C3618D2532C4C69E72D9CB0A4D6267BF7D7 -AA4C30CEF7A19CD667865B963C6CB6C21DD4F887FB1B02C3E12B4483F07D98AA -C1C512014503F3B3A4BC6462B1BB6FEC75F95C3A3712E1530451C43C47EDB056 -FCC15D72C688C0E4A7B4FAED9C603A9C8F615EE2F862907331A30628A9E4BBF6 -05DAB43F30899103173521F6E36BCE6F4DFA484CC759F66C8CE335E056801B93 -AEE1FD94D95FE5DDCB783A6E9DC1A82A18BA67D8EB45F51C4251DEA708D79474 -8C7F97570B87AC6BD21590F305A531F6D32FB31B013ED8C7798A51291FD2A2C0 -0CB565F6BA2340F4599CF16480040D27941F25991F142901034AD95CF1EBFE7C -A57A2C97086B488481C04E9BE785DB89A299CAEAF736465FBFEC80A8197F09D3 -82EDDBF1CDD7E07A772455B51F37ABC5FF3F0220390419B797FB46A209FA528F -1DC77F67A25A3E2E032C263757BB040E174DE9AF9DA3829D31EE9DE79552C823 -418DC7853175138015FA33D5F39264ED66A4109F0F732104650CE5C56E0F23FA -C5F79C62759E8DA0DFB08C3D750433F1D6A14A095D2D8ACA849D7A6147EAC453 -318D58121426653A89F67D6C78DC5FD6964F85AA80757B90EF6A57E9F21A009E -C570D14808B3B2CED8CF671A34EDCA0518393DF0F2E6E1D4ACEEE71E5A5372E9 -26815A9068CE55EC3952AA1C75DBE28457A883B8846358F9820AE57A7393CC81 -DEEADB643938F84313DB8FD3F371417AB63ADEEA5E6B5F589744E408151F7A4C -3CA7131D6DDC40EC5AC9E386CD515DFAD56FB5D18D5E3A145976FC2449BBD14C -45E5CB314F707672F95115919EF34B41CB0F5EC7E68572E7188F5A936B13F967 -81CEB3BEB43602AD8BD4E464C0D5B09323F35A55327E83DBD06D75BD158B06D5 -7CF3F5DAA8556C812540377B20272FAF9B2B8959A12A0FEC9A445DC927627E74 -47456A4F02103A0586245FC6B44CF66C320913DE0F6F50384B3E0585BC7F299E -2B640C274802E3859821955666C75B6C06825E84C3DAFF2A5A535EFA52C1B252 -27077164C89F1541A1F060FE9D1A61F6B7443EB28DB9CA21C75D0DE9D9BD363A -DB927BEA8849C5765AA796AE54C512A3D51BF4A8E3C967F63EB1DCE13B0BA3EA -0F4CFB2630E103575B0EFB1FF207F96A23ED5F31134780FABEF0D630CC6AF64E -90A35089DA2354FFDAB7F4ADAC1426303AF547FA916342527380D5E0F7A5047F -541DC158B9CBD3853848D1066A80ACFF7BCA9CC5F2007F1DBBE53E825B85F8B8 -BDCA072350DAA9A1C825414E5FAB5BF2E5A5344481902958B59CC87C6A4547F4 -F399E74A9112431B2A066DA65D1F4B814E230E0E161DE600F61C554F696BBF18 -1A2FA6A3535D4983CB045A268B0F54D00774954590A4CE34FFB00B579485C402 -7C54A6717B111F55E30F58A2C928120900C189DC0A1CC44C1CDFA9E83693A8A2 -CBCAF1D2DD3BB067BAF86C8AC9AF020866991D1294D678088FDA6E14C70939AB -0F13A91CEB035EF5EFC9E837838497F2DE257BA0AEFB4617B3CB925D06250AD5 -AABF841DC47FFEB39EF6CF7AD55263AA3DBC3B9D50EEA595E203B78C5D30B83D -CCF8E79B86CBC3CBEBF1187065D31E10FFAF2798980099ABDF42D05948B22164 -286D1C77C56774DE2E5A03DC27C3FF53ACCB292A862B05B6AE210256B36A4410 -B9D1600D177098F06BD5DD7E5105DD1000FFCD84BEE0A9E5EE98424D6328C405 -EF84CDB2B4DF01F6105E40332D5E067208D78C9EB222FF0D49773D853F3995ED -DAB7BD856B8D7BE920FDFD64994613CE3153A0F82E9761888381D2BF49D14DC5 -BE70BB3017AAB6191DA90B440BE052CB3738110A94D7D9517FA7975A7D6E9574 -92495B202B3D7FB7F213ED050FE5E1CF7810A2FC62749C37D9E6A5B7C18C293B -29EC2169F31B6E2D7E20E3E10C6D941C2A8EACF5FD126EE9E9F8A0BE33B737C3 -18A4877BE24A66A364D37FA41B0BDFDCB041DA654F55A569C5DCAE8A1403E3BD -FAD659C4DC5EC98D6E36538A3680A7F8DF7D047B570031E7F9943714451AD5C6 -CAD5F766B2165AEF3ECB73BB8A60E53167E5F2E6636EF8B72B3E300DB4DD6CE3 -F0ED19F78FAB386989701CA816501BE8AF9C73DDE4C684FB380C05AAE1FA4957 -FCBFA59F4CC31C6CB6D4FD4214EFA50D25D005EC3211780EFB7CA85852179FCA -4EE10E811D2BBD3D6CAEE6577B25D04021D300DC4C347FBD839E1E9568958A2A -1E8509C66BF1A3A9CB82CED86FD20343936E341C1B59FBD0E2B9E95113E84B3E -7D42E0086A8069966E65DCB5E63B7DE1B8B97F1EADC31AD1541A466C74C2D588 -DA8978790722A0D712FDE78263835978A3A9373E13575DDB5DF4FD9E585C5F2C -7D0E7C2BDA36A6D949127B1169A4BDDFA48DA3B73A976218785CFCD8E3454B21 -F0E118D30463ED3184B218E697F4D78D36DBC927B1ADC31A9F6DE2862E16C779 -065D2470D23659D3DE2E7927C9D557DEA0DF036294563138A5A4C766A8900ABE -AA45892C3C0D6B6E55DD8CDA1F3CA86F60BCCD92E5E04ECAC7818BFB227C5A2F -4F55ABB82643DE9077B945DA2F3DDF3A87B581A623DBF213B904F829B1F83E25 -60CD32A8821B09445FF1D0569643B9BDC07141B607FBBB29A3552092E1F22BE8 -A9D852BD274A13DDE60C299FE21F354459D3334FAD429DA6EED4A948F8C10EDB -EE657858C0957C9229906FFDD270EAEA8E7A17010BB3868A1937BB08DADC4C1C -B19335DCA1CABBBD955D7C65BA978BA755045E5FE1537853650B191AB856360C -33DD87871939D2F36D49E95D19EE9B99EF15A017E7CEBF28741BB7CF66A57CFD -1AE132601DB33BB1935175F1C230270B2EA7C74F2EA94B762B40863EA03D3ACC -2F7BE81B66F94D4014D4765682ECF16B2982F3A6FDAC73577CD118EE21C95C28 -81BC2CDA0E59AB941EA9E95493AC01C62292BDE4B446AA19B4FE2F7FCF083FCA -4E6F7EA8624C034C343C610F6170FF97D3261970AA4E3CF4D27269DE79D84F08 -1E9A76252ED1C08B938BF7AF0748CD480C343DF351816B73CDF917CD7A09A86A -07B79985BDDF6475979EA36B4CF462D28988C7522DC7393D79E9706646C35CC9 -2759C1D2419991223E3198A3DADEA2A860EB5BA1EB6ECE1E1C7CEDE9D5D53F43 -3C3AA3AC8D8B342C1CEC6AC20621D66851EE10E3EA4660782400BC82839260D3 -EE4D5A45FA4FD477679ED3D039C916BEF2DFAD2A3E996374B1F6FFE299F63738 -69B82DD5395D8BCAD6C67D808B275075AF38BBC127A2E1608D4571F4FDB62CCF -F5D766D2D3B4E5C49E703E4C32FDFF5F9C602EB47FDD9F5DF5165CEF1AB8EBA0 -3CA149909A692C828D506C9674A036B1C9C962F856276B5B0296FE2195D68C29 -2AE3B2015599F0121B4986C36CA624D5EAD0531D4F136A17C054D4B0640DBFD2 -C913F9F066AC4940FF3C7D6D74C6B880986E42535618F558791F7577DEBF3E73 -09015F4139C40A428C47876F2A8648389ABA2EF638A621DDA85BA30DE99EC759 -722F41A8C569B116EB2DDBBB63A312418B4C5D9CABAB07A17C31BC8581C19053 -E563981EBB870F892218C5E9A93C205FF48D09CEB613D7323FB502F7C4855E96 -425AA5F10C0561F9443F1704E17D7D5927B4C3415D309DF5C2CF7F92025AFFD3 -A2A15552623D6797A8CF551A1F055EFC77CDFC618B3FF7B94B8DA3D855FF0C0A -43D017F1BDE8B5CDC530A196DF2DC759A3ED95AE44D1D2180EEF8F5A438F1986 -FF641B560C96A4663FDAF999D203D6B34D061F1169ED41AE812F7057B077780A -F2799D26094329AE8CAD0FE61B5A76A83A9BF74B0455E23B604692B82CB390B5 -41F4C9EDEF16091E6E9C177B7A5A7C08F3776B20C537FAAC7B9CE4A587170DC1 -7FD8EB494F4EC3257617A877AAE91976CC8596D661E609764FA64574D2D8DD9D -4C41A361E62AEEB1084DEF60BB6E7C2D22F821F9C797B8A74B626D68AB62B3C3 -CA139EEFC14221184FF1DE118AB8EDD95DB5DE62CD9B51840F60FAD19F167271 -A71740C4E61CA8B3D0582B63EF858B1B27FE2C5AC5836D7EA0A3B31382BB4683 -57C3C25A96CD5A10EBEBDAE276BB34900A5863CE6F4D64D50609B82FF4F02FAA -8CB2E8C3D2059FA0E352F0046F202A5EBC94CA18C569D20AA42BEDAE7BFE4BCC -80AAD6751AA3C570FE9B6C990DE994E770BF600FA7E88E37D4577C74DE09ECE6 -4654722B4429DC62340F3E8FCE6E6E074F013DCC43FE5C51CAE1957CB420ADA0 -AB58B9819B587EB18022DCCDACB469417DA285BE2CA97372E2EA60873D758F11 -8A353CECE1F1F900C55D79C58B353D3997A02B1CBC5339A3069595CB98CF55F6 -EAADBE17AE93F4863F32398863861F1865FE99737B9855F556DDEB479B9350DE -424B87904C3786F95320955C6055C90EE90AB678BF55B000003B668B990F38AD -70B3C4DDA1B89DB93A2FF4D1B3E0977C4C730F2A37981B0B647208E67C1753B8 -31D97A76FDE618CD7112C7039F077697D95094359037551C85FC5C150E0DBE63 -26A8CA688FBDCA0B5F06B64DC5B9CF62223B466251F09A2E19005180266819F3 -785A963E2EF7F598A2D6C2D7DA7749AC7AAF046F2D7948C5C55AF7316D0EE823 -F64FD165A6F72829FD0485529FC7B7C076C75A1C6360AB5B878E7656936D41F6 -8AF9A01E5695F674EFC4F7B06699EE8884C6E0FEE39544F1EF61C2EB6FEEA0D9 -BCF9FC3670A3D6A2CE61BA04637C81F97A0735A002C17D26F8A58650DC407D1B -4EFD4FA0F3AB2912C897C8D40876AF65F5AD3A625338CEDC4580CAE5E3471004 -C89565D9F53D67A41C175E301BD7D02C52C7C839EBEA60C396C5B0D73BE6A8AF -ACEAC7EEE25395D1B0CFD0C4406C15E446D66E171C7C5893CF2FA1BACA35440B -4494B8883AA6D9E4B7582ACDDC7ED6ECFCC6DBE83C1E4AC7B993763BD7B56AB3 -BB7DDB1966485732EA112CBA3237E5D7139190C59D25F37487FB66F95F57FE76 -384A38E97FEC1639C38B9697A4A7D3DF81CB9DBA1B8C2829EC74592DFE5378DB -FBC363E765E6719E83DFE522BB169BFCB63A315C737B99E8EEF8932AC764AA8B -CD024CB45BD0A39E96F40CCFE356FA905B9E450B74F2BB9D55DD92FE25210E94 -E3462D29C37AB32268F21B724A2404E504E95DAD1CB71605F38ACB8DAAB7822F -060309A73ABEF70CEDEAC12113F5571DE14F73804DCE23D71BC38B9A9FED9D9D -2D8EC6ED9C775BBDDC171E5C63CE9F39ACEFBD07A19C57FCBC5286C38C0171E5 -7341916F9404D576CA5E71B9993C0F301BE0D59FE2BC3765C6D21E4534A75E45 -18A86F2FF0A73D6576DBC5E0DCC287F109B1E96B2D954812FE5C7A5BCF2AFBB7 -5A608D6DAD6E9306BF6E80A062AFB67560A762F57C78B4330F5820F2F97ECD57 -F9FA88327D181429325F05FE5E81A7EB84195CB769C481FCE3111860A6DDDEEF -BA1E693E2E395900BD2A16D68A92085DF0508D4796934DA1BEB63D59F41B5AE3 -3A93220047C96B6420D1061DBE4F7DD168ADF7ADB7CD31391F62FE3C907FAB5B -FDF8D311E10DB23A6DAD5CDADDC50A4EBBD4C9DCA58CB8D2C6C6C9405DD7FA8C -16E21852FCF7807B56E5FB347B0BFAA4991FEAE0EC220B503EC0F220230AA521 -6B1039ACAC72EB3283AC6BC8539B884AEED40AFDD8DDBF17CB4CD825C68A9EB4 -137D77E6A5C4476A66A961FA52E102C3F49BD4B80ECF0BF7F853BF102C2D00EC -D545F12F0D8D5E04BC7C2BDDEA49199E7B6FB5817C576D58452D2E75162D011A -ACD7D0CCDEF71502FE88496C5E19CC81ADF1AA24A405206E61DDAAF130889DC3 -C15E4AD6F289F5024760A1A89CF9695BCCBF5DB7CC5B8EA83FC32B087DAA825D -D083612745861026D9C1D88D1C46BA5526A71F9AB4786C8110D8044D06D26B69 -CE1AEADB3A7342AFEE02C685C52E53E40662437ECC83685C70E15FEA06577A99 -565E0B85FFB0296F1C501FCB552194CDACD39130414418A68511CB9E4654A66D -4744F96A5D356CDE099EF984B6FFAA5A9CD967E37EB4D5D8433380567108200A -42B7084D9FDC5037B468AA275AFA62F116941558BD0F99E94A604AB19CE04E20 -1D782A1ED9246ECBFFE735D218AD7256D7CF6BDF707F7D65B9CC6BDF3857DC05 -D335E2D21DDD094A0AFB81F682609A44FCBDB3D6A2D696AE56EFE853338F8975 -998CE3577AC255E0F712F80ECE2C85B2C153CC3AB668A3915CE4724B2E3653B2 -2F38BDE00115A217FAF38675E9F16D91CF0AC34D687813746D269164CD505C9D -8B88D2119A8DACF3B9BBCDB6804248AB09BD0CCA2A9B0A617E3A27A65A2A6EE0 -1B5A0A6F29133FB63F527E00126DDB0B9A5C1CF4FA1C8D6E1C0323FB488A12F5 -A962654F0EB4A54F130B9A483BE9857F90764AE8B9AA0101BED1627EF1B95BAE -948A911DC5FD11009AC18D14217B504DE30D6433CE1F1358270AA5685A55D23E -D7DB15D2C32A9FEF30A89AD2A43966DAA115C75047474DD08C775DAB0328A2DD -CF16A236989F55B7A58D912F730B259E1872BE0C92C87EF7B4C9AD44789ADFF7 -38BECDACF9D5B8FDB828986367E268703B40A8B48ACEC6BB3359E61BBFE5B0F7 -23A6A24E1E3F63073E3665EDB2D32E9E047F6D1E47AAFDBD0033822928BD9C6E -0E545C3FE6421C74A24C484E7D51A71E8ACBD199D19CFB0804781EF93C074239 -EF2F6FA27F62F365EA2A12DCA5D088D258A6A726A7754EFDB1237A79A7138E85 -662B655E329E57666EF8A264F2DE28BE64AB7BDEBEA9C4A78B1250794B611375 -8033481E0B0BF46B098071269D74CA4CA7C0C13ED52B8B91D052574B7B3B83A6 -CC340258F8D30FEF7ADE448FEBA2810D6DB302D5119C7D1C5F42145A731921F5 -FCE9F9BAFA5CACB875F8650BDE37862E43066BC15FF5B106912A34DE22309B39 -693D45B868FC6F0D68B7E5C03E7FC334EAA3E911B85B49A9D3CAFAA9F401092E -18B29D792A18E94731DCBA1E208F1F4453C9B50884FC4FB147CF6824E13EAFD4 -80D2FD01EC9CE8C92A26189DD9582AAC06BB232EB59FF1FCDC52FD362B8897A3 -2D1417DB4E5746AFC353388AC3DCB8A39CB153E0E74C58211B8B7D871013E111 -8160FAB21A2FA2B768CE2CCB3F6D3458D555B3CFC5C70D8136F04AB0BDD84ED0 -86E21CF9CB9DD034E8AF0287E45DAF8773008F10AD5D0DD44F61E2E7C76E180C -4F8ECA6E1E0BD8335CD51AD318A7692AE3FE01D06884E13490575778D12D5B26 -519A85DEA89F3F59C36555BAC37A48E2FE44EA51E6BD750B1A01EF8E95742C94 -75C19AD531062F4AEAF23C6DC7421EFA7E7D8D6D7CDEEB9A3FBB385C53DC0BA6 -FD755E7F263CFF5F69D6B1AE706E31507BEBECB25E8CDC09956A2DC75EAADA2E -101336BA6815FFAC9EFBF32C57DE857E5BF524B1D82BCF7A485A8ECF04404B68 -04335E4A858D88D24E10264F5944A0695C5A07B3176FF22DAD9FF5B46DEB2DA7 -47B0A066C5816A277E85C1668BC0531719B190E40AAE955F758650901B6844FB -E1199CE9CDA9B63A5DFE7F076007EA9B735189D09420BAFDFC7195D8106EA86C -9B5F137F93F209F8355B96EF42FE38C74E791C99C1C9BCB283130D3134FE3468 -186ECD90E25DF9C4291EDE8D139298677E90175C1EC0DD4E46E497FC11DCC162 -5550553E6EC4D4647351530DADE101D6C6D4472C9BD8051E56601C34A6101E44 -820FFA209E6A9A6E9BA46B59CBD16C4FA650909359D48B54C30ACEB48E00138D -7CE7D83D957EDE6676614F8032E51973D692AE87027848BF2C4D4C3973A36091 -B68528CEDE4C0AB90C3170883C09659974723E8600AA0B93A2CEA4B5C74154B0 -1BE885C178E452B37F709DE61DFD09C473432087CF7E589CD7C544DACFB79D36 -AA7D8CF8A04096B5E41024C1B4910ECF14F5D132D5C9D3689FFA4FD58B1200AC -CCD41B8D76D9E4B80E0535458213890141A72FB1464B08617E3C668D0D1F1889 -DBFB2B7C07EDDF6C46D2CCB40CB1985D93F71420B3232925DEF1C219545B4024 -DDAAE581934F1A8CE228DF623A69D9CADD701BEA4DC16074475983D8DBB9FDD0 -E70A8542B3ED533B84E58AA0597396C584D3968E4DD65381D7A92CDFFFF378FC -F323C23ABAB68C4B514BC82931BA25C067356DF11994A9B6C8FEA1E7979EA892 -3FDDC99BBFEA09012097C49C257F1BD7B54B553698F9DF78C95D2624143792FF -1C2FDA58A0BE517D9002685087A375D2A8C58BDA973F22E0D484A3AB988D02CB -6E3525B9FB4DEDBBDAF2A1D93D4A0896C0806A8B693F24B688E5CDF0E2192586 -63D28C51A94E0A663E301A5FADFB39F8585D31D74CFA20F019AA7AD9DD0B322C -F97BC8380734140497F53A2B1EB430D810EE9E8FF15B8532C33BEB2924A2169E -FA282933C1562470BDF20114639049D28A9638661459BF75D6AE4B8B31327218 -3BFDF4187FF8F505AE635E1055676DCC784EB6BD7FFAC6D719270A1453F1F9C2 -3E347652AA2481513FED8C4894D3F53C7FD9D34B90099413F89D5C0CAD442D62 -F1CCAA21A28F364CEDF35957170B2E90F1FF8FD9CAD046DFA75E36CA36121145 -4ED800A81D865AF65195A5550F7798A9415218FCBC393904F932396292C6DEA5 -10957AE6ED2E6427CDFE962536DB7AC414C399799796F98C83C0007883AEA3B7 -08F67444842A99E0CD4A80429B4A8F832A07C085E9626E00DD327EC559A210B4 -CDADA11D28B6E95F7E119BC7CED1CCE4D8E9E1B2077DCE58876858BACC26C651 -9DE3C4D3F72DB66BCDDABC34E4A1981D79A502095863F441C1235722B25B2436 -91591E6F31041071EE87CD730BFC1C63C9C14D8D087E4AB1D8383B37BB2FA102 -F4EDD67F49D47BD89D4FCB481EF30CA6B8456020818885E7F88EE493C8380789 -011018C824EB9AA16BF47B53C0E98C1FBC321ED36BF17D4139F3E45DE798BE80 -5EC1130CE6F5705A3C45921CECD9578B8AAE1D420B16D48495D1A67E704A3E85 -F7F2590251A522259753C60C14845F699F062B626A1EDE4DBCE3CF08F1886688 -045C21BF0DBF5679683E184D6E7874CD634D930ABB02BA3317F55A0B81741ADA -315179F099CFBBFD351FA2976120F4DF07BDCD4EDB7FCCA27C4221C2557AE3AB -F378E1F7DF12B3BC213D5B9E31A8C2C9398F15E8D5297436161FC553B44DDB8B -ED03FA7772D605A843E64FF72818D0D51E3381DF8F13CB07AD0CE3755660C149 -3B8C5FBCCABC9D8C98C1D0BCDE05815426F390327E2C994C7C611EDBBC2BCE9E -5028419E6F78F301795A93122BE7F57A8B069EFD4FA61EF35C737267504EE1C1 -32CA2A025A99D9BA7328C2065C752AF365E942FA8F6BF88DD7EB7203B6A79B20 -E69C1AE38B3D1327FA639EEE719CD9C255A8E683A575904361ACA30BDB2FD061 -D70AA670A999AAAD749454CDC4AC3B2202C5EE338A4CDA93C9B05E6B58EB3FEA -47C65265E2D32210218239E3ACED483FEB1BAEBA73B544E03ED18567E7290F69 -0398071D16489E876A1136CB66E1DA46E7189367B18EF83D06E693127203DD1F -83B4A621F18ECCFC5292C529568D54F7B20C831037130750001E078B2881C017 -A308D79302E65E5F9E0DC18AEF3183AA8BEAED89A0798DE70DBE5EA3EC4C4F73 -EAD7E8FBFB19ED627192FDF050308B3E5F9B704591268C43F99B971DEB414068 -4AA4EF5113AC74D1C80C17A4AD810E258630B0DC109B02A80626059F893D08EE -7E112CBF87FCE766533BB99EE97CF2A7599C513EE55D4774001D76C6A24CBB41 -0E217FEAA6B6A4DCADF3520F0903F2B11648E5D7180A75F0391ABC4D75585E3C -668DDE41109B78FE828746631574AA36526A4079745BB36E0FAF1DD8C0873E91 -94E35BC415C4AE10AA8262AC3118CE310075014F478C9C59B2A77880F18FED70 -D021CF974CA7481B4F66AF8CF601F4DD56C1190F6D39349174DFE2EE684C780E -A6FE2DE96F67B27CF1C9942645E2D1621F2E55E6C197A3891C847290EA09F59C -B0C8D6688D1F3EDAA114485BDEEA0C419ADD8117670B274D12FA8D2DB25E2372 -B1F9E51313F80CBDA54AE2E1869F3972CC8188A94638F655C4CCEA5235A8F915 -AB2FD526AC22DB8C7FCE28B7D4D167BDA14FC19892E41AF539F131AC9FFFC4B2 -B0C6A689E6AFEA5EEE0A0CE86A2666D725CEEE2A278AA17E0E79CE79DE495E19 -61A2189F012D8E846C8D45D769D11D0997543781E6EA97BCF0DCEE589BFEBB51 -8A88A48FA27219DC97A08DCBE8BD239406EF626227AA7522CF6FDD2D38C0DD7B -D0A314D6B35CF17DCA54F04E786EC09C8D854CB8FCED2B1137856D697533A042 -16C3B3092ED3FA69E1E1429C87D7989E29EEC7F739A068CA8CC67B970C398C84 -2E76850FB2174CD17B06BDB9A4AA9BD656B367A443B538E03753A5C8EF1B6345 -8C17EE6E339E5C32D51644D5E840E27755D8540C57E4E876737DF31CCC03E8EA -2C4096647309F63DC679501C2E8CE4F6DC6DDDC9B211408B92A306C9ACAF7E2A -6DCDD2DBE4189FA285FE5B418765FA4E9A80005DEC72D3E0E2223430A467EC2C -AE486037BFE650C82AE865F42D913C630B921CD4E15652B9A3CD3D4EC407437D -1343DD19B80A96FFC3B15AF7E5DF2CEE19572E214E94A51A84B2404EAE132B58 -1199E65B1D8E5FFEAD1BB0C18EE1D6C62CA028A238F221BC0A55EE74B8731C36 -5A4A7BC82D523A26FFEF92557BEDDC0124EA1D4B76352FC8771D981D1C841019 -D1D6FE1D3161D60B59388A7EBBBD5827783141DAABA33231947EC9A98D106279 -B6A9D41CD7F2B9527E2791D4D6BCF70D5C32AC6FAD42D66D91B2BA2AF633B201 -88E46208334D018FF77F42467F919FC7B6355AC3511185399BA00B8D45BE2B35 -00CF8E20CE6F672B29BF2ACDC6DEA51C8C1B2EA1B83D3878FC0138139708049C -B5B62AC091103B6C2D4C1439AE3CF37B5E3CC4A28D6BD771655689E8C015447F -92B7A253708285F4C03A75641F84001FAFD36C8DF4150929EC7995B653B53305 -B2E3EFFE7C3BECA0B23CE0864AF88988A853716E7E7AF69D1A431FDA887790FD -6E1A9C6C35DBDBC5E39F009740ADD2348CA838B3017FD6A83E4341397CA7BC06 -2C6468F9F7E08309CFF4F72468BD5C7EC622F71C7DB512960993B80D150CEDE9 -0A051E7C28218604978AB4A64DC0FD1F4ABE7637CEFB7E4D549FCF16BD5BA9B3 -488B824758A5CAC3D392B30A4E74BC74E1C6A4D7DC85E08B1EFDF083A5E8E427 -E87A542CFEEA77F69BE0509119FF75F2EC64990265290AB3DBB90FD399CE126E -FC2B3EF77E064B19DB5CDF2A9E9DF9DA3CE07C6591A3AE7A06CCA8E1E18ED955 -1E3D4ED9AB413E1AB64581A3F2214AED77172CD93B90CFAB761597187CE7EB06 -9D4D6672E9B69D83897057B136436D260D5AB369FB4C9B13C8DB87ADA7BF2564 -967C6CFBB1B364222C89F0D67BE21A5CF4E3EE02D17256AE307BB987B2BAACD0 -4778574F3178EA919EF5CD14225FE3BBB886B2F6C7998A621B3560DC15A8F76D -6A2FF2C8EDA1464E4B6822265A492AF701C78077AD97B550680ADE63752A9CE8 -9B607F55B946A622D5FFA3D5A5FABD04CDD93388348817AD6734F9366CCF5F18 -CAEDF873F3D618FE24948208E795CB86016458F5B2062D839483C07AB449E107 -76873DCD8EBE90B79A54CA0D83978AF80DDFF7B213EF6626E759BB9E254F73FC -E54CB3DC00B23B848F83FBB9FC73A9529F5DCC469189E4067D5A8E4AC8A8B199 -EA673169A8E27E78A76D7A4295F36E03F3B3D1B98BE48CFDA821CB0A646516BB -83F203FD86AA860EC0A1DAF03FDAC8BBA4E0163F109E3D5F3D9C1596F8C8DFF4 -4A96C26A8603C9743800D28F8C13FE3948BB99DA9A81B0BDD06BC1246E31FCA3 -14A4BCE5845A79BF4DE8C28E556EBC3B4E01E2641361062E0D24DBA60EBFACEB -DABDFE057FFFF4727ED61CB0125FB0B933F2421C1589E848AD295B7FDFC5D1A1 -78CFA5CB9F8180F561EC5A9866781D82CCE5FAE0296FD548F7608297085274F6 -E33183D8C6CFDD9587723263B6F8D3FA343E38F8A738ED4E078436B3AFBBF4E2 -56ABF9F50D82A999FDD97E8C802029644702B8374DD158ACD14C1C3BC3659013 -C8CF9A26A4D38FE0820C48ED471593F81BB7213556531D027138DDBFE750D6DA -5AB6BED543E49ADFFE36C8421BCF9C3AEE247C1B17F1FA25FACA6B0635373049 -9B42EF812AC4501B101273E1CF8C7973210363A8C77EBB726CEBD7BEAAFC58F2 -F85CD373F341FE527A9658F19C7236A73C203AE3B8C358F22E0A75ABA2423748 -DEF72D3CD02821B6955A38637C6AB902FC79A9751798CD20D678BA95B04F544F -C6593651A8400477A3B51E140CB037C2B8BFE825BAA875C1DCCF5D87D32EFC94 -784DC47AF52924E28C1F80E7AA31F50B071E13DB7A8545365F09E98E50C68AE4 -8F0859BD1062B67A7EC810C8F15E1EC3EF0709D7165AB2B29D5321E8E43E84FD -8B2B469EE204F1482F4B2F519B554EEBEA1636D205620D539D7A573387AA2E29 -A61E715BA0AEB904163182B1CAB88B38822434C616C0004CCA8D6D4AC7352174 -6DE58FFCFAE5A35F57BE71D4D8AD77B95419BDA3C52E93B8D08559130F751213 -3D086B7600254208ECDE9481EB25ABB11783954FB1A35B216318C07028B4205C -179C8821FBD420B3A2532D991A1272003908E19C1B0963C5824E0271A6D2C31B -7DE8BE1F1CFF072B819194CB3DE154A1CC13244449FCB9E487F3F1E0DA3D90DE -640DFBAAAACB9C2E62ADC7D56B692CD0244FBF4D39FBB8DD8BD18839014DC7DC -EB4DDDFF18A68FCE660AA5C537184E94C3E955C479A7F493EB85392EA3E8F7B5 -BF919F8A4A4C21C227189F9B65717FEBEBE152F365DE7D84AA53129F1978F82E -75DCE1CC87D59E8E81FFA3A7A24B926575BBDF4FD65B3E54DE1F739DDD8A8243 -E7B2BE704B16DC90E87A0559DAEC85713C67BBF036C87602A121D8B25E040A46 -2BB02C9C79971A1C2BC40935BEFF7876ED50A0F26BFE8DFF0907A377C176FFC1 -EAC1E46C76BBCB6D188A7F9F75EC9BC2E162FEBB65B454C7CCFD6F5EE26677FE -432FC2E815F90E3EEE92DCD04237FD3BDA193A43B5BBC36D42642C6C0BB8F3CC -8019A3CF0B44CD80B6430597026844DC -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.0: CMTT9 003.002 -%%Title: CMTT9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup -/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT9 def -/FontBBox {-6 -233 542 698 }readonly def -/UniqueID 5000831 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 35 /numbersign put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 124 /bar put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 -42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 -4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 -689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 -0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA -610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 -3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 -C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 -995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE -EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 -2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 -4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC -B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 -D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE -510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 -BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF -93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC -F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 -45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 -4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 -088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 -9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A -09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 -E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C -0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A -FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C -94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 -03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF -409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 -45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 -39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 -58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 -84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A -0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F -F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD -B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD -D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B -3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B -7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D -8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 -712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E -C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 -E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA -A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC -2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 -757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C -54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 -DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 -08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD -6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 -A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 -336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D -E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB -3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A -E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 -1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 -FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 -A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 -465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 -3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 -CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF -573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA -9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D -15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D -D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 -15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 -64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 -D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C -D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 -576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 -ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 -EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC -9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 -3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A -1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD -FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 -C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA -4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 -CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 -3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D -D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 -BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 -1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D -4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 -C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D -80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C -AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 -59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 -3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 -14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 -B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 -F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 -54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 -34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 -825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 -BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 -4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F -66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E -2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF -F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A -1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 -37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 -741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 -39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC -887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 -B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD -15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 -5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 -80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 -A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 -BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 -2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B -B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 -F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B -9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 -CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 -DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 -6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B -7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 -D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B -9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 -EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 -0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 -1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 -85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 -EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F -D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 -E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 -88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 -E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 -01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 -54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A -97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 -B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 -D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 -18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE -A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 -1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 -31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 -408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF -1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E -29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 -BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B -AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 -0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D -99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE -480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC -D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 -FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB -587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 -A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C -C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C -AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D -AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 -48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 -385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 -8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 -4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C -839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C -320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 -7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E -DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D -DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F -461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A -BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 -1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A -3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 -0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 -EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA -AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 -F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 -097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA -53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7 -39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78 -77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0 -1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F -9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D -84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F -737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC5723EBB357 -73DB0933927DC21081E67E5DCF4E41FAA6E00E8DF04128F86348FB0718068FA9 -918319C4EE9D090CDF348153B6CC48648C55E889B4FFD3D75466F1B50C437546 -7DD9CF20980B148F60BB146402DC0732A27F255DCB859CFB6F9D329C12FB14A6 -7824D6DE27B03FF85BC59703A5D6C5B7D1CEBCF3C3FCD71D6D6F0311E41BF8BF -0609D23C84720FA9EAC961C9D49C2E962D9618C32BAFBAA8CAB0B2F616E57DA6 -8CB44C5595A22D6793FE9323257F0881FEFF677F98573A8E3A4947086C83F739 -937FA170572C5DFCC89CAAD175D626CC2FF675A1DA4620152AFECA7497DD53AF -F1D82F68A75FF2AA16F255C247DDE3B5E307B96EB92BF7CA4C031B706053D16C -D78D2C620C5D1E95BDA3D8ED452CAAA579BB4AF1C5797F2B7225BBDA3E7AC5D9 -0F0C3AC5116C57334D40E1E44C4742D7AEE78BCBC3AD4871694AB4F3BA7F317D -443D7E9B9AD53380D62EDA208CB2CBD637037DD19A4787AC77D46D559C93213A -E272147F977F3BC1A4FD44643DDD46CF1E50E0DCACDBB2122817F290EBF666F1 -56F5CD26E995B1E3EB46308631D1FE378B37DC3D202113546B036DDF1DA32931 -9B67D9522DBD801FC6C8BE43C0FB3B37CE01E6BF14260530E493DC3A5EE2ED04 -2ED6B8C4BB6EFA642D66903EBCF687A161B94D63A670E90AC6514E1CDE477B4B -7E066CD84F61233A258B13DA77365C5E302627EBD033C63D47A86E6B2CEB4D4D -92E507F1953DAAEDF8CA558563E6CCBE51CA753082CA5EEE131C30CB7640B13B -0C5753268074BFF7779584A3808F8F14154500BF13ECA81FE6879875DE12FC3B -E58D65DAADD4205891AF008F869D867FA7DA4DCF23E2F46A1A1FC043E21F1915 -E9F79547291060D6BDD4671BB80234E474A98F1EC24FFE844079DD0D7BACC9AA -BF6B27DE5438995830877A20A04B06060B1B5584B8B54986F85FEC0938F63633 -75D11190084C2AE3AFCA77BB0A497E2D1D6F7CF6EF387B193A652C61E47BCB5F -C495AC3926FF8FC14D0B094A5C3CA9546388B135028E968B52C788F78ED28141 -176B1D2190D3552E654549EB21C6D76114FCFA365079A0968386320E37B32F94 -A550368ED5E8ED073D0CAF5DDF53FC5398DF274722D98462C15846C69EB7A4CD -47CD8F17B1D9D91C43CD5DF110056F18F56FF5DD3AD6FC34272C958B49ACA3AB -C713C8A459484D01C3D0610A03DBA37189003AAFA42F9301AD149E47611F44DC -E25C486BCD845B13A4E44A93D2991DDCB159A509CC19C7F2BC953885F508F90A -3FD4303179780FA973DB01432CEBAE35C71037449E6D5D44D4FE90E631890E56 -9E5FDD427175A7827DF70A58670BCFCB3C9F0F408C317481737A59C95C14F25C -5605D80C732821A948509CC07B21301CA80A9FCA91ADF6F0855677A3E0C6AA71 -944531E739D7677AA50824A3560D25C218161225DC6428F16D255666E97CA479 -DB6EAD9172E7A5CF9CC97B4884BFC57246E337094B476E89E0893D5B83377F9E -0AC80A72ACFF9110436A0BD07B43FEFDC429143548875D9CFCAB7143F391D974 -8A905F2EC166056B1EF2345EBCF2F27D60E3355C996515764C2332AD6641F610 -2ACBF70B22BE6871B3D1A9EAFC8EBCE9351E8436D4DBB45AF54E3E47B8B71A0F -09CB91AC8C56A96116B5FADECF1359D941800512B0AEF302A22A91A25AFBB1A1 -F47A9660E30FB00B88A14522B3B024A797DC65105CE08D3ED0C4CBE8A894E00B -98F77E873EB6FEA680DD131706336295628330E1FC6B1FF9D9503F5153A47A09 -83511D327E9D236CF4958FA037FBD3BB8002215C8BA4DFA1E788553178D1AB2C -8D7BBECEACAF478A17BA48D3A1493ADA8E82AE8E9EEC3E4F9B0D699A95ADD6A2 -E3AA945A6ED96D608AD857F98ECC8D9B1408B68E72B06EC582E31F94349E5522 -ECF56451C22643192954FC9674D0B00C42FC843C70243E5291CC8CC661A57786 -E8C418A22A492053C75CC1254DA918881F94667E894D3FD619C183D4C056CE60 -A641E8D0F4C4CFDD673E3BAF4F64CE3D6E8A9DF8016DCE40AE7C10BF0A08C3FC -11AB82036D171B62FF407E3157C50484617EF16AA9585C9F45ABC5EFBBCCF731 -BAE398448D796D0F12213F45A008451D84880940225B9B56DB581526E9538EAA -489844D639EDB7E21E7F3533998142B464A608D8C2BEE89E4ABC413C53E30BFB -D14A429DE14E03487C35453BFD76AB091E635DA15E9554EBE49CBF29B0C96706 -BB7AE920776672F3D9243E93F8985B7FDBCDF91805EE13CA01877D8476C88E2F -F36628FC3B72900F414BD6C22BD33E3C5C0642C093080D4C897BB90A76405916 -9C00C1B0744955AF8E136682937AAD1AB0112CD668F0EB174002049F4B659220 -5625F58CE12D3D47B355910BB66FA89C495263612B4F6ABFC5689178032C0B34 -A0821A28B1125F21350EFF330DC7BB7C98165AFC5543B21BB8C1F083274F2033 -FC409532068857C34B91FE26B56EF74A8A6C7EE4D4C4B834258A96F340DB9EC8 -940F158AE9F1F88A404D687F3F35C87A6B696D96DB62853DE8B521350BFF2151 -66595617F835DA8774BF046C4CB1B6DFC695234D9FAD62061439C605D4723ECC -665D49678D73D7538B292009527541DD30770E668DF5ABB0728C7D62A41FB6B4 -8B03448E69AFAEAFDA23B373B89A1798242C2DEB42910A641EEC277F33BF91FA -833DF65A73335E4F46C47EA655B21A58542B37F27E570104165417AE5CB3E512 -48C67ACD9CA710D776B0E4E8AB939C8709A2092E0AA4DA5C7C219921AE2D1978 -193155297E74307CD88057C8AA8A8C76E3E5B6DE395ACA37E5E56C7559426E0A -49BFF1F52ED7295BE8B69F1EAF891E3B7268E3074CEF9714934502100F940203 -AFCD1FB8EE701829079B7941C075CCF0CFB7F09BEDBBF3CD182D78E8523CC43F -C2B9CE51CB1D0FF9289B317711783EB1C74F45B2AFFEEA23A8E29B86E00730E0 -2554AA9F97871AFCE2E8175FB73D1F5C63330B973522E56528613EDB96BE2A0D -39B9171F18AA02C70815B8F039DC7F7C973C82B31E38B7022FC380FA56E84F02 -F611F79D7F82AD14C8A7FE68945F0E58FBDB9DE8885F8F279B4F52298223383E -72D0C56C3AABA7FAFCCA43B1D54EBE13967CB7227886AD1E360675567594570C -B144D383998186C83AC3C089CA1063D352B4926B75CA278961C14ACE4A0704EC -A9193D4D588EDDD2C0637C721290F8E5D45DAB3124306EC438C3874192C7528F -B42E815CDFB631D21412B39E5FC7C1AD908ADAD537B612FEC6CA686E32BCD9E1 -FC8857D659CC40EE9B739B7020E7ED14992D095CE8ACBA53C49062234B674F73 -DFA156AFF54B69A3B160C3CD1B3DC5D133AC282085CAB47A2DCCD17B276A9AAB -4E938175C455DE42C61CA17C7E932A265A2F4BD5B345F219675605D2C67DBA7D -E5603A0A2CA4FCDB480F6C5824F516FE89ADEA834678332793FED070554A2F11 -147483E2E07CA0C6482B1D8A86DD55E37132AD6C0A6809E884AAB7CDA8206071 -04160B8790D0443D15B78F6032A65125CF05D3D8C16833CF6F43AE0C2830C292 -0535277050AE35FD618168B69859A7324E69671BDFFD20D39945D5033759B689 -DBC5ABF16BABD01F223ABBE7E535CA0442DC2C0A39F7833FBEA24C0DB300D634 -163BCCC5419B2CF457AF7DF6F2FE3D7C1E93608D1B52B7F9C8DE2552CC35BEED -F38EECE0874AED4507157389043FB93BCC7D7E71D42A2284615677E9D1F9ABC2 -EE38578ED962596BD06DF0729A5A1D1EB41A2B9BDE97DB3B619252F024BAFDD1 -951DCF127753CD953486D634BF578C4E0BCCE5BCACC214210FB1CDBD22BA1A5E -BF0AF67E38E06554203587920EB27A91921FED3160832C6928AF86DDA5DAB1A1 -CBF3685B2D0FDE168B8F66E544900F889DF5E773CA536CC2FDE35287DBF7EC1A -CECFF6C2E32D002A653CAC20624A8AEB07D7DE1032F85DA68B483B83F8D123CE -833F0ADEC8B1537D0A68C3EFD8876C2094678AA68FB9ED4F57D71ECA40D03A19 -15DEFE183470DB6A31923C44F8AF1BCDCFF4379500C04057B981EDBBA752B735 -B7C2BF718D8D26C9EAB63E8901709325307AE7F6531B8B8D763F80436481BA89 -92A2D51E54976D43493B6D1B59E92ADFB58F037A5CF997F545666DE9466B313B -625592F04768EE45BB7545B559A084C613ED93173425A1522650944C76905E3F -481C4B96CC0B0DBA4DEEE7BC59AEA4E6408CF39CD800332E45040B32A17184F2 -325E01EA36ACB452010C9B3B8CD7DF2397B37EB3BE0BB4B55C2D10FA77409722 -EAA6057155F5647D973A321329B5718774F9F3F35CA7375EC6C7F1DAF1431861 -F18CC7B0DCDC88725D6B41118C18F736B7DE1C16685B03433EFC7EC4E26F9612 -03A3D3DC290527FB035F424C30473B870A4F87750424DF2ED547ABB12A3805F1 -BCF7ECC4AC554CDF539E151F001805C67174FD1FC9F9D1CE4CE1BAD0A65C4B4A -D563A0DDB1A04CCD0802AA24C81C4B25F5974A45E027369BD67A610F5756B1AA -8ED91CE191C24447D5AB4D12897D29DEC5E86FD992E80BC77951B5967FDA29DB -D049E77EA6AD8F916F8F8FF75E410B7816C66EEABEC14C5256B9940F9ECC8743 -00CD8EF5BCCC197064C50C721C382A0BEA95BB386BCEF0685E8CB3D7D8DD0DE1 -DF41CC00541D0C037C521D079925A3C8D218552ADEB32FA2D321F47E3D08CF5E -A82847545117C36DA06ADD506FAB524941783E6A87C302F2D2D82759311463C9 -A42D97ACAEB73F49028BBFDE395CC3E2B563AA0F36C3059A2A6333E4E77C5921 -FB8795471454AABA359A50B3216094ACBB0962899A36FDF04382B691F7C97D30 -7FE89BEDC4FE24714CBA54E1427C88F64EFC5181688EF2393AD72E3FB9A4467B -7B36AB5730EAC0C812682B2E47C939DBEBBEC96EE526473A5674228BB3A05113 -FD8B294E841866EFAE18608AF00A9CF163893CCBD7FCEF39BE311B7AE268FE85 -A6EECB162C5E8051479277DBD86FFF24C46891DF148B0F9797130AE285C8D908 -ABF924C74DA8D35629B5397CC4DD5FBCCAC5B51C842CBF6092575FEAB1730E6B -F57384D307A7D8F67B682F10191265E2DA24F793ADE78900FD1CBC50522D8662 -0F0DF6C00B435A8F66E88AF86323F599344974F570358E6FCE49A38C299F9413 -9E50CCCD28B4A1C79A25C1AA693B662A3694ED34A94967B7A153126797816A78 -337CA812AA2C63DC7BC0F721499ED576BB203055D2FC83EEEFA1EF1FACBC0B3B -754240A6A5193FBFEA971AC058876A77090EAF2AB953650BB9F0CDC2FF6197BB -8E712D60677E76E100001F3AD483CBC24CE8AE4154B42CFF1E8480EEF4A98B32 -2927FFD788EB04793C1E43CEB78FBC27E15E1EF3DF42D1538C9724D8A2A5A63E -C53FFB4507924371428CA6ABB3A3B347F233D3743826038929294F56FEBA1EC4 -047273DAD9F1CA8EE591F1FDAFAFA1FAB4BF194CDA6A5572039500514EB20C09 -6A60E3629CD2787CD08F9FA231B18E4EDAFE213853473647C877BB5801803D90 -4EE2D7AF340BFC3E5BEF8D7B94244405DFD9D2DD49F46ABFF331031BA9F65BCC -36A69F599FB82E28E1834A9B3BB9B2A28DD9DBD7820B0ACE05726A43A3C3B3BA -4DAB7FE6ED9E6BCAF5D96EEC1DF629752A70D1CFAB741C9292637B6B2C0EBFC4 -F7E9531CAA8688AB009605A918F3AF87490C913EC6AED16BB75B10D8C9BA8F48 -F6CE9F5120C674439113ABA876BB4CE0B40D34BC3F20153A89A843C1C1859C61 -4A085480779D170E26357EB5398057297666672861A025BD8724A747CF3B83E8 -754081C9B027B04189B2A1B024F1D39D11670BA834F37A20FADD07DD28094B00 -400D062383E2F9DBD12C5AA8BE4BC7D7DC145EE4B1A289EC539F58B5713950D1 -4070FA9EFE10838846E45C2AD47320A690CD51F6924FF283DE926F2A48A52EEC -9C648DBB8017A61C8B62A92F35BDAEFA6F8AC1E7970C4E1BDF827101F804D57C -B3C00B4A334DB98293236438B8CA4588123C3CC73BDDD5A09B0DC68C0F23028F -B51B6779066E74DF3665311F34EB389519910900DEF856C4F5BF7431754A18BF -535C2B3E5C19474282D056D4AE7380CBAB4FBD8A59FED62B60D3FACD9D410B77 -E56CE3F7125D6506A3D2C802853691736029DDD1508497176AF904A9FD483591 -956F10B517CC74C1A5911396E5A99B0F447A850208DE4F4AC40CC0EC5F43DC92 -B39B6E4E5FF46E20614CA2049240B2F7C9CDD38C5BD79602EA0AB461D4834C0C -4B3B7A7005E3D57694E177681034DA1C6CD9C59BF3CAC137804522E143EF99A5 -97F7203846CFD84F3D51C586FDD70F54D5251BF301C25F006F31211EBE68CED0 -42D4F978D1B92DC8E9E58B7901D5CF62F5B5668E3C5561593BA22BC17E73DE56 -796F09219554DECB4845CBC713DEED83F818F155424788C4259E558A4289DFF8 -8599CFAB3573E44663D553ED8B602D2DF5D335ADB1ABF2BE5B1CA57D8C7D1CBF -63339E66BEBCEDC145872DF8B754A5C084D1059CE5CA912A7F1B503D7D4A1A63 -89E090F319149CC5C1AFF5800A6070DEBECA4242A15096E32BCB4592EEC00C32 -011EDE9F0A28CFAAE8E0ED5868FF4B68D81EE71475742B8A16EBC31460713DC2 -2788C92C46762E1567DE47D45AB8CB0D6339782AE34310B7020A2D36E903F8E5 -916A2D87B1BAEB147AA0857E3B8C6B42EF85A0CAE8BD5EDE5B95BDB8E4197EE3 -D65AA606FA8F86B11B13FEAB59A093204BE0C77C59420BCAE0EEC7065E81F200 -2D9BD81B3BB5BF2BFC36F73119A8AC2ABAAE4F3BC4A4C4BE69083C86D7FA0235 -65C111C4FE98C0F0060CFD036EBCCCAF20E7C4887C542C65395993252DD3CC3E -27F937EA81E0471A987E8DC1E6E1DF6C5C24FE0D5919151855CC92A2F8643A1D -B1A476EC2D7987575465205CC3EEA45C582984311E70D017E5432F646A722E2C -7393CB76DE55B15840EF7B3457F381982E7D4E5EC036FB434CEF78189B0DBFFD -7A518A804578034D018F48838702C353C8A3412FBD465F6B26BDB6CC82F38273 -AF19BD450B45E226B0566EF87FC46BEF50D9019EFC0AC8EE69DB43BC4CE30401 -7F65D90F8167E0F8E0494374E1353AA5F76F988EA1F441AC2F9BD8F883831E9B -8788B2AEB6C47183385993A7092F24F178FA827C1B604C5C9B7D30998377F78F -DA11AB98CC4905278850D3088904DD8FDB80FD7800BFF48BB302D694D6802534 -28FD8EDE7640607DDBFACDBDACF74EF16233240F46FDD97470528FCDE11C87D9 -FE49262FE715673DA821164E565547283A97F5D6542AA91F232DC7CD55FA125D -7D4D6DE5C683EE4CAEEF3C5C0CA9095F49A6E5C50EF9648A48AB945A1159BD14 -9F6C559AFE9021DFFBB66ACDDA2656F75CF5668617DCE9E61190D69891E00DD1 -1D843815A8777773AC0700B8C288D4BFFDF47BDDC5E755CB45A2EF780806D00A -5199FDE0795FBA924B8DD3C62070829F736A9FA990426D05E3A17244140F2CEB -FEFD8AD5E9A2D06FEB8D2302930C10FA5FD32A80470D0C78155AEB79E65025E3 -D7742E53FA07ED4B5E28568B3EF58D84A1B030677B2049B47A9619D647459614 -B6C788A2D7B2A1A28473F7E03077F2B76800387EEBFE881ED2DF57D9E0731DF7 -F85B5893978E4987CB5F038D52DC04A77563F4C343A72A7467924DDDC46F9E71 -DC8F3C8B6DD1B257B0B2EEE2DBC375F6F10054508B3A9F5C96741C6C2EA4F362 -38499DAD4C3C60F872A4E60D46D4206CE505C79C9D23A90F6816A7D474F4A6CD -59F0E51F3F974A583E9B42359CB05A49944FD0C4A98E9F2EC4616A353C8602C9 -9FE9C23C5831B7795C8166D738C3B1AE8DA84D4BCBA8CC3B42CFACA6D3FF9911 -F6DD0E3F51D8A34FD4CF86947321F4F0D8A235958F97D420DC9B84EE4E181072 -8CF7775571B9A7546EC8AA888C0973844C950B9B7C1CB6BED4D22A645E0D6B02 -226CBB7C90C85C8C281A26A724FE55504AD3534CA1045059521D490A127827B4 -A8ED830409FA14EB7C72B07E7BDDF6A4DE72FAA2EAD35B2924AB20245EC34758 -BCDA458B46EE08FE9A4676FF2C62294A75900C1BD18576D5DC14C5BE3FB28C77 -91F4C70953982ECBF48EBBE5776B13C82DBB9BC342BA91472136FEFA77D26C34 -ED729A7461C599285073E8EA4EEF30482EEBE964287F2243AD8C0841EA7CF2F3 -254B4621467E0F6736897638F6D272BA843A59F1ADD0BE7A8CA10620DC3C2FC4 -09264EB8C91081B2D7A922ED3BF3A0FE977B105FC977ECE8D410B93DF0F10D92 -72AB21DC908B95030947295E31359EB24995E7F876030FFF8A6E6797638DFD7D -3D1A7CCD74A2508107B9E834F1EB6EF8ED145CBA279C34EA120B998251676FBB -5A948DED6DB868862BD883EF862871D7B6D0297943FDE54252AE65559D65E3F2 -16C955B774E4747C05D2292633C900A37DE2B36EA44F5EA63042A0CC8E67157E -25BEE390DE76BC6141F54432871301658FC5AC86572145CCAF0A7C28025D403D -9518B4228D451A50F7CC18EB253AB9C7E89964CA289C12520C7BE1E19325DBAA -731915673EE8E286116676248BE2F618B2E8D88EDD8D3AFBF84FC88A7BCFFE64 -C56BC9F94E2914FF82DA100C9A23E8C6E3931D225D917091A6695EAF38770815 -E35BC96122956581A14D30BB9F8AFEC5B6E831E8A8C230FCA87A4969BE1BDFAA -C51C5FC7791EB8013D67DED7F961AFE4BAFD3087FE23343678E218F269B9F0BC -E8B945EC8B9301E687FDFC672B7610F3D2ABDF92B441E25121AD2A0B46B1F84C -EA523E1E3AAFD1AE2A854F07F04F26DD3066A9D07FD6EE16897D00D9D2775F63 -1AAA5C4AC0B9B10517E8989D47E5A783448C7FF5400BFAEC1113651DC37F6726 -4D7D19E21155575154DE7A27F334EE41D977A13D0B5C8DD3CEB37BB2028B0B3C -B3E536882248A48FB1733F073EA75932139211D26F1E7270B02AAD59A1206AF2 -A5B6A2C8EFA38588D8204F9792988330E4025E3C9BFDE386810769C61FBB4949 -A207B499FE096D7A44BDCB2BCA400F579E91843CF70CECA76AE349662EF0A63E -620C8667348BE8FDB25AF98EF04FD9A4F892A3C8F8413421277E2B6FB2486EF6 -F05A03D14E730C1836F1277CB4F5AC25775C60DB75161D44D15185EBF7E0E6F8 -D8F2F6DBF4759AF9D5BD9055DED8AEC3FBA8ADEB5D9E361AEF2B91383F5F9169 -FAB27B66F49655E2B61608D11FF26979745A41552F95F7D2619B71EB64027247 -BAA809EC06768696FAE16C12C5E2AC3A878A5B4E351D83C7B8825580FFD67CF1 -3EACB86A53B9A4ABE5EEA872ADF50077056ACEAE91806E00E66C1AD9F5B1A52C -FAFDC465BB1F668A67F506EED2FDE3D54EF6764E4C5011117798500B3E6C28EF -C0FED72F487F121A962C503344813E38CB5A3D72357379187371EC173DD21ADA -12CABAE6EB771841322AA36B8C282B1A9027262DAB07C1CBCB5F7BD74B58D3F6 -B552C474C940D76B6B3F00373963C3E2F45140849316D44E18D30391EE2B1C3C -B8F58A2C9F8D04E6E0B03617B1556031A978CA4818ED5FF6CC44158F58CEDF6A -061EFB5DAD7186F2AF36E0A0F5B319E0E41DA7338F380927E5F281596A847F17 -042B12E23ECF0769CADAE5F045C270946CC62337819E6E939407CE14466C7308 -2E078A1B1EF7005F280DDE592D404AD4763A4CE3A6B15FEA9D73383A06523E45 -A7F6DE54DC41522BE72E5D8B82A54DC9F0903648FF3A0877AD61B1803F23C6D2 -BE9CD4E8E24E551E43363761FE61E05DC73F32F210E64A37C8B13F3EDE519589 -4E6FF502F07C4BF44C97EB9197DBC35147929EB0FA95A7202D9A3B335FDFBA0D -C14EE8D9C3542E820E0D21060E04498D76EDFFAF30ECEF0D86125DE871416240 -8F92B6DFB3F80E784C583C5985264BFC23D0BB50D1A3A1C3D561586FA4CD7B10 -CE39CDD98D501DB4F7127D1B51B58A4AAB5B5130FB3B273377F7AE494F6578BB -45370868FF64263542D8379B8744DD1D788F0858B599CBABE1DB48F1933C786C -DD0568B85C5789CA9068A9EA9C801AB346F94CBA2EC05B3A9242541AF7ADC502 -95B8F51B7CC659ACB1B0C3D46B45A030D94D181C7119184B5449FD71C7ADB953 -737565A83DE8B0F468E08ECD5AF1A9C11F2C62403751020268F79EEB0427AA02 -E64EC681B2D0F53462A329A802EDCDD9EF65F3954CB6A92B9FDAEEDBEFCDFAFE -FD174C46B841CC31AD035DF36428EAD6F11C4635F035B66E69238DBFD297EE3C -87625049D57F84F5646A50C313DCC2ECE03CACC4D4DFE22736F9F0758C78C33C -1F5130B1D80A22822557563FD1A6A4CF37A6B8C4A729043E77B423F362BBC608 -D22BB8A1AE5ADEC3DE3A3B8709BAA5174A8088BE74A23E8B71D78B9AA40CBA64 -8F62B35D7EE5711520B7A166A0435C6B8C55AF95BDAADF9A3C73D052FDA858FA -BAE6CA00EBA099BE3D34534B5C25377D1BEFE8BE0A70A0A6AE4AE339F8FC8DAE -BEA0581DA27DA791C0FF927BC4DB0BE7D2CFC0212A063DC4849B69BB764D6A04 -57984AF47C12989BA200C101EC9809248CB5F1A0ED85F07F76CB29A2D6602CC6 -D0E1D555B2A7851ED52FFD6FFB26F7763A24D492C14BDD4F35233B8E5A9DCF9B -D15A89629413C8AB70437EE8EC7A70B2EB64D6A055B6D27C46C7C7425578D6EB -891755F0C8B8F05E1D730E7D238557F7CE46CC283152ECF3BFE721D81A49A621 -94FB7C2607803BE877B1EA478C486CAD77AC0A9D386860DCC4D162838A2971A6 -65312084585325D103732865A54E3FDAC0F87BC43B7676E74A5DA5DE8F84C491 -95CCCCF0705E7B729F8920C5B64C2DD543E53E258799729881ACFD5A8F6F3E75 -63229380F433B95B5821B6633D76360B8D7F021C70547CC041ABF71316E51189 -7BBC5498527AC87593F8E5AF9FFBA61922EE096DC9C58FCAE9C100084918E2D6 -1DADD04C5A1DE76CD08173DD1206BD5487C152573E0A49464B9F9DE059F191BA -E67A322EDC77426CAAB128CD92E2E73D90931B5D11C5AE636FF6A15609E314B4 -CD44E7670B667BCD109C4EB9D23AB504031713BF3CFED13F53C5A80EE104FEDF -7A921F680926CC6E242452EC778F11E0C68829F53F22BCFB7D0B56CB37B370E1 -EA27A3CE6946CC8ACD2ECAB8E849E2D72C134BAF6A2CE17537C2C34F5B323751 -CF7E237C9B3D70DC661538E30AE2E6379725CB58CDA03BD38AF3A5A82FE3D8D8 -07FBBA36FE779DE11AEC8620C282FE1094CC96028CA626462C8B0F669AFDA0ED -2ACD9341F1449E97B6C733A25599146AB0A602B97915EE42B62517205EB1699D -F79CC40B4CF7CF1D71AF07D3CB68FB6D0E295EE783BAEB94BF5122D301897FFC -7F64520CE547CEB5362182166213923B92302564793CA30347D4BA68BD651E4C -AE6F66DA99A61B7DAA1FED9B1C32779AB9690AD6C3A67F170F58CE27E764DA10 -77062135BBD47BABB90D5F740A48F1F2369E3D7FFAAB23A5B554A6B6B83460DA -7C6C609364123991D419B49FEDD344A264BD8F09D8D6FAB43137869AE97D63FC -CEA9B1569B1706CD6AD6B7E7D1DB82900A325716F7A5C457A04F4B919C1798D9 -A81AC8FFC7D4DC1AE48E3671A73269C5EDAE5A645C430E273F4256412ABC761A -A67E87E0EEC49EF4380F8478AC2E100A4183DD84D1112C472FD6B7E4A910BBFF -880DA1EA898AF6E8CEC184D9B914C28B8305EFC8A101E55C1953C89983045C36 -D077C5776C3C365E26A920000A74813E3F4743A636133CFD94EB2F96566A7577 -750F9689DB2A77F6474EDB811394BFD4E0C2459A41B7B68131A2F6EB18372697 -339B8418BECD567E7CF7F6B6C2EBFCD23670C2EA9AD381061D1BEC0452DB0321 -89B0AB66CD300E29B33DFC62BAD4CDFBA974B28F21EA167755E6FBE16360612C -5640C74BCD2DE4833AE216053B73E6914C77377F6B2A9BEE25D2E41930970940 -4A94A8DEAFC7D7C6BA66FB10F475DD3D2A91F3B09A560FDE6E04161AA587D1A3 -CE17F73FEBD2D49AD752C136A06B3CBDDAA144981AA7E8203C3AB76995B34582 -361FC34D3C707E9D8917E0C3B5E2D9B7DD16FEA32F42A23D02909502017A157E -6D94CC34A4E8E367C1270AEA425CE44CEEFE419463BEA73047F6DE8C47422EF4 -0067D9667B6B457C7B16248F4D9AF8231B9E1B342322380FFCD0D3A7DE1BC0BD -0D3E8C06202EA5D5079469A1451C7F3AB46DEB1C3C65329A5E1F9BF8A6523288 -BA5D655B35F6CF412D866F182BA2802A14BF1E917FFE1141029B019E1F4420E4 -70A4A1147FCACC028AB14A619D3F3CB7A34C2383FC20D111889DA77F60AC58AC -F6B8CA68BFE8C81641CB473652735398ABF7DB6A58B5781AC2B95835E230BDC1 -64EEF942AAE9A54487A84A1FE082CACED06444B81008BBA78F3B6FFADF7E0A96 -DB4B09893823A691E353F23C48DBD76C5FD3BC53287DB89675646D14B1199B52 -62844A62C9257FBE5A611A2B7DDBCF91776CC36F4326584613D087364922BE5B -BBE4A52B49E42188373EFC9207FCBE11254735D5800C0FE514217BF774F7CC3F -98BA99A20C3F1F5ED1FB9FE91CFCA4C46E119A9029496B0007976A822C230694 -7F3C88511CE739512C2C62D3D5FCECED024F5DC86C3CEC0E81C16BF3DAAA2EA9 -F954541B305F70A7C313ADFE9B158EE4BE7E8982198B823FB11116D08D7F6B28 -EB7617650A5FC206E4BDDF4A150B666F1B53F623B5F0641EA50A82EE0D607326 -C2268E14F70723CB5536690FBA6E9D6DA27D -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR9 -%!PS-AdobeFont-1.0: CMR9 003.002 -%%Title: CMR9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup -/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR9 def -/FontBBox {-39 -250 1036 750 }readonly def -/UniqueID 5000792 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def -/FullName (CMR9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 58 /colon put -dup 69 /E put -dup 72 /H put -dup 73 /I put -dup 84 /T put -dup 86 /V put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 -15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E -ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 -B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 -85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C -DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 -F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D -2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 -B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 -78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 -E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 -41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 -B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 -55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA -700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 -8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A -F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 -FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 -3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 -B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 -AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 -461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC -CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 -CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C -4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F -291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 -D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 -C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 -D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 -9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 -2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 -A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB -2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E -2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 -AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 -9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB -B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 -0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D -9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B -42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 -C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 -623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 -B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 -E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 -CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D -07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 -53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 -EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 -52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 -F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC -D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 -81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D -B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 -B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A -31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF -E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 -846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 -46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E -44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 -A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A -BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 -1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 -D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 -6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A -E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E -24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E -75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D -EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 -C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 -5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 -099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 -7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE -53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 -7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F -7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C -D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 -CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD -866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B -B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 -ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B -B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 -FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B -40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 -D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 -2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 -39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 -1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 -F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 -253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B -14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 -6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E -E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B -9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E -EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 -FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F -289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 -A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 -5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 -5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 -152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE -67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 -BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 -3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 -713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF -2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 -D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 -6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB -A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 -F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 -26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A -C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 -350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 -70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 -F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 -F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 -9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 -DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 -F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D -064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF -1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 -A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E -E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF -01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C -40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C -72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 -24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 -EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 -D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 -83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 -5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 -1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 -AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC -4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 -7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 -65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 -B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 -FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 -4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 -8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 -1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 -10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B -C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 -8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A -C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 -7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F -852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C -3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 -648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD -855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE -1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C -1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 -B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 -D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 -24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C -552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 -6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 -800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 -6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 -E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 -5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 -00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F -E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 -82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 -6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 -128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D -744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 -84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF -AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 -5D239CDECAAD9AE5D95377E0D3F61C2AB7EC99ED28D2B4A7B6004A566B43CECF -7E35419EBC2A47CC76393F4778DA801EA75B4C1FC38062AA77CC4EF0E6CB0C81 -9A797C01F89BB58A957D3DAE33E4256B1F5A7D66C8989C512DA066D6DC771548 -F2DA3B490834E7B4CECD9293A5DD581A3171DB1C41F348377A602A2DDB80C0CD -7B960942967BF3983FCE91203F8C465362CA8E91B3C759943797C24CC83176CE -2D044CC07FCD6CF9DD7FCE413A0B2CF777529685866C7855509CD57489F07108 -D995887AEA9D20B3CDA77BCA95B6F655020E2964AD82AD77382DFF4903C680FB -2C666FA0A35C4C85E87189C909F4B6A0C788077270ED2C2B0D838488F9DAC159 -7864727A4F21FDF43764C2E9B8BA9A8416FCC45247C82FE6FAEBCE13C1E3A49E -269A4690D0AE927362CA09840E5D802CFE2BD403D853D4FF9DB92D17AF722C95 -271E384878E4B6991DB3A90422F7D0D4A260E131BAD83120E618BBA0C7F201C3 -E6822BF981212D1462A8E8C28005291E4D768BAC7378E124713CA18F365A18DF -7FC981026EA47CEE8FFB0EFA469E23050DFF752ED042F0A9F8DD7CBEBE018E1F -056476FC098BE6A639F16CF415B773153D9615BED1251E4EE61363C0F51AD30F -D0099419E94B1EAAB833E4E31084024D0E7C946E83F574F370790FF713D5F12B -0141EE5B103939B88DDEA6D3A49A83886DB260065E423B426EFCAB1270E1C0F3 -A18E54817F7BDD3895DF79E9BE619F51924D7A42202DCE9AB3649C01936660D3 -CB62D4FB61BA328951941B644D69538C3D023168CD87F7D7697CCD5020446B3C -96FF9C99042164C633B9FF63BCB643226DE34650381E96D9477ED1CB332A3DB4 -2F3178303056364CE4F7AC5252F4EF69354E4B5A295D537FA83152FAC3669043 -970D18A18FA4ED1DFCBFD24365A1D19F3C5BBA92F55C6ADAA3B2B49B9C3EE3E0 -6D9F9888A90D060D77FBD0CA42F8B32E1766E71797F3EFD461A0076446786FC2 -92FB5760024DBE28098AAB2192AFF759FF2CC06304B71259AFD701D91D6CF5DC -1E2B1CEDDD6218A5CE4C089430B736FD3AA515B52633F76FC5EEB74856E83283 -84B4089802A732F224E57628117A428111B305CF8B23942378CC6217567E4235 -0C815DD3E183EEF39AED664EF1FB9E9BAD01368259709F26CC0B07673F44DA2E -1E7D41D889A9253E4930B2DFDB4E6C7FF05760B5DDC47CBF651A51CFCF2A2142 -AFCE68CF821605ABD7A734AFAC26C19DB24FCFDC97294C2C4256EA9FFD60532D -8BD22D850B8EB9E34C0EA2AE82D3DB12EC9C4A0C28E33ED8B155CED74370BB57 -70529AD5C6536228FCE80FD44B49B8059ACFE6DABCC6E1669788509B442DD84B -8E4AEC46F111F36491B206ED15DDBBAEEBE2A22F70C2FF03BC70A3463989ED53 -83D95E1F84E26AF5F6F841665A4FD1B019D2905524EDD4D0BC7169E507127649 -1B79153F8DF73FD49590C50730CFB259E34814DC29676637FFFEAA1E8BA1CF11 -32B3D87F43426B64371276F5CB3B235FBD689E5FDC0BDAFBB97E2699B7B1F51B -F6EEF56F77A6A2CCDB482604F556EE59B975BB4890B2029F4CDAF832B0662D9E -DBF8D21C482A04429DCD7338CCDFCC0B6C5359DBA150FC69E166E6A53CFAB7AF -619DF3FFB8CF5ED5C2907252FDC0F4955610BCB009883036F060449A1B19DDD3 -634F5805FED544B69EE9B0AE2BB4EB5C1F2818C30350872D90478F13CAA3A175 -F90BDE98CB15B4BAA4E3B7075CA47ECFE9EC94D5D5D84D40A1B1D6E2F900365B -83A6FBC06EBEF110CAB8928AD9CD5D7B8B80B8DE0773C917B3CAFF1F3287EE5C -4D96208EB19A39BC8F6F080FB260EBAC835F55317E4131800E99BD0B32DA1FC1 -70284FA71225B2BDB0FAB479D9B166D442B6640CE02C62C4CE72A35BFF14900D -564658F0A4ACFB0CFC3F7D2668AC317CC099EEBD1FA0531017D74B47E173553F -7727CAB5EA16F2831470D5B7A0906CD92658FEFE5A0ADC08552CA630C66C560F -F935F7987487ECF74CFA1CC3A21E456DB8A5216E4DB5EC85E5830B36D5468803 -6EE18D07609C02ED2E423C33B97B28C87C6040F4E6BEE05796BAC74FA8C066B5 -436D54BDB3E493F59FC8885EAD2CAB26E7035783057669FA05E97732D5F6BE7F -CCC5B7F4B697EC12999BBAB002791AEE65600A3C01C8FEFB74E98FCA5E9E36B2 -E49E4ABDB8B129EF6C93EE410E968D5EE1E5EC84A3F32305BAD602DDF9437D60 -03214A0D3351ECD6F4ACF057AFECCA827F424DE94980CC5FD17DBCAE3222218C -F679FCB30460FA4E858958555F5218EBA0BE32451BE4CBA35F7C9D751B6BF707 -E972BD5CF46386D697F7CBDAC0B2071A44CAF624CFAB5C7531FF7D73198BC5AE -D82A701376DCB4274936BDBC3BD19ED73BA77501C8242B0046C5312A303E2198 -96D29620BF292E814B9ED83A87FAD8959F0417939AFE2F8845FE0BA0A9989562 -B5B615D6F36D91BACA10C9F45D7C3910A3CECD86D600B6DF886DC3CF5B39AF59 -E36FE4E410392C9CDAA87F03FCD11FB6223C0FEE6D662B04536E8AD65C1254E3 -5A19BAD8513454F32331E759CBC124FE9E1008266412FEE1648B1160A6314F9B -47F7B91FFFF8CD31456565F6AFB681375D5FA0AC5790FCF3A5755BB958B651C3 -11A83CBCB8E2FC5BC9D8A59BDD06541BDAB1BE76B3FD97B4A7197E0FFB1B640E -D721F2FC9337AC26BBB0E45C46AFAA314B0E25DFF9AAA29F60CB6FCC2E67D0E1 -4C1CF35FCFCE344FB20D440FAC441FF8B26151B2917D2BEE72D46EE5482B256B -D5328509147B8FBF25EE397B651B556BCA4DA6F2E8560222A97B2EEB8DC3AB2D -1241467D6F903485AE77B72EA9F5532BA0033A14003DF2D73C6A10CED11F7E57 -DE14C95389CC9E461E1FA37CED4B65C99393D91D828D316BB3DD8F1B6C8C56EA -ECF797BD0D6F44120F3575AD8CF7D678D9916169DA9F1202F43282CFA34E0120 -A62C24A4965CF785CB7B6BB7958771662ACB1803A6969FF2287177623FDC4A64 -6DBBDB9D53C7E7BC530A6352C2359C1012CE330874226D75263A29D34EF7C6E9 -E56C720B4A9F3035A3498F403F122D2AF80B3537637C612EA41BCDD5C9DB5959 -77208870D8643672744EA706A62E0F53322EEE450FD834A7B5BB9EE2028F2B58 -4449AD9D3BB7D518DD0E16CC127046046DAC7C90915FFE332D68EC795A00E892 -9A4D829EEF2783476533D0ABE9FC00E92273701360D92E2D8DCF73407923ED50 -F09C1ECFCB5167E4FDB351F21C992EEDBB3F759D7893E67EE3F0B0AD27C22503 -8D154E4656F94CC6AFC011DB6A3DDD35F70132701BF491690BCFC0744A38275F -9071284BB8B2ACC2214FCC5F1F47B0E23D8A3A14BF9D769174192002FED503CE -76D41BD8DD4F4848538809124ACB478D62FC835E7B0F9F013CD7AA3726FFD602 -A277E2E3F14A3965A17A5D4D33244CE8CD73DEF41CEC508A5C2D495F4D59AFFE -3DD3B8F03E08648EFBB86C2FFF1CA81E59FBB95C742A6186D36BD2542942AA0B -F0AA77D6961D2FBE49EB4D96FDF73B2AD20E47067524ACF68ACD0FB98E735866 -6B6D95BEDCF14C80D2EAEEA5EAC08F610CDAF5792893B4528161E2C9BA02A14A -45BA7318088C962D8F83A096E3EDCE9DE8291CD606E8F0ACF4E735A7063E9D19 -5B968471FDA0C2F9665EAA77FDD0DB0972C27EB79C70648B9ABEB17C78F5BEA2 -B340DE91393D94C53BE1F14CE900F048915D4680B890963A23BB5C800E337F57 -377759DE9377556429120243752064DE70F565A3B8D8D74CEB8923BFEE5525BE -102F05442F7C2F4D45A46784BE9BDFD1AA3EDA2B7E46572872BA4CC4501D0F46 -A182F9775F1EE2991CBFE290CD5E39A79895D7ED557E0E23A70117DC23D47D04 -23CA9D1601B759952FF910C8E140F349F4D2807339BA0658E77DC1C67AD9C156 -316940293F225C9B5B62314E1C83F92BFF8AEB45A9C04441BEB0849B6CBB6066 -65C0F6E70494C86B2213B82AF766EFD17E62C5361EB6588177E291D0F8C62A16 -8377836C8A64B5ED8007EDA143A81830134AE19DE0493B53305FB68D254CEA16 -E4AC98C13FE473C58C8081F9E507675A7194EF82C2B7961FC49DBA6673C7EF54 -F9507FC208A3A0B9FF4E1E0A3B7106463659F1EA6D536CE2454CD97A16696280 -0DDAAED71FF66B64A7EF9D4A06D0606D153F00BAC17DF7453972AF36A9A548C2 -DCCD06DF7B30520C997EDE83AEF0B3E33AAB5F5A1D8CFC196A5233B33B4AA8F5 -69EB4D9D93E350EACA5E2BF58DB75E1CAD5D234ACDADBF12DB0FEA6B9F4F074B -D464EE9E4610F716DB761639569C1B114D89326A96A5EAE5C035240FF56FBE98 -C50ABC3B51D0B6F2A68A12A16C9EE9BBA04A2B4B7DFCAAD955DAEF48CA5210E7 -C415A7C3C8E07554E26120622D85B96084B1BD28EE71B1ADFA50385DA2BBF511 -469764A3C801675F38981960A27798757B286C745123ED30E5FE80B69F34BFAB -C75A3D92A552821A2DE47F53C5A0863CB8F60CE12D3F85136D4F0396548B225D -78C3112D8EC2F884DDECAD5C8E9DEBB7E01E55078B3B2F4D046A5CBEF678C10E -7D430D1F164A19992A554540AFD5C8917D5F853A531B89D00506EEBC5385733B -C3311FB5309B8C1FF683A4C639E2E599FD1BB1335FB99E71911D1E25B342CC56 -946BE1A45FC5D4A0545327F52527A53AF90C853DEEE4FDBABF7AA8A5E39615CF -ABD1CE72F60173AA6E1BF7B3BA5165616442AEF6F839B0511A3C6C50920574AE -0D92E1E3D702F4256F73CC1E4BCEAFA5914B4A8DCEE327CE9C6D45B1DFBC252D -C54040FDEEA9364D6822A6798EEEAD1A5F469B9877082D321C9F6BE9B8D20042 -E267A129D30ADC64A9BC0673BE4A23570A3EA396F07DC54E4BA7B3E84D555171 -33D499CA5CDA191E9A0A094995160BD2D2B59D6071F00CC7CBA5B2BEEBC284CB -D29744E360D8F9A41A1E0476BF25C5DDDAA1BF5EB9095062688B73EB66222C0F -44AA7BAD1F26B3FD30B9981FDCFB6549493E7B494BB0BBD7826C23095FEB87A0 -0A74D49A9688C29DAB21D32C3CEFCF46A38215F6CCB23CEA21AA8CF599C651E2 -7AF4B67C3F17B052BBC06AA6038111E4AA0765B4464051A74EEA4DB70BF14B40 -FCA95228909BB7FE9F90B5A5D4CA465C5C9924A7F06BC5BC43486464DF0B1BA1 -D52A4F390BDA3CF2F7898E9DB58CB98A9B151ED5387CE5848EC497C61D072EC4 -8D5FA825E7480C063A17420F0414A2F666F2A868564439E000DE89DA8501C759 -63183AE8E7577A6C163CF145A0243349E61B96D1A6121361EDE749D9FA2D8270 -72BDA70435FE0BEDB2D5F290842B8E7BD56B4B91AFF3F4853B9DBDAF3F1B5FB8 -75DD8A2464C82B46C3FBDCFF3A54460275BBBAFED4C163CAF70044879A3068D2 -6A272EE3E379ED00D7481AEC7571FA1AAADB1ABE6F46042F5CF2BB8D9E58FA3C -4E5943B0EE8AAC87913AC1A9531F1BBE3A3DDC8B156D61C3681C014DF910B806 -8921AD41FDCBB90E1B86B8450339B0214C6A0B9457280FF745F2B7DB1BE176BD -67E4FBA23C53ACF8D95276968CF1F106119C0FFFE7274BB2F20E06BDE3C04B77 -6FAD50A4F9AA371D0993F72BAE8794CADE9606D5F417D2DC807B6AA2AA2B10E7 -E25AB7BA3587EDAAE4069F8450590280024D2B81D239ECAC5456965DB9F3A939 -733C9E978F1456F0FDC64D886FAEE31E9F62964840A96972A1387600AADB271D -30B93615DCD8B639F81A687C0CA41254439A567CC65CC4B0B774A225FD784704 -7BAA107DA3E7C20DFF37B99B0F5721D793487589526BC08905CFDB85B62CDE82 -2FEA6A0F6E948DF73EEF8FA0F6F29E789F66A1E0566020543278540AF1B4361B -A961865D1022965B49E438C3F9BC685323A2A871E9B7AFDD8A2EB3AB1DFD5BE6 -9FECCF68FDDB761D7B6689122219105C1D8E1D5BC94024E964FE1176C6ABA0DA -48E74C7015FC77B449324B9878D319D1F1D21F9F02BC95A88E02EA5667B8E830 -0602469858B496505CD9296F388A71517385EA7B452B2C6E93BEF2BECF10C8E1 -48B3FC7CEE4A9F477C15780EE71AF93FAB17BF5BD6CDCE2E2DA8780A8409DD9A -D7BAFC72237AC873661A7042EE2B039E92D9B44A38260B071A46A0999BF1041A -4DCB3C05055F52A57FC7A8BE53DE835B76BB8A6EE7830E549EFC04DE2F3EE026 -38701AD0E574275655153583405C3C1020442D267B083B59AA35DCBAAA3A0E4E -7E6DE7C103BF73224BDFAE6036A0574151E6431A35DA4ADC35316EAE06E000D3 -91FA7F8F21FE72B6EFBF41BEE012D23C634514A5FF1CD272A0EF4B9B647734E1 -AF50C61348A99C9B94C12A7DA8E711E443025CF4D21ADA5B74696B9766253DEA -96BC70B99CDAA427566E3CEDDA1AF905E627D5480B08B1B48EDFACE359ECF4E4 -261B86B2B05172F088135E7D13731E9D5455B8FA0FB97DF030951801D6A7218D -7D7AA38715DD62430FFF595826EA5985360BEDC65F0CDCEB890F0CCA08193607 -166078E612F83F7AC14156E825C62089D3EFAD3B5A4179D998BF8B7C2C70B1F0 -33BF461B1A4207471A8BE6A12580BC8223B359DA5A761FA4C88064E17D22DC59 -547D891DAD7315E16B7AE84CD7CDB1F4D9B3889752C5E68B81AC0EB288A088C6 -B17ABBDF5E19BA911AE09551737AB8D3FF959C1E15EE3A7C0CB48DE2B50F6CE0 -7549957D9E2F3888C29B62E336EFB8F3A5652A1C9F2DC1679C407793C4A863AC -5F99AC9BD056C7EB3AD743B511D89F8C6558622D67261F5DE0C52CF6C2F36977 -AA2A9A6DFD45A90F001C377EA4E38724869190A4F01DCE1D7A890D058395B528 -1732B4F73F734176F9AC5DB5C520D99D72235125E9E08FCA56B61C2C5984D632 -294DB55B28E48D427288486F2EDE088E767AAC46C12F3C10EC87B488B512B7C5 -4348F00978E626178F568FD1F5436AEE4762FDEFA11402D0906218F50F3DA6AA -A04844E7CA384F311F23DCF95D310D7F9B9D38EDEF8AEA6363C0D51EA6D0F29A -2186AA3AE105A891C328861D191DBCC47B4C4DB1A2540E890B4316F7441F738E -FC091ADEEABB3343E4E4ED63596865D81044094DE5FC00354A41B5980B0C361F -20D2256ACA15780E1C2EFF4C2491007F4EC6D8325095956A8CFD231D8D1AC6A8 -BB1A614497B78039D2C3956923C97B82864C40988463F8B94B8C649EB7CB5CC3 -93072CABFC642D697B156199CCC534B0B97BDDC44772F16A4385A391A65E5776 -C43BBD7CD659713B990C21F89B76BFF6594F466B21A713B32EB922655AFDF1F3 -A88ED6A0755FE59B23E305DACC3D95855DFD1F4205656366D6BB17E11CA018C8 -547D9BDE88DB0D68CD1698894EE41C3B8311F5CED298CDEF4D83D6E1926FD245 -1341681972317B536B5A0453E73101AA0D7A911CFAE6CE64DFF39BD6E9E30578 -A1FCD948544A44452F91E2199548F830E022AE220CDDF6A67CC6A3969E0D4D25 -1655E1799CD1802F45D3D1FBC5FDBA201F4D91146F8FE690BEA0DF724D52FC99 -994BA6E31A96D8EF6E2628A0F965972C3348E285D90576BA196877343635B41E -A00F67F3AE300F1FD2958663CF6E5BAD2F8432332BED21E07E5FB76CB67E7885 -157153DA37CC792A807A2EE1C3560D29BA8E48F273DA2872BF3DFC5C13AEFD96 -36BCD22374DA92E31E37830BE982529E468CFA0E6E40A412DC4D3427C0726D26 -2A1CE96C5442CB301B65672FB8DA07CA7A0D03B0EF1D6392CBD797A909CAE239 -B9C9C961B10893DB86C1F882B7FBC0A1788B0A8CEEFFAD0C5D2740BC69B07B1D -262497AE2F1A8461E337FE59B03B621EADF70E9C09EB9D3F4FE0C19DB056E6F8 -3E776F3ACCDC906058AFEFD022EF62D6C0C9BD626F61184E7C5DAEDFF88BB984 -219128F32AF8EDA2D4C286D1EAEA9947083C5F84FFFDF1698FD0A140C5FD35B2 -C153A7A44135BF077C180328684AA8B0074E6BC727000BA9A6F55D127C5A61B2 -786AC1F6EFCEFD7E544F43B61FC067D162576AA75F7EAFDC11A71237AA5C2749 -FB42DBF094BF1A24EFA8E4D5C324378AA86CDEE4F0867790CC8437A91E4DBAA2 -C67B8E50996E2FA20F2C807918C6D6AC4FB3406F52FB10D3C33466A786C1331F -E6FD17D02B2161E8AA4F49144D020EA450C1151755507FE5E4A207C6314DE1DA -73F3E8EE316A9BCD56BC484826A6E3731BA6BCC8C90196EFE9E93D562F0C216D -6BEE0DFD78492921DF217A7B8170493E06143923D732F75CC42576D2BFEDDA04 -1AB26BC3E37337479E122353FD6C11DDF4CC88CFB52D07FC73071E0016999727 -F77BDAB173E0EEBB69FFBD3F3A5B28FAA49B0D29211B58B338BB439513BA611C -84AE2700585AEC8E79DD42BBAAA2453DB4E349353950189BA77E9FB98B6FC38F -D3E73834D346EF768820F034CAB3B791BC5CA82C2D33D17CB0C4E88274FE29EC -572908CBB2B819E1971128645A9373A0D8CE8747D84D40D60F69DC0E8BA13FBE -76913402FA2FAE04DB7985A2C99165B2F431DC15DA0D34664471FB1B697D46C9 -ED5D42AF27EBBEEAD58583299608464236FB81A60B99E0431B71FF7646BB3CE8 -D877C62AB73EEC60B77351E8DAEBE0FB978B46E7396103E9729453E8DEE72E68 -85E205D26FDC8E8D6F834C478AFC517F4EA94EE8FCEC998B391277B30ED892FE -8D79E45727AD340282BFBF4235C5C9FB7BA254BD24EF7EC7238ED953E03C27F8 -1B71F2C6911FDFDB6CD504B2E92F7755CA74722679ECE1212823C09FB19E3531 -333FC8A708D326DD49804CAA48C448D1D4D974A8C050FD05E5CCDA19EBC30CC0 -AFA0B88AC7DF8198E35A0D74993713AB2F5F037B6236622622D86C1079CCF80A -8FE8CAB525769A921BD1C6600A3DE4BE8576702CF3E2CC7AF51E2A3A7E050236 -9BC648D2F843223DA0D2DB037A2CAE9CB06ADCC85A51C7BBF268D7BE707B6BB0 -B90E831B731278E0594C5C14FF15704FEA9ADCDDCD4A989A0C39D82B8F40806D -90BC8619E0ADDFCE793292A5356F624308C95E4F557BA45AFC035F42FED5F04E -EF3AC54B87E360CE0FA0F60BD92CBBFCD468867DD42EBA220203999279564632 -AD5BF1C08DA86C099F5DB5DB9E031DD2E546A1EAC7BC97E5E88533F01544066B -E088EDAEAE072A5D317116C3E55EFB7612719A6706AA71999D4061945984FC64 -A560E657E5AA5FDE7187EA16953E198591AC15D67B7D3D59EA35DFABE898981B -64B3BAE0CEE31925CF6B0C303E94D98DF94A8784D472BD8D065D83CC41468CA5 -9AB2276F462F780BAB521DD0014BA3DE5A82C0EC50201858F76B04C8D4371F9A -EF45B0CD7AAE9E94ECC8E4F3DA892A17562C79ACA97E98859F941082E4E1B976 -F76A494D3690E1C1E9C20AD705FA119348B066B5CE1CF5A249602AB3F380A2D9 -E8323C14BB6375C6F6E26D89B365012AB759ED11483EDF9B5999FD867B3C913C -6C482818B91694CCEDF61DD190BD9B62CAC3AB7A8D4463D85686C6ECD5BC07AE -AC13A42D6642876E2586A25D61E4B1C8FC0C8814B15FE19DA06A8809147B5810 -833194A76611355D1CC1172B63CDA43EF2A083699D73EBC356B69238C2453C40 -1A553D752A265A31D2BE724668132716A403C5BAC8C806C8ADCD285D92BDF679 -7EE0136BA3CB0AC50581CDF674D7CDB4261C4237876DB78FD3AFBF70E0294256 -F815EAAF85AECBAC5705170FDA60E36C7E613C9E63EC80E6E210AA7D5416A6E9 -39EDF1E54423C6DFE793C16F9C0CFA563159A2A20783AD48F1482F47637FE25A -319165D066C62FD852BE13FEAEE0D804FFF36794F4473D9254A75369C07B0CA3 -AF4F13C11E5DDB2C79E30C415A2E5B86BC888EE26AC3D16521F4E41A5B84CEF3 -A248A75EAA7CBB431008F732F212F2C6D77445C4C067678DEC4433B31145C20A -53FB885026A0CA0AC8CA4751B4A8731E39205F9EA6A7D08241196476739564C0 -9368C4CF443AE2EA48A71B462697920BA6FB380C32ED4F5EFB7864B89534648F -112DE3DD40B88C5BF816C338002F627A681B286E576F4168439D49D0ED88FE16 -955C6AB7ABB7CF985D5BC5EBB432E5D4CA25A66073C53BF91B03287529B1326F -FAFDBE548926563F392BEA729F31E65AE2487F8A476095B72A5044175DE35387 -2CA57DA0CBE2CD63F7AC4EFA6F98081336C24F89BE9940908B1F6B1AAF5E162C -0985EEAF6A2BE772172CDE530E83C2B59EBE5464A6AC1B41ACD17857F53BBE49 -A423293003C16EE19F30B99D116357AF029C1FF748242CAA8A21F5F2DD8CA94E -E901ED3DF42C4D0651B240638EDCD0AB8189227AA170DD5A7FF685B9C85C6BFA -1B7F484E204A5B151F3414265D0C5E6B48E96E3A6FF2C43B1F8ED6F7BC82F656 -7AF6B474498DA2D389410B9F4983A1097B1EABD1BB5067899DB67E61D0E7DFFE -A6F4EC9A7B20FEFBFCD896263C76250805FCC6C078E3BF0AA8638D48575E0300 -590D8132CCA0AF6111FE2B2D57F96D4D36A92DB55ECE23E5F6883D413C6229EB -A0FB25382549C2B6926D74F7FF9D53AAD8EA9FAF75883EC6DA29287F931FF2B2 -BA12B5C24A882474B5F66E8CA66E4C7474B8072550D60E408A3D2021E5ADEDA7 -E214C34CC5AFFFC02229677981A2E2B2FA9C8BB2B1D0D9BE7E99829F17C6EC96 -D798A9E2FE20608963D369DA60BE1BE0E87F95CBE766DE18EE0A93D19A829BB5 -F1586DCE7AE31A6F7A1F92EBE214DD351A8C443A547B3B67C8733FA5CE337A6D -1B47A99318E013E1ED7B3F3AEA5D79F9E261F8D4529D93F25F2935DF0FA5D30C -0B243699E93EEA3174D2B30A5FC364345218621D1897D2548CFCDE59864326A6 -5D94C6D0652C5B72121F69ACCC80D90C0E8ABEA97E37F8EC60E58BF0E6606BC8 -90E547BF3D1E5F02FA70759A2970A5C9EC187293176E41C955A8775E050D49C5 -9DD1D0ED73D23975CAA1898A2C66414B0CD89DE2550FE4FCCDB5A7C6477D9566 -2F9B3CD48FB28C81934421DB2EC0028CCC7C402B6825EB6221CE23173748CB5E -7A84BD0B580838144EA26B46BE90D73E4B3D8B78D5CA180B25B525957377480E -9129C05515CF65817532EE7343A78A120C49C45172261F4711C0FC0338ADA281 -15469B936B41014ADEF72EC990E23EE0730EB85A6D85619A7C923FA3350FCD37 -6DACE732D9BC5467DC8330A1A5D2F7060ABB7E73A928FC75113866068FF95FD8 -6D6799FDD774578C6CD828A3ED6DD18A4932284DFB898FB21671F59EBC7D525A -ABFBBCA0DAC780777B6BA35BDB1C0B6964CEBA2BD7A98EFC832238B7485D0189 -BD2013396646CA52418D671642D576C9E2F228F32CA1E58A2A089557D9EC314C -C2F78469A52C072BFC65B40901748D35420B6517A73A255A2D098AA025626C66 -3598F533BACC6D27A18A9E824DB5BF6578B44159A32948B97C96F6AF09691ACA -E3658DA9CDFD89D78DE9B5E09CCCFE41628E39B75235150689CDAC6D32FAC958 -CA455631C8A34E21CF3AEA2CC668F0250DAD25BD3012478CA71F0BCD6468C54A -F1C896E4C148C513057A2B10D31D396D0E5A62F656C213EA0B58BAC39AD1B63D -F717162909F4753751875B46004663F07F906246912B923334DE536383C5FAC8 -A10A38094CC6EBEDEA4D175727995B36B3D4C1AAAB07A9532BAF0E0BFB349D6F -93687D2F7BBAE79737755DFC40F3C87FB3C0060DE09F138D26DE3B7F9C1429AF -F5626A2D9C2E6F461B58DCB7F3D59C5821B75D6686EF4690472ECCEB3A70D2F2 -DFBF9089912205163607ADA8E107C4C29E2A097B5B5D8438A81051D57F45AEDA -9A1CA666B7CFC8535A9F132DE2FD99296583ECED832CEA3D351E6FC987B594E6 -546876E63CEAF6928FC11000CDFA34CCC7D8BDFA3D285E3E1F5BB6452EF08055 -5BD95E479ADEECF421D5192BD864AFEA280085681DE3A36C7292F9A6E78210DB -0A89B12CF873B769ACE73EE3D4CB691580896E1851649F7F4902E0FBDF7C4867 -35384636DA7A3207D00F902C466BF6E89CFFC66C16985E2F831A75663ABA9C8B -D7F923B03D969D102BBE89EC9F7392CA28D009719D96B3F0B94B9B0D76BED15D -5E3C8201B7F0E03FAB23ECD685BFC43A50EDD32317B952108DE60B7F61E3AD09 -AA0AF1EA3183D2D872F1E2F353AEFF4883D1AD9D0681531456BA95604147BBE0 -878B38C8930D3D524FDDCD0C7FC40BF3CE0A591C61AACB1529733ACB0B8E0BE6 -380F5CC1D2E1AA682926115CD76E348409587B4F24D081BEB230B6A364ED765D -D2193E2143B1883BE67FA6BCFC91416FDF79BF230CE19697C28E5661E368C6BB -A8EFFB5CD3805E5C0DA787089B5EC4DC23DCE672B0B3E939CF3EC6FECB2CE15A -C496A16591CC96A5AA55EB8035DB4886ECFC0E281D184431B5C3B8B64A985BE3 -3A783BCE9D824630160735A6A13A68FB985E974F19163C5B3F6264E110918970 -A6B02F961AB1453AE10A5FC248F2E356EFCC247A8AC5CAC7EE0DA8C969710E26 -DFA6B7D4BE798017FBAF1D94A49ABBDD04F823C83AB1ADF6446D144A0ADC1CB0 -6B95C3B23E9486492A7FD96FC1E2C63D44BC3B527B0559358FCEF56D0496197D -135F69F113C41264FDBED2BC94E2DEE33B60C71BC2DA2F94C2F3F8F2357D5706 -02E6E0353219A68ACEEC6D78435F45C403AA3F0E0DC2E635A15EAA944BE84D4B -83F1B1777BD6684E782670A3F4C65ED63C7CC8F7EBB3CE092AA21D4F1E91AF1D -4D8037D83316A5FA87E3069FED76C6DC9BF11F5D53E32CE4DDBE458B6956E502 -63CE1BAB78E04107BFEECE499A6982419C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMBX9 -%!PS-AdobeFont-1.0: CMBX9 003.002 -%%Title: CMBX9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMBX9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMBX9 known{/CMBX9 findfont dup/UniqueID known{dup -/UniqueID get 5000767 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMBX9 def -/FontBBox {-58 -250 1195 750 }readonly def -/UniqueID 5000767 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX9.) readonly def -/FullName (CMBX9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 114 /r put -dup 115 /s put -dup 116 /t put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2D4347EE3E5AFBE73BA -31023D79A7299D8F662042A8D8B6A7B4E86F48AE98EF848E83FFDE68E17A0832 -A181C126D15EC79861796F03957F5A51462C817DF752097718413D012D19C9D4 -423A5EAE1EFD4EA7A9651BAE6E45CC194BDCD03FF43F255E58EB5E50CA26BB98 -B8B11E21DBFF2BBB04D039E63C453EEDFCD9378F5E7AAE3A93E8691DED5865B2 -B78F540F8AA3224BE372B18904651D057608DE4DD729FAC398A80CB904410451 -90D66C44E943517A8F4969673B985D9D244FFC743E0AEE309EFD224F7029D37A -F6EDD96E2F88C9D071FF16EDF055955D31DEF10808B343E948BB4F6393D275D0 -44C4DABB75332DD716E8127283E8D70511F8EAF4D1A5F72E2F8503A2F964E5F9 -39304CC17ACCF531A8C0B6A9D58DBA6F24A4ECA62EECC939E8111E4BF79BDF77 -D656F9998F1EFD2ECE3E61CA526106662273D5AD3E74D08E9D4453569B359C2B -E2455F2136B4DB54ADDC3C0256EB7A11E1615AB9323ECCBB6EB48ACD469A2020 -A873E88B28AEAACAA01826C1C18120774FD5324DF9AD36FC256706DB24FEDF34 -0FCDF04B12ADB66876EC7AEC183A1EA8BABD38BADDCD0EBDE11A5A1BEADD0F7B -83585C3BA141A8B296872F712EC42C625DBEE9EBD2C414E57CC1378CAEFD00E8 -DB4B84F51967F2968329B8503C4B37A56F6136DA89167FE3AAA93257140FE94D -D96C7F85C6F82AE1596511ADFEFDEBC1B41B0395E66D2074B39B5565AD4687FC -89BB4BAFF0F7568D9EAF069CCBA2DFF61C59E2CB2F4274459792C5D097FDE6DE -0E40AAD8DD8F64C28D04EE50AB79EA7D3420CE42D39FA9080E9E046A4F22B5AE -AAA17FE750BFAF7BFF097E4A6E9362412C55E25767C311832C1C0C76005C733F -E046FCFD4CF49C6181C24BD299E90F20A0A0ADC868C11A8AB7F610186D0483A1 -B3BC4FAFFFE12FD746777209B4DCEF0E4ED15D90F19BF2FB2B56231FFDE5D40B -146E3FAEDDBAB365D88CED98629B9855AD6E57FB01BB82659BD320D248E5F7D7 -B584DD43E1F5DD2C91945DDB772E5A62AEB7080AF36A83D2BA8533E7E6FD287A -924F616F8090E9FFAA607A21F38718D668FBD6BA3434500BD01EDCEC00354F68 -E1D0E9A921DACFB83FB61C1A5C27D027CAB348C4B7E2781013B68CC5A2BC8703 -2809A49A0C2E9E004D56844EFAB4A8763B103CF7CFF980C9CF7F6BE28814CBDC -348E2486D9379DFFCC0E9329854D518B49B98F582972B0D1D18A3319EC00DDF2 -F64C2CD2DCDBA287B279F98D16ABD1D140246E8B66C759571981FE7402F14C94 -18394A4C426AEE4B0688D86D08B408763DA3537E5BA0D6A6796C316FDB0193E6 -77C6F257BEDDE17F2CA5E661F434964BAC9834BFF36F563637872FCDDE94CF22 -F076D1C2DF6357D8A26D305D52C9086CE36F49CD92ADFB4306705A0887407C9D -59B6BFDB82379111C9E33692BA9E2ED9782CE4334C6125933A2F210684642DF5 -3B129F955BADA1E86D6B80CE299FA0D1C0AED1AD61686AF1052A188881E2125C -98083BA8255B92B9CA0B48EB57F936790DEFA6E6947C0FF4083FEC296FF3034D -AD657C64F2675EED2B4EED1E88F0B1338762CB4C64C79F111CDE9777A000F65A -F9979943ED7C445815BB59052B91F0FEF7219E3DF27E1D5155B9C42B7BBB06EB -1815997FC3471CF963A15B1C5E4653C84236CC5BF55A31B94E394C635B95D847 -69E8134F4FFEAE836CD6AE71F58F48AA2F95BDB1E2CB89DEE590EFF3AB7097DF -AC185303E647628F5D87E0D82E6685DB467A0F8B7D3AB2B7F3F11BCC99BD48A6 -FA5D4D75698454CB74451B486CDA6B65547C0CBAA563EC3574364540AE7B11B8 -F9E86BFA655CDE88DE2E7D41851FD208649E9C011E04C78ED9209FD56E2447BC -E1AAA0A3D36F6406C60F6B19347CCB7D56A84D961E17E361F92C5542109D9BFC -FEA2FF9775230EABE3333EB25A40E29016E9A8255713AC8336B8F7DEB89FEFEF -4006DAAEA26C6BA1EF494AB99C2BC960D9E07981BABE909B5C121F2CAD48C938 -A36129D10D38AE8F5C64879F61138FA9F7479341F5C5DE86376B65A642B9622B -E58DBBFAFE07EEE1D11DE9DC34309572868586CD92D39FADB711883AA85210E5 -C82842EF225E55370FE0AC600A170687C60C8091B0625A1C5589186F3C7C1218 -B15B5CC3A5CDBA7085338D963D929A18A651EC7CC39B8500899DE9220A1BA363 -78698E414607C34E06E29AC5BCBAB98A70DC2BDE0FDDCCE22D4717EDA7D95397 -33420EDEC2F1D6E7072FEA85945378A6BE9C7F68DB4FDA6B5BBC0032B3C02519 -F4168C804B6A101AA60EF4FC40C2428AFEEF5A80F9B76D561C8A21B3633E13C5 -215A14D54B8A1E6143A9CA0B5794D20DF97C35B3C9E9A4673AC2123E7DD8E216 -044269B1D6AEEA46757F8D9AC5C8A92BDC1EF22EE0575C80CA7895722CDD2BA6 -F9A208E6BEE5319E63B3B3CA197D9739A4498AAAC9C7484D61418ED2BEBF63A7 -F5283A075D1DFD4B2702E1551A0D1A90DBBBEFB6A55B5F29C869763A856C4E61 -EEB3C8E14E3376B7D01A4E265C6C8056ED23931DCF669A0EC9427F74A147AD8E -82E172FA6C13DB1281651BF3D14163D963EFC7384BFC4B3B9274274DCEF647FD -D6DF0CC146BE8AA660D709526B394CE253369281FDB45AE071319E8FAE4EDF10 -2867A431E22779EE40D885E95AFBF62916D9900016805D004C0375D29130CA14 -F3E466AF350D1A5D181816EE1C4BC75DC09E4195DADA5AB09CE9EF2C4D5F7CEC -6C16BB6EC791E2870DB46B6B06DF421E7A2781D82A07D92316B553D068A1DF5A -8B19041F96ED637B932DE184F8B856FE1947F5FC8AE505F0E3953B325E0FD6FA -825EAD072AF06E258BD35607A1F082DFBC2BA5251DEDCAF68B4D03086CCF84BC -DF70BB8D2EEEE3E0EAEACC8440AA130273E5C7E78A15EEF66A9A1E0D5E022188 -0AFA50FA55C6C461C743E1845FED77378D639839F548D6827CF371AD3DFCE592 -B7F6E29FFEB6CB92B33E24E34875A5A92C08806F67E18AEAD86447A977890AE2 -30A452F33B609DE5B792D9CABF39A086C0936AECC081CBBC810B3EE1D35F9717 -260E76132661E3A8170759084AFAB04A6E773E9714A6D486E0BF46F336A7CDB5 -C325E28E747295CB0E8FFB289F4907BAEC213D4D0B495A246A3DC359B995E9C0 -C5322D750E13159B7242E4C4DD27932AAA130BC6B0400428B5E6F928CB8F7658 -EF02F7522779CDBB67722E09774C419489192FDAD3DF272C95BD9BD64DDF0BDE -999FC72607F52805DCCA5EC17150EEE38B866E3D5199E5A6CC262785EEB11D51 -80E79545DA191071487EF70C7FAC0CA345955F797912C1268924DD79D0FCA3BA -460F43E74975C04296E34423BD366A4EF7EE9463ECEF08F7E7BC8BEC570F812B -066383C2EF5375FB1504537D902818D63B30385421FF81AD92A1C153852B1427 -A39685A76DD636DC4ADCC53F2A78F795F48EFB23807E5751023FE324CB401281 -60F8A8DA779A245DBC26E73B61A1450F25AC276E1B5240578E85E1CDF5A784F7 -D4F5BAFA76F70300972E4B130C685189C4010B9035A5CBF0562EB3B387FD89F5 -C53A25D3E883B506E0B477389DA5CFA82CB157D8C30F287678B0F9A17F5A8704 -ACB5DC57D7CAD21A4EBA49248F277F929D3E49B17463EA5F31A4FC11B0836E34 -3A5FDDC6B9A45113590F114B99566D18C21464E7FC1D9AAA9B1133E5E8E2D14B -8E143E1E16595C42376694A83684E3B217A17F158DE89549ECCCB443701B520B -E20B972CA5EC6405C479C5054663D48A22D105AC98AF094340B5964D0C26D9CE -241D2706D3444C1405B2C9F7C912CDFC87EE8FBA01C0020D1AED1A6205A8A45F -8504B42431DB5409BA8AC472F2FCB4CE698F6DA92C4C8BF1293C2C998B771540 -3D933EB5E976B7D2252DAE9584E5C6864B29C3048EE159BCB7638CA956E07F81 -F76391380AAD2F1DC2DC201BAC657A1BC93F5569A5F612A4EB6B01F136F41B87 -E20D4DD6ABD7ACF1275FD80D9BBB87A45572979BDFEF59212F1F6D9423FEC976 -1228499D626A328569B4BA2755B1ACD20796398AEEC5F3C61122D52124996535 -D0813227F549FCF59C6182D6514A70F9E38565C8C98D5F797318FB531B5DA58E -EC60235B6F1D97CA5D495CF689C3F9B3260998ADA1204AC00135C7C72700DB00 -7C06798A46E897875BE619508DFA2201FDCF689E51C3D85342247B059C0DDA14 -766A31E3E25E792F090DF3EA0C45C3F64AFB918BDFF92FF0ADA2F71866CA190B -87B2FF90C872284652619F084E2259F044E2980101A62004AE9F4BBF675C5279 -BA3437ADDF2D552A033D2301A669EE8BBC840C0028275D077B8E9977D447B396 -F1D82608E030FA43511BA01C345078986B8C35B6C6990D018C2DD2CBC7774450 -D8482DBB262BB816E6A26A1FEB084FC2027C62D17790C80C65A9183F23BB2458 -34FDC5D566C1B667EE801D0521BBA520A15C0C923EDAD84AD6A83DB23806711B -0AC2631C15EB1D33C26F8D65852EC37A3479152557366929A63B753226059870 -45CE6403CA23FF95BCFB6F0C8DF8CAFCC0BF27C59414217CC6552F5945D9E6DA -AF83F4AB1917742F7502B069DE44A6ED3BEC966F59A84FAA2F8DE441C11FB122 -DEF1768D250C0CA5F2DDE6FC4E24FD3AE4386B91ED2A492A959BF7E4C0AABEAA -5BC2D933147A4A21FC5E5CF3B2AF5C0A768A8B79337FA3934A43E24F9F7DF24D -22C5BFE4DF1FD57289A6E1C9AA48D32D20F613AE94B4308E0D3BE4D1BC95B33E -A9911B82EFF461D295C5462EE2B12A3E40B89E0BC778FB76F8B847B6AA99E061 -3444A55D83FF839B926985B0F4E562D726FD99C5DC86DA24BA7AF38B93C90F51 -A937E7C35793010F351594465B39BA5276F223DD3CAE1868B969D8EC93AA50C1 -4C7E51D0D7F5E9F0EDBE1BE24BA5A977163BEC724D575749C56C4F39BD60F3AC -47B930C9E07A2D59642C9DE85EA6FAD1E7D8817812C049FDAEE148E8AB207B89 -B2324191F1A82A7C499E7BF09CF1299F0ECF55EB0A2A32C5BB89411B4AF2A401 -074718859CDC27C2FA78BC5269D5A38DBCAE55F6CB669DEED2C36E5B0D590504 -B6162391FACA9F20224E6AD24B86CCAC0048EC7A618B3263F82A317B3969F0FA -9D5EA4676B27F371785FFF6599B61A6D32E82DD9D511B04E03F14C95A4CA6CD9 -5B59A8A7BFB2AE32E9357C7766528E9F74BB8D0B9317F02EDACE2033B7918D6B -8616F1C1B3E113B0F77B0A1292E41F8353DB55EBD872290491AE1FBE95EC034F -DAC1394928930EE297693598D97EBD0720A0A7B4A5DF4EF4BE0E2E0968E64CB8 -167CA1B8C40A779023AB6F74E0F1626D8BFFA96EA09CA88524837B18DA6152A4 -3F0DC3C3958EFFF86B07581B416720FADFFC4AD35F1553A18944A6DB8FAB0AE0 -A8118C09DC8E905CA32904B44E0541FCC7EE555335E61108D8346B4EF697DE67 -7F67E1E4CF0EE2F6D89D10FF2D115C6F8163B8180378018F58C148EAD188E969 -C60B83C7B295F30614B93FF925BBB2974B0B9C68C2BBA6E973DBFB5500A574A4 -F7348BD31C735A1E57519990582D8F7D97F8B63D9DCD488DC569D5B392FF26FE -F06F9762956D64E9C258EB9B90733BAA8F1912F3B9AE88C6D14DB46B7131BCBB -D47CE60D9C63FE0B9620D03F615EEDAA3C76A7285F9897A0D476F35F5CC158D2 -D148CA1E5A96D16253B360F34336D476FABE9A434AAD5FCF65A27F48C5BC3519 -DCBC35DC1D324A270996B8DEC6D3833E76A434E05074C7E3FC8E5633D6B25B7D -69D9BF7039DE4E755A7E3BEC8A4E5929A98FE265E742B269666C75644E53E6A4 -C5AC907F7DEB319BC88CD1A7F29A0A4D43D471892A674D50C70BB6EFE5740F97 -50522F2EF056E208C0134EAF15DC9F85C7C06066782B715A5EBC22AD414A169D -86A2F606150B6F903D3AAAF44E75649DC410C3B8C845909BFC8235E573A2D291 -19440D724C960014917EC802414651E298160EA70FD54BE4EAA1A1007ABDA8B6 -085A89221C3DD5E9C759C19BAD6EFB91360CFDEE6C4876AC19B4BF67A38BBD5E -0BA20996BEFC1F8C427EBDD666B30DF5A2389F1F3BCA17132FEFFD3231570AD2 -61CB33381A0D2E2FDFF470FAC3A60E61E99C76A3F4A6BF32FD4B2B6DB6B27F2A -76A5C35E24E78F7DF28AE1B7D04A71097881CB67E060DE537C1A318B95964FAA -1455264E48DAC7689EF10905E381C569DD65825089EF325595388FA5BA6A1EA2 -E2536872DE92D46AF3BB3F1DD920FBAA4481034DF831FD15C01798AB04A73B50 -1461BA7298B2EAD460D6E645A9ED41EE0E0282C335AA716D7563AD7CFE2841B7 -0C782ED3F6D31871350A12A41AEFE21E9A03DF676671E4C953E51F801CBEE091 -BE0B7B413B7EA2479E2529DE9E49C03CBE8159DB1B28D2E290826B6D01B35DDD -083F85E9CAE378C1A3B7065280D9FFEB04A02B76F1F0E547328F005CBD39936A -5063812D1C958FD4EA6BE9FF87E5FAAD483055819D1DC39D31B8417B44F30B50 -EC95E26103A0DC2241B56DC62D424438A5FDBA8AD4D9B417F0DC31CD82DD772E -FEA23036A719927A4654876985FF4AC2D28A180969A76F3584D001A2EFAA2BB3 -7F0CC228CAD9A485F3FEE3E0F0059D3BD8484FB97593A6EF08F9D352E3860613 -2617ED6138ABE551DBC67F0151D0F9CD83A613C245E23FEE6FCC8858592AB43F -8E66FDC5A27F9312091478D102BF867B320431F7A6EA42EA763C51FF7E0E0FED -A6A830AC95600C837033968174A9406D0DFA72FD65ADF153E5CB3420CEC76A3B -43DA6743F24C6CFE0E9A7E78D540385B657CCB379BF5E238A07B836F907017D9 -C0CBA503FCF625536E27B77A262A0EA1C3DFAB015EC859FFE5BB26197A05F4F9 -87046F3AFD3387CF1B040DA7B7CFB1EE92816C7C172164CBAE3E9204559C2A74 -87E4A41AFB16E7789686047067947F41C82A26E3F343E7359804BFB3B7904F4A -12FBB7EA0E8C26801ACE0E9093D7E2C3E288F781E3E6A53B8C121625CEE7354F -B1A059AFE21AB4DD2B43A9DA710F2D811F63DC41699FCC43330DC7AB9CD10F00 -C959F73155E9D63EE7B20970C7AB1B9A8A51D0DA0ECDB917291FBD57CFAFD9F0 -E1636B9DEC48FA7FE5B225283546B01ACF3036F1B5F399688F1657E41A5F4EEC -2CB1324C136CFE6C6B92958597B952552EB7A8D58BA7773CF685FED451D89392 -C290D38D67FA7519ABD024B85D3002D8592C5D30B50726C7BD17577FDBA79E38 -3D99B3A08797696E593C0BEDC50706C986E6BD05AEF30108F4BA192E956D2942 -72F59E1A025FC31568C2EAA1D5942A479203EC01B37626F1EC334DC3C6527C06 -41162B68D66E7923911921E861FECF78F36E4BA60B4FB8554E83AB554054B2C5 -8C05D3FBA010846BC5B32E9ED62C6A0E8D92B8F3546CE0406A87634E2D96F5E1 -F007DA0161E75DA55FEC10F7564CD7CB9AA0A016438D082D9A9FD107CEFA7B27 -BA3C61B3A13D9A30E4BAD25B2FAE3ECE3FEBC9722B448E3AC5DD9FF784718F6D -DF58A8A7DA91086BD86AC776CAF3F4F2DBC2F0AA81600D53D2A0EB178568DD96 -1ED459E1CD3D897776901284DE5673813ABA0CA7ED342130B261727DBAE566E5 -F57FA86A7B4EE5F48F039FB95D318DC142E26022D7F85B34558E99078C5E6467 -FB2ECB21BCE1E271E22FFD2E71F203DE5D3BE3EE5DC01A9FA9D3E4D01C0F12D7 -D430BF07CD774516464C6FBD414FF6F0C22B9C02C7B4DC659BA3D7306AB4EA90 -12AD3D9EF3C73E567590ADB3C6D261F650E218E7A87DFD9185BD17E8FB9B8AF8 -5616C4309919470B2E01F294D6CF5A8D89BEE7B3B199C4D935EB8F12308C4610 -01A5E4EA5AC9E47B414B924B518F44461695BDBB493256D530C80A2A88A2177C -7389DB61382349231040253A36E9C91355A5F712201ECD1C786660F544C3116B -A0993F9C043DFFAD52BBAE21E69799BCD56EAC612B22742334E801FE3F6789D9 -E8B51FB66F3A3994BE700FAB60C8433504179D9329E6662652F1C6DE49CD8369 -9CAEAAE9C25FF0A986CD5B91A78A7B281FF724201841CA0C0D9D48D68AD9C991 -4A2B7D515CDE867B33DF058A239E5FFCDC44E20149C02C89C5B87B075FDFFEB3 -371700E036FA0A232D1B534C581C33583889251B9F3E32203D8FC328299D6093 -BA244223A74506D13E1CC9716F496D50AED48F058071D6AD036D571F32185338 -F2A6793724E8FB850E9A175C83CF701AD2876DF91DE0D9DA7C3D13B745367D96 -22E1B8C006DDADFFE4804F83FB3BCB48544D0091684C1BE9A4BD325AB959050F -2535F50F12B73DB7FFB418D7D6B2CAFCFD5BC761EAC675E0EBB8A23BF332794C -2D67F4974EDEF1EBCBC5FE26D62FD71DD749445960267DD18322626F84416B78 -AABA54E6DC8181CAC0ACBC66952C4E96507800FEED6D7604834A14D9499F5D7F -D93E31CC2152EFE43CD355D981F91D774689EA589E542F11297A430617BBC177 -2AF03ECEFD7151E6347343F6A12CCFF5F64FFBBAD48D8A806C6E563511C97581 -7D4BA510BA1B84B72FB495434C2C07DFB05F8BA0CB099FCE8AF1275AB983855E -3E61F8B818BD04B15533479FEDAF2AA4CF1A0F111834BAB2929A9E9B67335F5C -085B13726B55EB619D2474BB50B473629FD0ED9D4987C17A36CD0B3016F479D8 -EBEDCC7B626FD5F54EB70EEF08006C92D863F9623F50F35158EED0C209FB9D84 -45BDE42A5B3F1FCDDA88353965D55AF0072AA1278B3CCE16218C2B393263FBA8 -2C2210721E5B8A92633F6E19EA3CBBC54CB10EDEB70C4DC00502F8C7B72BCB5C -12EDA943F183B470D7878B1911583199701BEAD17F5C4A5481BC27597DC35EC9 -FFA8941D718692B0B33DEA798101DAA470BD4444CCE1FA857E6ACFFF8B860F75 -CFB76AC54708C02584E9FC8AF486A9D16D6175B87DDBCE0F270603A94B7612D2 -65181880FC339C100B1A7EA58DFF7C64FFF8FF24790DCBFFEDB4AAF033B93215 -8367CD9A9AF44E12A8EE4B7A2DCFC02C969AF8FAB72C1A1AAFD91C36173D7AED -B259DA94331F79CC0698CF95D14562D88E6BF6C99743307FDF5269B44DAA11AE -2C5505BA70F9616A855D5A75026005164BA2ADA6279CB3664A23B3C5A339CE52 -D11627E92365C39D4CC02D34F9340F4A97E6E186FA9C52E9D7086FCFED0C5319 -C97670CDA4461985A2553A7E845737E04268AEA9FD26BB8409D145E3ABDE88FF -2730DB4697F637CCC4F94F633F4B6F1D352D5E6E192932120AC10E0830B436DA -B474789F08F51E23D3DF5867A64D688F5A671E0D025FB5217B919B0C8E9154ED -43BB6B3ABE0AECE3A74A4AD8EEF54C1AD48F8B63525A05227A52E33D81C9D531 -9FF9821CAADCDA4157F8871CC1DFA9450E12B9996997BBD6A3A399C2C8461B38 -8D509B501C34B319E11FC9CC32116E9FBC913C73E80797C995ABA622E8D8BC16 -27AD703EE7676F06CC2BAA648EE5E0C04156DF21D18EF62A577CD2F9056A5A6C -B7EABD639EA8115274A88C57247A82CF44ECFF98BCF7C128452DFD54FF9590AF -464D0474E06F30DD2D82390805F4703740FB5BC6D0807F83F866A06302548ACE -CDCAE86F789563 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT12 -%!PS-AdobeFont-1.0: CMTT12 003.002 -%%Title: CMTT12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup -/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT12 def -/FontBBox {-1 -234 524 695 }readonly def -/UniqueID 5000833 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 46 /period put -dup 64 /at put -dup 98 /b put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 118 /v put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 -7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 -A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 -4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C -A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 -75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 -9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 -098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 -ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 -DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B -5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 -F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 -2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 -E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 -C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 -42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D -4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 -95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 -830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3 -FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF -F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19 -13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11 -6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE -896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2 -91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492 -660D995DA9294C16BED1113CBCC18AFCB5968175EE2FB374B1AA261F22CD75F6 -6E7295A254FEFC41A66EA6833A6A4EE0E75EF6B6FAF292DC5D2AFB61D5203DB5 -4BAEAABAF39E9F98B45F22F2E37F337A7BA412807A31B4A5A4E1627BAA964B77 -6AA397D368985045244ACE969799A9489CCA8FEFCF2EAF262ECE08BBD9573C79 -2785F1004C34F4D728E9E820B4133FD5F823B067F6686C82BCD35123E4831E38 -CDD5ADB098BC3F1B4162F45B11ED39CFB65DB1A10646D0B9FB5BBE475031B2AC -9E0769CB063B82D1232E24CAA86D9D5DBB9737B1E69608106D34CFEE3FFB4213 -5DBFB88BF9012F430D55CF8D510FAE1524FB065D71F9781548B302CFE791BD03 -3057F5089784DB541D8D299C5CDF6423AFFEE19BC2C9114E0D85ABE928884624 -5E75A98EE2F7A8F5E99A7E943C255A8388A6E02BE7EA7C091CCAF8A574D4BCBF -A55C5A52F94E0E553A03AE4434AA09AB5859ECC86C49BFCF99947E1E073A2BCC -E2787821CB17F37691E51E830A2B3094386555159AE9BDA2590FF0802F1ACD5C -8F11D85F179C02A33F45A06DF0063B47B2442D8A9A975937862F3A0FE3A5E339 -453CC574D7315AD20D2647A5C7A190C632F782943C22A8778DE08B591A972A46 -CF62A4FCD5A2D803AD8308D2894B8837D26A3E560C98BECB5A1CBD336AC82648 -F146E894011D0CDD1A2766A07FC3EE5F382171805DC30FC1E12956669E713081 -84D255B9280CC54C75AD3DAB76217343E434AD38B7A3121C5FE630BEA26DE2FD -83DC2539BFE46B5571EA73E3F6643B90F1C8D01905CCF7D311843B5E9E36A8ED -761C81A06B5A31E86F4460F5FD6EC3754FF3D11BD0975A23B764E4B51D0C7048 -31F482420FE8C1CFA4C158395C5CE454A8ED558DB7A11B5C7AEFCF65BEEAFCD7 -9B0F98719CB8FE611A924C28E32FB3BFF145BD613C74E4438F8AF37B3AB1401A -1E122B8D9B9AF5CB0ABBCDB921D4A603AF221F01DD69D7C80545264B3C45FCDA -25759B22BD1E2E22A3BA6A1C30D9D49E11B3BAA8F82DA49D5473914CB806F263 -03E63D18EFF6D0872F3BF6D573CF64D692E69394A207122F8E7FF2D0AE26FA1E -9B24B6ED94D8FC58B8D3B3C5C6E68B71A48BCBF15A778CC208D4D5EDF68A6E99 -EE8AA6DC84CCB00037BFD8B83F00350EC1F03F8B0EB4B3C0B9074733436D1A34 -E35CD79E927BCD0CFFA629D144F71A12DB5974FFB6B0E0DA7B6FD204F9C3548E -AB081BFD6941AAFCEF045AA82252C3E903C56B1CA12D46B0959479B4C80D346D -1110BFE7F58BE59B547EF4F8BDEA3B25043E7B7FE30D31721BA9FC316036074E -96F1F8358D29438385828F22A6B8294CF98C51E749E01079A5DF6DA3BA79D1F5 -DBE0E751395D6B471606D2DC3FB8FF67E9D7E60A45F2518897186CE1463929AF -1D97C372A0257B04DD8A63524DE5812951E51DF6D5500DFEC3A0B6EEF591A9B5 -19A071089E55F7EBFD339EF3AEF402DB63EA1208BF1BD9E2029A3B0ED74530FF -E1029CFBABDE8EB84BB4BB8BC77B7E303DC64348D7D6E6D195EC75A86042B31D -B7951325CDB85694AA8BB60FB92C60205CE758F2449DB29A73BBFAE2FADE1A36 -2608837AC1D0EA690CC5F0ECCCB745B68D25A1D968424B84B4D7430993E3447C -926E20EF91A80D48C4113BF7F732AD8DC1155162DF98F6B18AB911E33506D543 -866A06BC3B46B0231E5F8E701794F6C4D22C5553421D391454AF46A2E57E7075 -18D3082BDFD0B1FE8F616A0E5E3B6B7D26AE83D6255A244553984FB963DCE328 -83E0AAD3A215685A822732FCB67EC329BB2D4EAEBEC5AC2C451DD702CDC27FDC -97A92428EB3FBCB26A4E68EF36B8D6F9E2E1AB6524D806B25D33ACD6BF0BB338 -48115172DBFDB7AE6A62FB87F8790A1788FA96FE9234C92DFE646BE3D4C3D8F9 -6F03834D679B32D8B05551EB1F135BEDEB3297493CFEBF6CDB879D9ADDC8867D -67024403B04E3388741C059074390E6F0781823F9875696CB64D84F440815036 -DB2BA2A9996E5277AEC7686E7239AEAAA21590FD5D1BB8CFC587F8E71AA2D121 -12ACA259465CE17000427203489F266FB09562B55464D3A6CF9F3356D49ACA5D -031C0461261FB773A976C514961C773F77B8F703C6AE6C88173758DD73690623 -16CC78F644237CAB3726CD9ED398095465F29097327B8D0F4E50944647A96A1F -D7F1BFCA9A1596D2F68C042F470B66D73C2C92A174FCF1A9B2DB236AB4A76EEF -70B42F3B65B38775B589A36B55B0ADDF332662F0BAE5360D13A2212541ACD822 -2318DD57D048363BAA7DAFC3AC3BB5A60105C2A2141F1695D7469A84909F3A8C -615F3DF7B02FBF1E3A3A5426FE68BBA888FC073F6C2FE7727547825EFBCAEF7B -9050DCA6FBBCCCA91E538F0093FD5CBDBA8811E79C2BD2185DF8D17CF7CE6F3A -90B7C680DF106F5ABECEF7811682D79C9578B092BE3820D6045377F003BF5AD8 -5D8BB13A61E75D8B20D201522FC3BA1ACD67106246926594AD9E1914F0EE4557 -4008A3286A2792D5E6D3E67BB6AC948295EB0064D8DC68CDAB0583527632CA05 -D6EA8A92A23B7AB6DB4EF7EB951CA73344AC37CA00CC119F55DB4E2FD0DD9546 -35FA1622015C7E7B1B3BDB035A49F160ED0F7DC915E37BB877598C3A9C84F60B -5DB3B42B85D24549D34CF85B58C11900B9B8C7CA6188D2697B5AD4FF8B75862F -937F3485D032A438A36464F5D1B7F74053A435C034C41AC5B58641A7BDF99428 -2F3111A7BFAE57D9A47D3A4E74C216B5AE744B6F8F653687CC6FE421867B5011 -EA710E28E31A0F9C5B6E230772CBCDFC578B62EEA3F44698AC3DA27B48D7E3D2 -C81310DB70F7ABC2F245F15EAEF6830D134CB908649A0AA927A0A59116948B1C -5DC93D49256079FA692DBD8642933AEB115509D0CB976964CEDE5676AC47D1AC -4D50B1FF54DFE905871DD272AF22BD3EB27E47E248CE9D9609D0C1EB98B18C18 -1284757D1090682A326CF56E264FDF5053E658D85C6A33B6920478AF331CA90A -2630CF4BCE9B45F192C23FBA88A620DE298C7F22C46BD3552D7645B97A598605 -555ED30E464A2434C389FE078B70B1E51E938FEBD2AEAB5EB2429CEE119AFD50 -041078B9F352A22E270593D50A7C1599E62D4F6510978622A2FD9619B1681D7C -DC36C65C7F67A6417DF0467F371C2F8D93017B48A93F2388A355618BC26030F6 -A9892136D3CE5E0773FC6F3E80BF5742A423F6E4CD452F90F3BC3BD57BA0F5AB -00D833997A68A932C4DD0FAAE6228BF64E1BE565A0AC6AC05F3860AA9D6C08FC -C9333FCA56B91304E70B01623EAE23103EE845446289735651F4F392BECAF7C1 -B4DB4B9BAE1D9001D51DC2C29CB0C7B9159EF69C5C510EB06A0DA3F4D6963D70 -BBBA90CFECB9EE0B0739617AF3052270465AA9D376C507461322D6536482521E -4AFF6BDE7F8A52087F903BE7C6B863C4801766FB57493CC63B76AA53F8BC6488 -43E1CBC68CED44FD45BDAF6067C3CCCC6D2F2DD76BB211976E04B58183775936 -B7E4F9105A597E487AEF1C1127512198DFE01E2D8637477FD8B7D6F71E5BF480 -50F00F624B93A053B6E36F0BABB04C50B68BC5EFE96D2E1D -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR12 -%!PS-AdobeFont-1.0: CMR12 003.002 -%%Title: CMR12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup -/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR12 def -/FontBBox {-34 -251 988 750 }readonly def -/UniqueID 5000794 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR12.) readonly def -/FullName (CMR12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 44 /comma put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 65 /A put -dup 66 /B put -dup 76 /L put -dup 77 /M put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 118 /v put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651 -F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224 -FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B -8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0 -B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A -966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E -CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4 -2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E -56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295 -EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277 -E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973 -5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F -847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000 -72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6 -3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2 -57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB -B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7 -547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88 -F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535 -47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444 -24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7 -64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204 -49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7 -FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD -F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A -DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97 -CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1 -7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5 -459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918 -1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1 -6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846 -67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5 -71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED -C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345 -2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E -3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF -CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801 -F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8 -16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542 -29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327 -0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02 -A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E -DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346 -39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254 -28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56 -FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9 -D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8 -116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F -59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74 -482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45 -4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A -323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17 -C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB -5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179 -46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1 -E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C -C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3 -4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C -BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32 -5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735 -9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117 -52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B -E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2 -655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC -F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42 -FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442 -87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107 -5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6 -6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366 -B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03 -3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A -A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34 -343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046 -BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D -775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5 -8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0 -7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5 -E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584 -397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65 -7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689 -37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257 -2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E -37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817 -DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F -89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08 -90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1 -EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7 -FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C -5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B -8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665 -54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6 -4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8 -86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B -08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E -D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B -B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54 -6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC -3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1 -DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C -A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98 -DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E -748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A -C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879 -0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA -1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D -6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422 -E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6 -F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76 -FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016 -E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D -903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B -6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21 -2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66 -139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4 -0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9 -E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1 -2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6 -585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8 -D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E -51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E -B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3 -A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E -512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5 -F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D -E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5 -1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB -F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407 -1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF -BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55 -BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578 -43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E -AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A -2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51 -D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65 -8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991 -9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8 -BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925 -969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A -3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A -845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31 -E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D -6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407 -E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93 -3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733 -52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6 -F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F -95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149 -AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8 -39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4 -8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3 -957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07 -55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F -53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C -D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106 -CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E -CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46 -BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1 -B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5 -218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521 -3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86 -31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9 -7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 -196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 -1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 -ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 -82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 -E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D -F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 -2F3AD7552BBA90D0A74404B5696A3929AF269129EAD44ED1A5D8655F916C8FC8 -33AAA8AC9CA8A2EB60D299F131D8019FEB315F4D41CB2DA11021C368BA40F4B9 -E6ACF209E0F7C86DC471D27A295B9EC17A04E4A958BFFBB621FA6AD0FFB0971C -929ECA6401D0DF54743E42C64F967176CCBE7D344CA7464B03E183EF3E26A286 -C5C6BD62ED1C25BF646DA36F0314F29457C2FFCB2E9162D7EA8570C54F7822FB -23E5DFCD5F486A98A79626BD03193E683A5C63F6947CCF09D6C87B7FA840C1D9 -CF84DD04DFCAFE1E6319363F4C54E6076E6AF8D8C3C9128EA5CED6F0E7EBCA9C -2A32BB23DD7E279A0DCA3EEA89F53C8223E86E6442E9D50A49E64910A6493446 -AEE72A74525C5B39B22256359751142DB818A0D1DD94B941F215FD6583BA33C4 -B5E1D0B7FA670CE12C3727640DCF012E9C9A73D4B20E4199888899F5BAE37376 -58A536DD12080D7BBABCC5867679A77EB6DF0260F4C938DC6ECA9EBA37C61E65 -49CA66A514D4D2BE46CB742FC59269EA00570FD53675AD958A9BCDA1E3BF603D -CFA3E66B18DB6FC5E3D7036DDDF0E1FFFC5529EA37D9D79D7746FC616E2FD069 -3B24D8DDDE5F0D3641157D476B0D6E3B31E3EC293154E97F3782E00C16E048D3 -3A8C71AA63F0908630F65EA5D6637DE84A4DF324ABA031CC5EE5129123C47C90 -32E99B7B87EA88FC09EF79551A91ED7399215F661895ECC7C6C24ABC4DFE04E5 -34109DFEDA8C106D9F7C4A6E55833951B8165F84E32FF2F661B8F9CEFE44E5AE -258D5893CFC31908E757B01BAC22A61A2BF34C1C1FBB9B168D3DFF13AA5995F0 -1843FA30C1DC4617CE087090197765D763BA62BA7F58753119450CF9056011CF -0DBA8297DEA16AACF98EE4890C521E5B5BACFBEDBA29ED7060F74BB73DB5E6C0 -82346567EFC8DFA4EA605AFE8C5FD2ACBD97985B42A37D860C70B64676C232D2 -67DADF1A9D4FA01A35BFDA989781BCFDC3D7061E14C3F4E173636338B61D156C -B226A6926DE326001B5CE1DB0A2D8038ECB0E753145828F1E8CE02ECC859E211 -86D5C66E3846811EFD43CA6FF55F1288AE18EC6307541AED3D2C913AF9405297 -14FA1BC41ED91FAD38E14FBB20EB0A7712FC808476B13C27077057630FB7258A -E0E101D58C20D3B45A7788F0D2A21DD10163C0304762A700EE46CCFFB29B1EFD -648BE00CEDE3C153AEE1E0CC3839A0FF9A7E84AA9FA96891EA67A537F4E25746 -BCF673DD8B15C1F12CA0FD2F7BA30AFABE3B3A498FA634CC9D28711C6FEE958D -50290D22EE870A89C3233C1C161D7A3C9C6CFCDA19AEE156C6958C83707A483B -2986F5789B885F154FB6DFE527D8BED4265AFC8522E6200E555F5098CBA013C6 -8BDDBD29639AAADB0BD00AFE529E542684F7516321DE443644031E660F61B643 -3FF9D5E55017F00FB4D315672CAB69DA46F691BEF7F761D87EB2D2263348781C -6A36BD0ED6165123EDC87F6BDB1D4D4E7C03810A90CC45B1F496015E7420C91D -454FED981FE7D38AECAB724E2A370C56E4D9A62D7A90183F71B45292B5B55F08 -A6E4EAA41B35F81AB501ACD2F163B877EF62F0C2CB23494F45B1A3787E86801B -2CDEC66617DDFDBB1A62F0172FA063FAEED41080B82BECC448127986480E2056 -753F72CF2C7694999BA0977153385B0E2E1F0CB73FE208D99D0A2BB77AC02822 -F45EC3C84FCD5454E605143D6786A20EA2CB28A9E107926D5739316F0F774DA4 -30EFCB38504C1A86258D2F750AD441D5961331B0914490B4BCBEFDB8AA72C5F3 -00763F0D299170A34AC5DA3A785F1BDF365DBC7C4B15C8966CBCADD9EC6C048A -8D94798A6154002777D2DF03C8C6388A600D13BC1EE81EE2B02BEE0C38A20F93 -385C1075EBF31F95C3B4E3F6722F60DB80DD731F2239C1C12A5BD9522D5A1B34 -2DA04464B5565AF29A35E0EFC7FA91D2E9ABFD008A606DA13F3E3B8C07D9869E -810EBF01EE40383A169F07DEF5CBEDC02CD3B99AA310E316CE4E197733E3778F -E5931F5E319C6D8C670F25624F5DD6EE97A5F39CDC978C8DAF1C07E6A83EF293 -E8AAF2B9CE57B7AF470A6DDAFCBD210BAEE6497C6ECD486FF0DD9BEC53F9230D -A1A1344ABDFBABE2F7D8DF7B6EEF9389C05D87DA7F28EDFF405C106E7A0F76E7 -61613BD0C9BAB43597235057EFBBD8D4758AFCD05B4DC548DE95E707BD22C76D -DBC6BC538843247534BFDB1A8E591C6CEF347D27E7B36D2F55D46314BE428E13 -85526CBC712FAEB72EA4431496B5C925158A4445DC4918D2944D9141AB37AC81 -76A21982291E6CA022887746587DC357232C0DCA9179314030A955D4953870E6 -626D8DF3514B22995C8B7B17CB7316B8E9720F6311B3CEDE860810287DB5E79C -7F63E23A8DC024A56D8958D00F3EBF0157F59929F4F00D69BB86147268490A4B -178828DE42B92D6061A0F7913EE72F0A968411C2EEF08E122A5A9D5B65CEBCC3 -B9C8F61A1A34821006ACBDE624FB09D104A3D68141284CC778A3F29E2900E40C -F1D5730526D90A5A4CC31C65F1EF0424BC729F1336EFA5AF0929176B4B68192E -1DA8DDA19F82E57474FE5BC09F9CCDE15C74D56D9ABB215C6D6ADD8CAE7F23C1 -28C4B939A9069BBD511D98BE9005F8B8D46541BFF944C1C389A811828B105DE8 -72EFB57C8909097119232B9DF1625B68F6C4CDEF105527DDA9C61433EBD0679F -A0FB4B013B8A2A23DC7FB55D27D24B5976D7B6B6D22535086D51FE3F764EFDDC -6BFA7053213441BE858436299F9BA777465F87622B46759CDB97B457213DEA91 -A3B3C4F20B2E04675304CB29EA9B502F5437DC528274F7BCF043D6294D3EDA62 -68B510C5979DA9BD79D729092E78A07A0AD771180E86D5FB31267885AD71D9BD -1234205A958E3CA44777FB0DFBF647997DA58000E413E2321709A6072470ABC6 -253741EFB6CF19B29CCAFDCC21A8E61F3CBDF3FAF79462A4EBF4B265F5180775 -C6E360C8CCDCED4EF326E31C1B00D77330D8666F56D79EE933DA673486DE30C4 -4F3DD041247B91C1C5E8BCD4D1036240C538736A3317A8E9BD86E3675C5D91AC -7F8E69FF45C0B7CE94ACDF0A34F42EAB4100E674FFB1862EF7856A8BA0FAD7F8 -6EE4E3610408355258B69A2FFE2BB16A9074D369577AB2D565A1DB21F2200A20 -E467D61E2A7E8BB82EAB91C1E55A008217995358502F8754416C05D0C005D149 -9E7045048FB9E3263ED71EB9D3F4929489FAAFEBA25BA97AF44A511C9279ADA0 -AE83660AF114B05C4F0D8F74637267F297F1C21D222DF83CF001A8BE71DB6E54 -9DBC580BBB2E331EC4AA4469912C2F8F2984B55C11D9DA493DC67AB77859F275 -41E273013B1F6D32D677826070B78217C84D3B635B3F77EE3569911E100A036E -F53797632441E7436922F5771375767C7A38DEFD5D726C57AAB568CEE8DE4CFE -C9B9BE1B26CC107EFEAE6367079D5A73D84DF5F28A62630E7AC717D72AB06800 -5217FC6112461AF6A8F289266FC24492A462E97B79A7B81823FAC3D77737428E -89E0C8F3AF3E03FAE9BD0C1D6BDD24F05169E115D6DFF45AAF743C07879D1958 -D73D076E11D15E1E085DE36610566C6616BFEFFACA1FB2503602642F4AD3E7F8 -52E4528C1DFE7622BBC7166B9C7C3739B305A668563978D242C59D214B6EEFA8 -DC5154F28F40558A9555ABDDC6436C3FAD02A0611ACC8C9A9D392782169A8CAF -69CBDA2569225BF6E169C0FDBFD957408FDFDDCF700B014738D1076425A90922 -B36098E9F8F781019ABCAAEAF2541492D1ED53F0A0B234D5DCC79D60A2AA3E7A -954B9AC9EA9FE07C013C9F658E83AB861EF1AEDDE6182A267B043CD8BDC88F4C -36D36FDD16912276BCF5BBD7F84467139610F593957235589FE0AD8C2EF66CB9 -7035A320B82BB63A128E450A80C201CE5B527C12916C921FC7208931EBF8BAB8 -533D78B35708AC0403C6260F12814EE0A50B0F3F5C69C9AB23A437CD7928C67A -FB5D36C3007FFC25FB510409FF3C7E9640821700A612979BA5C5E5B58904E23A -BB2AEAA860D03C3BE93BAB447302236896BC9F689926C4B6F5342776786FEEB1 -CAA9FE678004A797B11B5B46C17C90C978A83011BBE5C5D8ACDF5092DBCA9FE5 -4A2E7E5C93656670B1A215D2D3493149DE26B6A1D123497141E0AA06677F2E57 -B8984DC435B0C978BA57CACBD691128748A95C5D50779F8BA1D4200470102A29 -964ACE700F4F9C67E9DEFF7C8CBE574B75F9CAA105B94AE83DAA400A80454252 -BD50762E60F2D2D0F11EECE3A141C3E32F69A3CF6E6F516FF81DE720B4F6852A -2E187B0A0DD87F89775E041836623A1F3C7AD871DD32AC80E36061B3520EE4DB -3ACE3C9AF5E0D754933EDAC4B82ADC09CC5E18D3EBAAFA08B066359DEFEB1552 -B6F526693F3CAAEACF36DAB88A70C0099DC3F39D881A76159FDA11967EE987D9 -07A24B70F9776E347F6D9EF2C6BAAF9CA03150CF228337010DBF2A1BEFD9326C -F4BCE63D40C73447C28B54393ED283DBAB6DA4223FE20A89DF6A8D5F6D03805F -57D11E4CA7F35FEE57DDA402FAA196FDC573D7A9252D8489663D75006A44513A -AB8AA7C9E98F95D9FE9389AA7D79C08BC3C145AE3D02BF6CB0EEBA0F455B4030 -0C0603544C34D54DAF21E9B7272D48A188CBDD25EBB70E9813958442995345D6 -4525A9F1CE0544A05619A898BA05E2FDD7A595B771EB749EDC18E7A50CCF4A05 -09A6CD15095E344F8AC1B22A5BF0BB886B87F80C204AF36E903F4E8DA7347F29 -A37875D802B1980BF6FA7BA931879D29714D1BC4FF8D1E40B879F7EC079F2ADF -DF57E7541AA861C95FD692043A50C936C4C19DD5766F30E74B6787938A6BD314 -D8969C3E71C1826E22482F5D7D9758EF4BCC9112706B19396BFB04FC5B7606FA -B27355B6EFABAEDCF7D943E3E325912441268D02DCF977597CE70C9FEE929110 -FCB4CBA2D781AC410BD2DA58BC5E40B2FE6116FF416FF8F7322B8B8980C4166C -28BBC8F3492108C2BDB7DF73628EC43D3C057A3C12E9FEEEBA3007A1F2942460 -26E6133211389D1BC517710AC724FB0E9D91D065A7B001480E34D300EE501D7A -4E25272D328727FE03ADB57A4CC8244DE4F57895ADC0248E59E191B511748CA0 -22BF111767E464FB590C5A575325D8A0A5C6E377CFB7C5EAA9766E01EF33F1E7 -9E170632F621DEAEC41E604C3F5BBAF7FB7387E5544ED9F5BB11B24E3F6A1234 -C34E0ECDB020BB47DA078772823CEBB9632632D7F177419397A2CCE7DCB3F358 -D9009FAE512CD5DFF9D547199EE3DB5FE73E9688E3FA530B3C1C220AD14E1EAE -70CE50B9BCD6590B123F0C27B6AF4D94B5A720D479E05042AB637321EBF1E1DA -5CAE0BEBDD5571A9C6FFF9BDC6D9A6CFA584F0F9403812646579DB230D60123E -ADCA8FAB39C26FF0484F3CF11BA5EE677A492BAA41C97BC28D5C61FD119F432A -A2FBEF2AD52B33AB01C1BB8C1A1C9A0D0723AAAED131BE038A8F6685E1973165 -A2D17DD2FDD95F46E71A755ADA2A87320CB94FE6CE58747478684F44405C7A69 -04A63884216203693D28D3742C349DC96BABA2B782F53B618D9540A10A6A9BD8 -99D43B0F5971A3F3E1390FC739FCA366B71EC177DD5A7C0ACB4980D8DAE72937 -EE61469C672825DC84BF957DD7FC64C8A878FC8EAB3E87027A91641BF9B66EA1 -6DE73B03403C303FD52AA4C4CA7BEC8A11451F1224B637FB690796E166FF71C2 -4E811D6562EFA570B397E500976CCE4ACC8208F22F097F506644C151E536D594 -2B2014CAE9475DE608C27F1B904155F670EF523A62CB92D67574E9CF31295C01 -8D01799BAFCD49C5725ABEE2B6193ED05AFA26B0FDDB68DE968457D877606E67 -3AEEFD8649619BCCDFD8DB82EEEDE0C5A11BFF01AA91A02ACFE52C2BFE52FDC0 -F72C909B2EF965B0E4AF615597EF50B685A624A9DF9D3DD78728D418B576D3E0 -94639CC077C39C277A1FF76194782129CFD0E6DBD39AFB108DE517FE4959C3E9 -BB003C58B54E768FEC5DD7A11685F54643555A1C488F6AD4122013757C6D4454 -0021BBDBC0857EFD9B15878B9AB274ADF30D9AEB6AC791491B4FEF12C1DD54C2 -07B328F171B6582A01503C53A341105CDAA94E871D29CC0AF438F4CA8577D4D4 -93451B018B199ECFF48C0B1AD21865BA350FFD19780C8F9A1708B0C33EB2AFAB -2C1E1DD6D7ED0DE7E56480F3A20A3179DD9A57115B72741C87E4F717AFD99A72 -C7773C4FA1195F26291562DEE4AB239084B38681CC0015DE27F2016A5F60872F -06CD65C7CEC8EA2A3F4D17D1680106885742423BF87C42787E2BA7FBE7997B05 -097A9AE8B0F4BDD8EBF8ECFE4488F6B1D56CCF797781C6C8A425A13B65999447 -BC7DDC0AD1BF0021F5EC6A646AE5525A0E739B5EC4D932EA5F6DE35824439AC5 -013BDAD77C49E1EE021749420DECA726945B54B9086D9A226919145F74A039B5 -4E80023BFBB07B71967C420B23004C4CDF51A94DE0A2708C7957 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR17 -%!PS-AdobeFont-1.0: CMR17 003.002 -%%Title: CMR17 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR17. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR17 known{/CMR17 findfont dup/UniqueID known{dup -/UniqueID get 5000795 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR17 def -/FontBBox {-33 -250 945 749 }readonly def -/UniqueID 5000795 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR17.) readonly def -/FullName (CMR17) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 70 /F put -dup 77 /M put -dup 80 /P put -dup 85 /U put -dup 87 /W put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9D6295729076BD8E -CBC0F4C1BE246922D2482233846A96D867B66D9CF25A1DB661141D36B8506E61 -A022F9EF8BC1F2F674EDF1533E67A78CA29A612AA9268E113C5EB84DA56CEDFC -D7A111403E6E2A8682DB04368889747E003A124395ECF0C7FC81218552EE7C6F -60BCFB4120893528670D0E8A4117EA5676915E3591AE5652D003EEF67818A41A -8882E102AEEEBECBD15DCF632ED246A6A58B6A7780DB6F1F9AE3FDAC8344585D -E104F2BA2DF06D68945889A2A3B6C262FB53FC670BC5EB7C56887FBFB7AA7026 -84115872CFB0652C6BB330447AFF8F0F665EFD6A41D6DB6877B08052F402448F -CB21C26BDC900636C99CA347B79AA73AFCDE9762A992CA3DDF7279E5C50F453F -52098529850AFB1F501A442D6A02E0A2896F81C8AC735AF1E7EE47208B4CC944 -649DF6802EEE813F1456205C6126D7D0B1821AB62DD65468F3A30575E491623E -0054E2E680E4402E1C8C538DA389B81603BE88D6DC287A076F92B224CD58A0AC -44B8D490197341808DEF243660971F444A560C747BC6F52707ED42A99736ECCF -EBCB694A561C3A70A319D204CD40D402FBF937A00BBCBE85DD26C9E3F91B7D10 -D85B9D314BC3AAD5A58B107F5F341BE2C53490924142566417D6BE03BB4977FA -6635EA58DEB9508E40B9FFAC75FF44C683680CF242FE210519C9BF92483B0A54 -83F48341318BE16D2F8C988FE3DB2E7914581F579D5E323148A31E4ED03BC24B -C990372DF5F3B0C5FA32EB2CA4FA0EA33316569133C87697BAA2292E685C26CC -F8CD40A2366E60B47D47CC9D0FA29D2836011376A07F78BA7664DE96E775CF45 -9BC91559A063073A4C2FAAD0893C517C5C46A1425D07EDCC2B57162E3A45103E -FF26A2D2F98B194256A4B052AAFCC08965A50EECD7B9E8F35AFDF7B6568B3983 -8030655E7C2BEC961A2F20539D617626E8454E3FE9EBD3EFCEF7F63498441DAE -16CB509BF239FBBE25EFEF07A3E16C9C71EB8D9DCB8403916FB40FD7F4E1A52F -72F2DFF94FD14D7D49FE775390C17C37C1BA0CAF35CF75D682B7833A83224158 -D54CE962CFBAFB1B2CA50B60CBEB1F8F58DDB2F5470C355ED9632342D9382AE4 -5D33BCA3A0A25EE9E5B39BE5370E7F20684C664EDB48E7973FEDAD9676F9EE8F -701CD4D8CC9B9EBC06E8C86EB88AD56E15CEBB8E1930E8F711CB6E01D5D14967 -D7E6C1BDDDE2C4D00384EF4CB02877DECC27AD53FC981338977BA0CC0257CF7D -B42E9BC91AF45D9722461EC3CD9DEAA8011FB855FE14B74BE0A102008EACA2B6 -0E287BB4F466FBFDD6E65A5262B9322F95E20DAB875A10A84572D982E6FC7ACA -23C0C37E5EB47B8E69C07507B53CDD98CD1B6445E1699CF35B3DA3E0DC56BB76 -F997C40E2ECE47DBDDB707EB527055960113F2DABC87FD9EC7D0AB36B400CE33 -0D54D4F197B2830B43DF0AA802DFB2BF747A4C44B31FB708B2C8BBE1955A6A28 -379C91AA4CC065A50098AEC0B837E180B76801865A43C74859DF18FE1DA1483B -C17843BF1C7E1B11A8C6D8BB8CDB1D552FE6A1FD0A696A8F7405F2320F8621EA -17C1A32056C45A9ED35D2BD12D02D8B26489CAAEBF4EF33B66FF4BD9B46E4823 -6395831A8F3366EEA0D0EA88D612DEBF63DA7FAA24DA979ACC1A52544BCAA007 -6C39946BEA6076ACF45722B2B8E4D0823EA2D12B14A98367BB0433A21FBD9F94 -18DF298C56F67ABC9DB1868D431A854DBEDF8E1F49E359A545C75A7AA1FA4D5A -50F1EE6B45FC68ABF65FFF257964E4E50D8B0C1FAF498DFC554073697C2F219D -4A68DA9E873B270B9C56F0DDBC9927ADAF9203FD684DE615F68C24ACFFB44690 -89C0D5322049FA69E7FD00EFC9C9B2BD177B5B339907F81C31496662847BEC1E -56B5DCDF4FE618970F4268F475B2EF7E0F28CC986DDF098E59DDAD818649CC35 -4080C0867A884B8177A6880F06F1E5CC130AB4243EF8DD8032FCF390765BAB1C -1F0C9728EEE261A09F8C1D7ABC7A6B1550551BE2A7D19D45B656650DB00B3A5E -B3E1186043E173BB4DD5EFFB379654F88146382AE3F7196F099BDCD6D245FB6B -AA2FA9B6CFBC9F0CD52798DDF2F13874BDE5B124DFFE0DD93E24C9DAEAE4C3BB -71A9A13AE2860F620B4EC789F95221015D9C510CB4AC775EF69DB9E32E59C896 -1AF82C9F0DCDB4812A37761859A3D3BA0CA57F244489C78065346FFA78F5F7C8 -0B2E8CBA9EE62FF5C27369D0BCD52857D40F1FB8F8A1441B83565A4150AB1945 -0B54D6E49F66389E43096269EF5CDD39526A288C0CB81E324E75D326EC9A182F -2CD966368CE300B41873B08E17C3E6BB51804460D2562AF5A12339966F44CD09 -114C6809AF246B5BA6937631842CB9417781A58944B6BA4FCF961465C208957C -81A662D560D0F81BD3CB53C06B6D979F04F6121CCFD5D52702CBF6C70C01EDBF -2040AAB9CB144321E68C4010E0E98CCA2603EB55DD62E881DB621C37EA4108D1 -528ECC7A0121B57C6BB1E26F8AE7161ABA7E88256D2D6A8B7CDE2E730D137493 -3FF628EF6030DD2330D747FABBA03B44CF600418C245C388F33EC5559E7313BC -4B530C4FC12530D38B27D6408548F25FC084DD0523B27D29D6518D3115AE7755 -37162CFD4CF528214466FE525B13782F9C3CD78F3D6C7423E63A134C0A371F15 -10F4ECE1D482C647B563D3D15586F80BD9DF7381BD53927825D5AEAF762E1CDC -3BD184F345029A95B3AD4D1B66E79AB4F0809418C0CFD4D503457A190D02F134 -3F57FC04FF655AEEB783D6791E4EC300755861837D3D50649F6B7F60766211B3 -8148F8E575E28D6C2DE75B15E722ABFC6DAADAE53D89FD295352781DCC2CFF6D -982F6DB778D6FCBF1B7BDCB53F3A23AE6EB499BBFA96E8BE04C3C8E5B660EF24 -01EB842DAEBE979F2C2DB72AAB4D21627063B1D3C6CD40944E4CB81655698FBA -A343766CB22E392E5DAE01DB33A00918D6DAA07F2F38B336A3C5DF3708865E75 -0DE04D3AFBCA27A249E97377D5785B4E28EE0E93F7D353619C200DB967372ED2 -153BF8BE945474266EB2FD30F80042A11B7E3586DE4AB1FBD4A741D36DE583E9 -1CA25DA345520AA60634EC819E7EB493CDB128BBADEC3890F055455F060A1100 -D5A41D7B180027E08AD6EE7E393DB9F83799544404FE397F557773BE6A130541 -157C0EB37E036C94825B5090EF85F8B4E3DB72895D86687758C20EDEBD6D1079 -196E9949DC6ED0113571C70B150B37E446E319EC54D44CC0CF6A14760953DF4A -D0E1F33A54D240E236AB63B35BA8E071D77776BE5B9312245F2C6E4FDB4312A0 -0D9CF723E7D9A3D8546C4739C00C301A89ABA60A02757AB1A0AC40B24CE6CF12 -5850485B11E16646D7150795EABAEB08364A53161111F46A7BC3423A0D3BEB69 -BF15726C1F8363914945DEEB29CB8766328318AF3B344FD6D77BBB92BD7FD161 -93356493D4D8252AD125708D47C124E44232FB2BF7DD75F87889496DCDB75D03 -F58A57D4122CFC194B75A9E9C4789C9A33C0435FB4ADA16AD4A6191928D1663D -05FB8152C0AA176FBA4755205F8A66713404787070757D3721ED6E6D55A59DF0 -C92BA8F05EC7BE05D0A2E66DE85E75373483EA3BBEE0F0DFC7E2FA5FBAFAB118 -058D095AA71FDFC8AF37E5A98406B64E58BF476C6926725D7EF3C2346CE3F662 -1E5A4A18D966479A37070859014719456EA2C7F23E68E1AB2F25ED3A0C00A18C -DD403506923BC983F89CCA125780DC76A411472E38173BC0DD4CDA7B43E13419 -B5AB0B9A35E77C58BBA12AA4F5C7EBF8A29996B059E4FAE6809565570442AEE5 -D56CBF4407E1CD9A4398B1F3ADFF023F64B230E3D29F526B62D964F5C8DF801F -E94295AD85BD9E1C18E6327977260A871E921C0745CA06A263E335E344686E7D -D6FE3ADB4EE0A7E462F3C00873C3E95D183CCEC71C0E5DC1D2FB310B28FC3611 -67C23DE336C374F72368F4973052B48E39969305791C986E6EE35D0350571860 -3A8ED849712CF21AEF444BA390644E8646CCA16559BA4642A5800827A0DDC453 -7CA0818BC47DF6348A5209A2F0A10CA39840CE6346E89CA0E842BE8692DEF25C -4623A5A0E0B98708B9492E9F564324BB3872D6B953CA59E9F393C477E2AB85EC -C557D333E88C111CF995FB79D9432DC94C2BDB3BFEE13C0D7D1BB920DAFA6158 -8548447AFC65CD5515D5021E0ED7D213B0C08C35BB424AA91885CA023D7AF767 -B83E619B15DFEF5588D2F0564296E14B5A6ACE03751E1016105C51BE76EA5ADB -4167BAED2A8899031FD7BA05C410ADA25ADD94A787EED1A7AE133B0568B1DBA5 -44B41BE013782CFCA3D81E8E8210DD506ADFCE7DC7E792EFEF438221164A7D1B -5E7089F476240C5F94988F081943F24DBF7CC3D1E58CB89E1C0C1624682CC3D8 -C95815ECC9183A4B3E353C7F920B7E64086E01672DAA7C8A81319BAA03C1FBB7 -8E5E84CC5BAE0E107754794C755B7AF00953504094E1A9DF357D51B578259613 -8D26F0BA26AAC459BBEEB90BCC98B865EDD26AA4DF533D6624EDAC762C446B6F -CF9F86DD2D8989D4655775E662B93BF51805EE3CBA0AE2293D95F166E80973CC -82C53042D0249C598B0821E9E7F218BA6114EEC86C158F277934F2651490B723 -7F0D0288560DA5BEBAFDDF243048E590871AD18B3B220EC56549004DF122AA03 -BAAD6971D790BC644369FDBEE74A324083CFA9496C2A333774F06E35299242BC -F4B26578907CC5AD1893613F2B8622CFBB7B55810162EEBFAAEAB2A6D69CB72B -D7859C73843E665125FF450631F32E64F13A6207F368103C7A7318DBAF2560D0 -F1CDD83C3E48CB30C62AF1E0896E1962C655D9ED98E1BB38477C1C60ECDB6B95 -067D3A638AD43EE886338F7AD2D2A574CE6FD2E21F6FCB4220EFEC85ABF8272A -82081CE70E4390A74EC717F1DDD168F4A4A080A79EE2ECE0F98A96871DA4B52F -78441601AF47763C2219F5A167604C32F478D498835EF3A6167936994F7C7139 -3019FF43C97E7978D3CDA641C1E391FEA572D308E759F28DDE2B40B5BC207A4B -C5EB6A93EEE26782016F8B6534420BE4D790A2E1A65B6CDBE9468152230384FD -14E9AE84418A44F94E6825DD7D77D0BB5486DE26A692B3DA96C81FA4440C5D44 -8E7F3CAA9B8DF38F87E09C4D78841F629F78F4E7CC8580CC44E59E5D9AE8B2DE -C0682F793AE7AEC12A8AE688636197E8A08FEB70EFDB6203681A60223B9B0D39 -2DA656E5E99B82130D4BE38D7AFE18568DD30B0CC3C73C1E2914ACE11A65334D -A9F18135E7B86157122CD221C33C62012FFB16D2D2F3473A53BE3E7B9FD4303F -66ADF0B07155C7B9B002EA68C6AC7247EB3CE7D2670A60138049DAA964F86A05 -22983EDA7242E6BEEB90DF61C937399B2CE1061DF1E551CEED4A80D86C2D4649 -C9FF9A1F93E96773CD392478D5B70D5336A03A274E0A6EF44BE8CB2274324142 -706BC2E340DC944339D647961FD7BF29944503B4AFCDC69A706AA6B0F6AB2CB5 -D220A96ACC1EE5E7826F6F75F044224E5260D581AE761AD0C752A06AA03FD935 -FAD65C9EDD4E5505396E331D45DE88F0D1A4303D766ABE0702C17E2A7F53C0EA -96A4DEC5A6B6186F5DBAAB05DD78E38AFE630465BEF0EC66ABA9C1C9232214A9 -795D105C33CF069F6BE20B179F4CC9F484AB63ED25C1212C457DF62CA0D56E20 -608572216F2D4C09010B03A8AA6D287C8F514BEEDC1C912552CC2489858BF4D3 -084882CE4F4B6FB9EE27C0168671E6DA154018ABEAD013C88E1D3EC918371251 -63D95BA0FE20212C20AD3F4DB614EE36B488A3F55D94C1EDFCA8E68E54A1EED4 -7DD168DCCF07C3DDB5E2B499DB5635C5C5056A7438120DB4839427D07F96AB8E -F842E285243E40259F6DF029E27779CCF3D3BD7206B2C341045A5A4AABACC2A5 -91C6830FE05ACDCFDE99046F16F2AC183426ACA4A89FE5F09B7EB2F811BB5FB5 -AF073BDA2886070B2327D582DCBA66B47E8948C3BE05E837BE4B81402A583403 -74FF9E938F0E9DC3B1CB81B93DFD4070F9EBAED40BA570DE8F9A5C2C0A097311 -22A6065139A6580E332473E9410D9F4C734794F79E41D0D437CEC7381919DF6F -A24B170E2BC97A6396A4E3AC3D844AD6E2B8FCE1C6AE97DFC5319F49130C3D6F -AF2541EB2384D5D4CCBEB976846EF8C2165DBF706112BDDDEC9A57D157F5996D -95229FD5C71B885D16B177BAB06B9DF5740A45C2A005778EE879193290419C0A -A4A339029E37E685B8A05B111DDF94AC19B1D85C8E6026E57E3D3B373C08557A -F96E6FE3916695ADFC1F0BF5D558565F42A71C61ACFEFC9026424397F0646642 -7EDAA05794BCCD164A645860B57EAD53CB6899B18C6E9496EA4DAB0A0C272639 -DEBC4FCBA94B3BF123F7771F602E7667C8F56E12429669F2219C7D8E294BE07B -71E88EA62F5616CAAB7C0198E6FF12A348E36B306FE2684A401399431B6A84CF -B46EE4BAA0F4099E65E9AF3B70274EDD6B6524F4FA38C23F9CD5273EEDC8C6C3 -E7312B6E0497C05AD3F3C246638F01387CC11DBCBD287ACF54D8E24759F51415 -35ED64132EF4158F54AB9F4D567482B3057880490F805822F71E7E2C52F7BC38 -8B1F803AC3731064B90E5E97AA3351D17E73DC2FE526CD6C91158636E395867D -C1150FD3BD12493FFFB813AF0D08C8ED0B7418A2CF90BD5B783364358605D075 -5DEA95A9299C0654EFB28E2FE8A41358A0DD124D0314A27558E42ED5F2D74BB7 -056DE04D2CF13B9B804A3CBBA29BC155A3F18B8B48283194C33CE8291677E1EF -0721138F8E0409D49BB99F217607586D2DF00C29A25536E21924B4CF6702CF85 -C02DFBFD2AA4DE3DBED1D2C02E21052A8D10F96629D0D18154923638FE0C48BD -E2DEAF11663E20717EA77A5453686AAA39D6FF7919AF09B1AD956FDBF734F49E -262F3076F62E77BD45122B55A5913902D9F91C4246FC235BA9C0FA4A96994291 -830638949BED423387DA2D455A3C9122484EFF27F5367D1D3DD27D207D973815 -965E1CFF36F43C653ED406F65348671D9FFAF55BA3FC266D438AF473181B7801 -164EA3F04FEC870743195B3F467DE36B3719BAD9BF15A18637A314C887D46673 -445BA3C212749B0A33136FEE9FE2C9A13D62E7ACC96378D257FBE0EB06AD4D4E -D41976AB92AC720DFD33B0677062C32E6F5C992A0324FD26E984B5341A58C190 -D20EC3F1144697D514D9157340A6C9F82E62AD8CFDEE59F6FF86C6250CE33D6B -BB82DDB4F65BEFC6F6D0E4044F7BF307CC346E2FFD191846E3CA288C6F91CB71 -5FDE855FEC5E38816CC635C470BF15263A10A409F0BC4877F7E6D4C223E3564E -E7BB5B320AAA5AAF4F32528F7413BFB97C70FF5E6843E1FE501472129BC9758D -7531BE576C75840CBC4CD3E6D9E5FF52559B68DE6E7827128BB2ED1BAD43F36E -A0CB68C1A147A7093EB02062AC5492DB7EEE08B1BDB187E15339A66269E459BC -67495937B4317AF66A498923322B087ECF47B601C26E253D223A784DB2D204FD -0668BD403A73723848018B7C86B627B9AE0BD9038F567CD5F670CAFC5C4D86FC -ECA211B713ACF8C1370191161CBB6C2592E8B9DBF3471133F2D9A60F15D72F9C -5E5539D59A6A7E124D9A38A6FF6EB7C71990716F88E1888295584F17D49144B2 -B57252D7D87CFB7BE009E0E1AF68C57E2041CB837A1F9DA290FC07240D616876 -CBA29ED23952F977F27ED97503F6C6CB48DA6611E0ED9D90FA865D099740C6CE -8A5DDBB1D6550B208321C365A5104F9ABD66A9238B8A2106AA74CAC58D1163F1 -DC4A62013C0F6DD8A3E8E1A6CC6E553746D570A744863FD8EA705890890AC5BC -2F0A068C740572F045B32289A2AE66CC44A1C13FB8BBD4E1834995731D19B47E -7C2FE360AE79DACB95856B01EE39EB3C7C9EAEB3D47348C47D928BC883B8E760 -6724D80DABC4D736411942BBA8CF08157F21D63C18924282193C5C8E44E09048 -FDCB8DB2E01C8A496FEE2CFC19A3A0EACA508237C8BD988ED6D33D01EB548B14 -61A546886AACDAFB7C8CA69056B1F428D72541D54EBDC4B44A07AA72F7FDB023 -6E0899786D3E0B8FEBB376C085CE6A2D26D003FF8EB0E6D19E277B28C75437BB -1DC93A83A9770813DF2B1B539CF3F3F4549410F7795406151F84A9F6D959AB5D -EEF87E1D2278AF2466B509F351D8466DFB711EE416D9347C339E89DB6C990C51 -A127C2CA8970E639403EEDA875F33BC3685978FD36DCC3AAB9EFC07BBB7837D8 -1F524EB3A143A1548A221A712FE24BAE8C6ADAFC70EB74ABDBC7E418C9027418 -D1F1E50A250C6ADC6D3E826DB7E56F97D7FBF35AE901A79769805DE45469155C -510F692CF5E60A47B540A5C99A3CB05088D23B23BF672F1240E14974C4D8A161 -6FE7FDB940F1D15F808DF49E83FEB633B9B873A42A879F9E609A1847E36CCFFD -B2E6D45D87AF79C7E66D00F37C2932878829DAFFC056CB85B11BAF98B62A6B23 -23102158C9D8695A2809CC38945337139C89BB71AFAECD5549E01B048388158E -73651DDFFE14816A9B86B97F5E60A1B16CB7FD371F4DECA7D0AB0D71EBF57344 -EBAFEF9353A1F5926493C4A0D57BAFE403CFD54F07A6DEAB01D9359FDD4342FA -848E716804EA85D0B31455C4A79D64AF1955ACD5A8E7FA28212F916CFC3858FC -695B9B6FB1B5C9E619F40E86FFAF01E777DD0C8CCD5AB41ED4EFFC98C0286418 -1D2B3953AF74AA92C1AD4B629B234EF90E57BC8C09B521A989FCD7EADC2B346C -5A2F9FC731C2DFEFF083D3906C5A2F623FCC022C25165F6AFED7C70CC6D18818 -9B6D5EF527A884DC1246012EB1BE0C3C2A75D382C7F7834E239AC05F5A8F34F9 -D6B75DDE85754FEA0AC23E90AFFEE791DF1D6BDFEF41EDCF6CAB2D26EF859114 -6E598478A238CE1410AAB7EDA5F7D9CF5DA9582003F1E11DB4870F8376B2B35F -3C798A5CEEC74D5F68A6420C77574467E83C98C856D57D305A8AA0448525B3F4 -52702A7E7189EAADD983210ADE6198E4C5EFA4ACACF7357EBEE2FF84E4077C54 -205DB6339B9ED2B58FACEF3E3B54FCF8ED7138179EF37404C1753502F5EA3EF2 -49BA9FD22A23D38544CFC2D4410CC1EC7F8AE74ABBA02C0299B9AB220AE7D49B -75FAFCD6C1A4C666E03DD43B652BB602E392FD4261634AE7208040771354EA9E -9DCEA0A74697CD3D36F29B517CC1C0EF71DE94B19467C3225011AD28BD98ADBF -DBEDBED41FAFAD5A313F67B251E6CEEFDBC20A570B0B0ACE12DC3A7A7503AF11 -DB96A8ABFBB47DC1BF60B592D836D202BDE1FDB360E2BCB6B6BBEE8D68FA7664 -17F3F162D7C8433E6FF5C8A6A42AACB245CF7238E0938B4D6231ED135452277B -3E88C2F9B52973093BA6C9275CA50D767DA1184DD179CAF990457611ED2F183F -6B68488718BE003D4E22279CA083B77FFD0D083AD0C0D29AFCE5EFCF434FF5D5 -30F62CA60BD952D3F1B0539E1457BAAC49193B2EDA92E270DEA430BB2710A34B -F4D91107E98602532D150D4B3AEFB5968469EDE7A8E17C7EA3AAB06BED7E473E -8FEDB499F7D99E41C4FD11D962307B3A7C6E228A5B57654CA5D4509000104972 -AE35441138372268FD6F77A08EE595182B7BB47090FD9EB7893B2B0B4F210060 -74B9B81878ACADC8ABDACA9A6A158A1822321BEFC575F19E4FF1845F032F4C87 -B252BD481144876D939C2C26C3CE54686E03F9470C2BEF6DC982970B528892E8 -D718EE5A1D3615BB85E7FB0D38AD6E5C1D52DA46C72229704F553DB1D45EE5E0 -113664BCB65B0DB9FFBC2ACCA79FDAA23F0DE91C82EB6978354538EE2FE565AA -070FD4A2A66A0E0490A7D994BC2018452BF46C131B5956D66775EECE6857C6F1 -BE92CD21C2D97614B1C31200B2364F37676C4AB558980D406BA3B820C163B994 -238F9605E5B2AF189543B0341DA0D7AB8B979BD982345E9F69C83C0464EB46DF -8D440E65BB26A74EA98D75E4354B5A0AC9CABF2B414EAD2B63AB479F0EB17C57 -A88AB81352C6B27FD0B1D465328E6638972E7CABC15581DD64AE5360D65025DD -F45E57AB8B9C06534691EE5EE082057C062B934AB9AA7E4189861C86995E0918 -31060CEFABEE66454515E542C69F4B5CE675F22D2FB225C9F56E4A564C0AAA39 -C36DD9F926931EB6F850AE93094E122ADE1C74E18C84E9614AB6BE41C51539BD -3BD3C9FDCFAE15C464B2C68077E7882F8BE3588397B34C5DCE72D58E59C77DC3 -7D8C5D5E8F816E3C84D0BFFE0EE9EAEF89D11969589CCA6314394B9C218C4565 -9FAAE9D02C589C26768912CDDADF98D525E3090F54BDDACD02F47F49666F3C01 -D33CDBBB3D0F0CC490992CAF4DE2207B6D95298FBCE9C6DE54C1B04356BBC506 -36FD340A0FCB785E146CEF2F08A875DDACA3FFADB706B8ED1A2462BDD3D93C10 -35A5FE7646FE01E1808D9394DA6EF21E998512DF86944076AFC39F9FACE57780 -0290894FF992405E3D713CDE808DE743C3C0F99BE06C37D3F3E20FEB3BEDE452 -8A1F1FE4E652527330852906056FF3659B5A789ADB57601D96958BB850403203 -424074F11B7CCBE33234B3C5CB2BC51CB609BE5123259B6A11EF12571AD37584 -82523115729CE32EB5CAF8087866460C331E27670BD134B5F36D0D648797DC75 -C5BDF9C3DD41A6427E16AF9117F6012B974D2061E74633D9740C39B340121D27 -32FC8BAA96F2F91DC2D936B93B8CFA951C7039AAEEC5C15ED8ACE5EE05AD7BDD -6B5B915C15ADA0492DF77F582283B68C268CFDC293871A057C3EBFD06752C963 -307ED6781E97B2723229F5988BBBE7FFA02E4E0137D4A2F2E4A856BBD7505880 -8DA0F15C9DBF54C1A2EEF8A12E6263CE2CDDBBB7D39BC6B56639B2FD84CC64F7 -2B02FD3549EBAAF4EA5E640BC04086B6D8EAC9690786FD2DFB45F6C169D907FF -2E368AED562C4B58E59D2AC1641C746973ECEF1BA237018684C52EA1829E3026 -EDF2B94D194F2EB01C21C7784AEAEBC68A88258933DEC7998ED57BCE7A3CA389 -B755359855FF644FDCE1A8805E420D84586FBA00CFA2E15B2AD5B25FD01AC3E7 -87504B45DA2BDB6037BD9BD19BBBF8A62F525B21E8FCF3DF0A4AED94FC10BB36 -673835BE6E6D503531803072C06D4F5D6F0083BA2AC5E54FC5F42604E8B7B521 -48655715E14A775A55602334A0E2835E47E3AD54649BB1C775C2DDA9B46663A1 -0A1D032568E44F143738B77F1944EDAB6FE2136024AEE7DE4804E022488B78E5 -95F98D3023824362508A9BF922544EE42F679522EB43024DFE9E231EC6A63670 -A05B1B2EFEE6EC7AA354F26FB4CE5886A5B9E9D6416D6C0A0EA5193904F6C967 -1B97D06C354B49DBD53A9DACA30F54A0C9FA8BFDBE5D10244C98D59C43757397 -D5759B31C799B145F87C8175038E9CE1F6455C74CB061F4A21A8B27D8E2C650C -41AC9DB396C84B9C6B4E514542315ED29BD1148115A8878FF9EC9E428FC03449 -C7D90D83E6FE5E5A224D8A7FC1E42560DE255271AA7BEC2EDC7510068E843F5D -F6269DAFA11CF63A6478448FA083E210778EFCC4AD19BB74593F38933D21C3DB -EF341229C4973DCA2462BCDF1CAE657A76474351C51EB8AEEF085FD10F751D18 -A995DF0871FF84F68829BFB9914A4DD657C8249A2D87F23D36275FEBE7FADA31 -89159301DB1869537D0ABCB8E507537BF3332DFE67DE402058BB1EA70DA22281 -2628E22447C60D83740D2E35D3843C4B9720C7958D02898BA11B419B25C0A3AE -C3B91799F7D28023429C902651E7FEE4A7C78F60450E6FAD5BD1EE7F2401EAF5 -2A61D4AB64B1364844F1C0C4E005B4911FC11FE12DBFDC321D7F9688DA3513BF -DE6E2185AB008870C2800BF4888217CA2E4BD9DECF859E3748ABE5A1B9B03C8E -29E6E51AE29F3D26F36CA8852848A3C759D0518872B95440914969A15447C88E -FCB2429F239350A68AB50712AADE557A4FFB7DF3DD51D5E57EA44893C1FF71A2 -092281289B3A059B5214EE4BF8EE08AE16A5CF4806D9D044861D958B4FE6FA4B -D52E91FFD3C3485848D751F288FEB97120E02A946C21BA9DD27B75F5CC646A05 -8967EBD266B751F46143C62B2FB301628AAE6F97257030BDBEF911697D445363 -7F674FB0D8B4B05C814B5C344768FE720E8B870CE7BE5413C291254D207E6777 -20E1A9661D4A325DE30CCD9964ABB17E76BA2CB37022185C9B577C5996975BF8 -8477831B3810AF7B335EF33D109D149758B0BA9AF773AD6D524DB6054321A98D -D7596A881EDF2A73D8C9CC68D7ABCF32690D5450244A4804FB4564570BCDF76A -D2BAE2F30514615310CC0A7F8281AD3B27189EE97420F41D64C5F71AD5F1C980 -53AB5917380E3771E2A76DDD7050A2F226952A07F6C11D5A90EDFEC8D40A3AD4 -C07765F164110E4C71FA123C0B455113CD51C0841EF4B027DAE1408A1EE33E98 -BAA60FF801E55C8A94755292F8B83D768557753D517A34B3FBDFF95665AA1C1B -14C073315F58E6C304C40294BF19DA76B18E82EDBF1E70CAFEB6664179A51260 -559E6A8552887FFF822B8BB3ADF6447C0C0C163914C3B0B6DFDE87BBE6AC3D38 -EC68A27F13B9D8A9542123B2D74E96CB003D07F1BB91377C9AAD32CB42CCAF18 -FD95135D4B355572F2C1C64A9C5BF8A4334BE3008D181000501101EFEA328F16 -F38645A68F72285FB202A498833E73FC9D65CABDA92489081123FADE235CF7B7 -7E906E521C29918DFBE02DDE3BEFECB2D38F3448A7884CED34B147CD3582F201 -0883FFBF38C0927D714FF22C22D47A9028760F1BC440DA2530FF24994CF6678F -FC76DFFBB2FE5412AE3802442DB9A4C99C65E4B89CFB7CAA3060C5BCAB56BD75 -4D5E14E67B5F09E8BA3D47D71DC310073D5B93F5EDB4AC0505C3A48C94A51EE9 -7E1C3F69AE1F734651110B59B2095C1C4F8C6559843E3956DD1846F0AB98A501 -4C865B91A0C801504148CC6ABAD09B560FF43A19CA1ED82FA8454CA9A51A1E44 -7A81602F707C2B7635474EBD3BE7482F5C1B63D65353238722BF92E977593728 -ABA75558C13DDEE16D6C470F49AE09F5453A8AA49852B972876970EAA010D396 -C1ED2379CA5DEE24465E2BED37C3322FE53BF5C2E24247311BF6C38A2B8B8D15 -77857700034915614AB9DAD51ABFCD71BCE13F80BAD4BEEB39C360791EC17AF6 -1A6D7D21716704D42A874EA445CA63D4B1D22ACA0D7EEC405698A0D32602C27A -ACCAAA348FEB58A6249BF9C544B624AF118CF55F55BB75DAE7D87335B6A1987D -D0C45F9341BC6337EB36B58761746F479864BBCEE181096F9B42FC8FA5C6144D -B9D3C06E8A61700E6E2712C90EE2C1EAEFB39D1B765B6494754426EA483F3564 -4B63FCB2FD1080DE0FF9C5EB96BD906184168036956F6F74709A45DF253171FF -047621FE27EA372FF9EE8396FE040CE25DABF5F9861632EB43F94C969289459A -85F5D490EC2ECEF64F572DA1A892A223BD7867EFDE65E4DB2BA92099F58328C8 -237E6EB9315F6F35234A5B89951763D3EABA3B69F910C1347D838C1D276E83D8 -B8D060A13466C0F730D95B897A51042E9DD021B76F0232AE4C4EF2B993C832DE -72747BEC811D9E416AF2D3A08198A473A1E18F69869A819689D26B9D667A3A45 -EAD0031FF9EFAD769AD8AF598DA6A3BA56CFA517C30BB1E58CA57C0AC5721F0D -9982F330F2A6BF0A9A0064F4AB4A42D6C0157A9A2BAD2A9588F32AFE72BB716D -33AEE439D8971648433CE1AD7B4F47BC7E4EA2A61C52FF1611FE70F00B34607F -2DC19011752FB8E63264E95BC5B8AE3C9B42D8E9DFA2D2D182D9D31FD81968AE -968281FEB160A4691BF0B57B708F288414C067503B63997E958F4D0A6DF057F3 -476F31839CF860061A580DEFD65100F6A04AC569667DF41D40393271085FE76C -4F264A88FAA2FC341C9A66D2343C207AE56BD44D571663CFAE2165378F8EC266 -B273B925FC56D0111F701DDFDA998E2D67BA7FF4189E6AD1B08A22EE0AC26F25 -D25DA4082E186AA4447AC28ACF7D6635D389BE16A4980E6903FB5D70A291F4DA -0DEDF3D2FB17496A2E782E28BFB99436F5E890BEA8E6B97A92390A20B06AE165 -8A5516E42B5B05506031B9C3BAA1D40BFD66CD226388A8B57D1F26C8754ED87B -52C2EAD7629AFBDAD01CF04BD83298755D2B6D0FB7378364DDD5CB7C12559A90 -DB410EBACEE4FC2784BFDEC69C2FBE582CB9A529C0FF4C1EB7C97E7E8BDBC700 -902B137211C45E503CC2F22A6A6A8E4AD7A4577AB8A0BA3EF8248F6893CB40C8 -79ECE86F4DEB01B64FBFBBD4EE77FCA0B084DE7847C92C41CFCF098FDCB1E6FF -0BD06E2AB02B8BB1E2654770B608FCB56C750BB0DFCBD1D45DAFE873B43DBFEA -476CD31AB511863042 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -TeXDict begin 40258437 52099151 1000 8000 8000 (pedigree.dvi) -@start /Fa 190[671 65[{}1 774.872 /CMTI7 rf /Fb 135[492 -120[{}1 1106.96 /CMSY10 rf /Fc 599 830 1[553 799 2[892 -615 615 2[584 553 492 615 615 553 615 738 615 615 615 -615 492 922 492 615 492 553 553 553 11[922 830 799 799 -753 861 861 1[1014 861 861 1[861 3[861 692 1[784 830 -128[523 3[307 1[553 553 553 553 553 553 553 553 553 553 -553 307 1[307 44[{ T2AEncoding ReEncodeFont }57 1106.96 -/SFRM1000 rf /Fd 182[483 14[354 7[636 636 49[{ - T2AEncoding ReEncodeFont }4 1106.96 /SFBX1000 rf /Fe -182[370 14[284 7[512 512 49[{ T2AEncoding ReEncodeFont }4 -996.264 /SFRM0900 rf /Ff 477 656 1[441 4[489 4[441 1[489 -1[441 489 1[489 1[489 489 2[393 1[393 441 441 441 14[632 -1[677 3[677 2[677 3[677 3[653 192[{ T2AEncoding ReEncodeFont }22 -774.872 /SFRM0700 rf /Fg 523 523 1[523 4[523 523 2[523 -523 523 523 523 523 523 523 523 1[523 523 523 523 523 -523 523 523 523 523 11[523 523 1[523 523 523 523 1[523 -523 523 1[523 3[523 523 2[523 67[523 40[523 2[523 2[523 -1[523 4[523 12[523 523 1[523 523 523 523 523 523 523 -523 523 46[{ T2AEncoding ReEncodeFont }54 996.264 /SFTT0900 -rf /Fh 219[581 36[{}1 1106.96 /CMSLTT10 rf /Fi 141[321 -1[486 6[224 1[470 1[418 486 100[{}6 885.568 /CMSS8 rf -/Fj 134[581 581 581 581 581 581 581 581 1[581 581 581 -581 581 581 581 581 581 581 581 581 581 581 581 581 8[581 -581 2[581 581 3[581 581 581 581 2[581 2[581 1[581 2[581 -1[581 1[581 1[581 2[581 7[581 1[581 581 581 2[581 581 -581 3[581 581 34[{}49 1106.96 /CMITT10 rf /Fk 139[470 -14[470 470 470 19[470 1[470 4[470 2[470 21[470 1[470 -8[470 36[{}11 885.568 /CMTT8 rf /Fl 134[497 497 680 497 -523 366 371 367 1[523 470 523 784 261 497 1[261 523 470 -288 418 523 418 523 470 3[261 1[261 2[705 2[705 680 523 -3[732 9[640 9[261 6[470 1[470 470 2[261 314 261 31[523 -12[{}39 885.568 /CMR8 rf /Fm 202[406 406 406 406 406 -49[{}5 664.176 /CMR6 rf /Fn 133[453 2[736 509 594 368 -453 467 1[566 566 622 905 283 509 1[339 566 509 339 509 -566 509 509 566 8[823 1[823 1[792 622 2[751 2[993 694 -1[581 1[823 856 1[751 836 792 1[823 6[339 11[339 396 -339 31[622 12[{}41 1106.96 /CMTI10 rf /Fo 138[572 400 -1[378 1[572 1[572 879 264 541 1[264 1[553 1[492 572 492 -572 532 16[707 26[553 7[369 45[{}18 1106.96 /CMSS10 rf -/Fp 134[465 465 632 1[489 346 351 346 1[489 441 489 727 -251 465 1[251 489 441 274 394 489 394 489 441 13[489 -643 1[595 1[653 796 547 1[452 2[685 2[666 1[619 653 11[441 -441 441 441 441 49[{}38 774.872 /CMR7 rf /Fq 130[581 -581 581 581 581 581 581 581 581 581 581 581 581 581 581 -581 581 581 581 1[581 581 581 581 581 581 581 581 581 -1[581 1[581 581 581 1[581 581 581 581 1[581 581 2[581 -581 581 581 581 2[581 581 1[581 581 581 581 581 581 581 -2[581 581 581 581 581 581 2[581 2[581 581 581 581 581 -581 3[581 581 581 2[581 581 581 34[{}71 1106.96 /CMTT10 -rf /Fr 138[1435 1004 1019 1055 1[1435 1291 1435 2152 -717 2[717 1435 1291 1[1178 1[1148 1[1256 11[1985 7[2450 -8[1980 2[1950 65[{}19 2295.84 /CMBX12 rf /Fs 134[672 -672 919 1[707 495 502 524 1[707 636 707 1061 354 672 -1[354 707 636 389 583 707 566 707 619 10[962 979 886 -707 955 1[870 956 996 1208 3[483 2[801 1[976 919 906 -962 6[354 636 636 636 636 636 636 636 636 636 636 35[707 -12[{}49 1106.96 /CMBX10 rf /Ft 134[789 789 1079 789 830 -581 589 610 789 830 747 830 1245 415 2[415 830 747 457 -682 830 664 830 726 8[1128 1544 1128 1148 1039 830 1115 -1[1021 1122 1[1418 898 1170 1[557 2[939 981 1145 1079 -1[1128 7[747 747 747 747 747 747 747 747 747 1[747 415 -498 32[830 12[{}54 1328.35 /CMBX12 rf /Fu 136[1295 1[996 -697 707 732 2[897 996 1494 498 946 1[498 996 897 548 -818 996 797 996 872 11[1378 1247 996 1338 1[1225 2[1701 -1077 2[668 2[1127 2[1295 1[1354 7[897 897 897 897 897 -897 897 897 897 897 35[996 12[{}41 1594.02 /CMBX12 rf -/Fv 132[553 492 584 584 799 584 615 430 437 434 584 615 -553 615 922 307 584 338 307 615 553 338 492 615 492 615 -553 2[553 307 553 307 676 830 830 1138 830 830 799 615 -815 861 753 861 830 1015 692 861 569 400 830 869 723 -753 846 799 784 830 1[523 3[307 307 553 553 553 553 553 -553 553 553 553 553 553 307 369 307 2[430 430 307 1[922 -553 922 553 8[553 9[922 922 1[615 646 11[{}86 1106.96 -/CMR10 rf /Fw 131[523 1[523 523 523 523 523 523 523 523 -523 523 523 523 523 523 523 523 1[523 523 523 523 523 -523 523 523 523 8[523 3[523 523 523 1[523 523 523 523 -523 523 523 523 523 523 523 523 523 523 523 523 7[523 -523 523 523 523 523 523 523 523 523 523 523 523 523 8[523 -35[{}61 996.264 /CMTT9 rf /Fx 134[540 540 740 540 569 -398 404 401 540 569 512 569 853 284 540 1[284 569 512 -313 455 569 455 569 512 8[768 1[768 1[740 10[370 768 -2[697 10[284 4[512 512 512 512 512 2[284 341 284 31[569 -12[{}40 996.264 /CMR9 rf /Fy 139[458 465 486 14[524 655 -573 31[890 65[{}7 996.264 /CMBX9 rf /Fz 137[684 1[684 -684 684 2[684 684 1[684 684 1[684 3[684 2[684 33[684 -17[684 46[{}13 1328.35 /CMTT12 rf /FA 134[686 2[686 1[506 -513 506 2[650 723 1084 361 686 1[361 723 2[578 723 578 -1[650 10[975 8[1192 813 9[921 975 14[650 650 650 3[361 -44[{}25 1328.35 /CMR12 rf /FB 139[984 984 984 1[984 8[984 -2[984 54[984 45[{}7 1912.83 /CMTT12 rf /FC 138[977 677 -687 677 1[977 877 977 1477 478 2[478 977 877 1[777 977 -777 1[877 9[1826 1[1326 4[1202 2[1626 6[1152 1[1352 1277 -1[1326 65[{}24 1912.83 /CMR17 rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 8000dpi -TeXDict begin -%%BeginPaperSize: Letter -/setpagedevice where -{ pop << /PageSize [612 792] >> setpagedevice } -{ /letter where { pop letter } if } -ifelse -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 0 0 a -SDict begin [/Producer (dvips + Distiller)/Title ()/Subject ()/Creator -(LaTeX with hyperref package)/Author ()/Keywords () /DOCINFO pdfmark -end - 0 0 a 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.1) cvn /DEST pdfmark end - 6752 1660 a Black 0 TeXcolorgray Black 6863 5867 -a -tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end - 6863 5867 a 6863 5867 a -tx@Dict begin gsave STV CP T /ps@refangle 0. def grestore end - 6863 5867 a 6863 5867 a -tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end - 6863 -5867 a 0 TeXcolorgray 6863 5867 a -SDict begin [/Count -4/Dest (part.1) cvn/Title (\376\377\000I\000\040\000U\000s\000e\000r\000\040\000M\000a\000n\000u\000a\000l) -/OUT pdfmark end - 6863 5867 a 6863 5867 -a -SDict begin [/Count -0/Dest (section.1) cvn/Title (\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -3/Dest (section.2) cvn/Title (\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.2.1) cvn/Title (\376\377\000S\000y\000s\000t\000e\000m\000\040\000R\000e\000q\000u\000i\000r\000e\000m\000e\000n\000t\000s) -/OUT pdfmark end - 6863 -5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.2.2) cvn/Title (\376\377\000U\000n\000i\000x\000/\000L\000i\000n\000u\000x\000\040\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.2.3) cvn/Title (\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n\000\040\000i\000n\000\040\000O\000t\000h\000e\000r\000\040\000S\000y\000s\000t\000e\000m\000s) -/OUT pdfmark end - 6863 5867 -a 6863 5867 a -SDict begin [/Count -8/Dest (section.3) cvn/Title (\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.3.1) cvn/Title (\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000s\000\040\000a\000n\000d\000\040\000L\000o\000c\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000F\000i\000l\000e) -/OUT pdfmark end - 6863 5867 a 6863 -5867 a -SDict begin [/Count -0/Dest (subsection.3.2) cvn/Title (\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000F\000i\000l\000e\000\040\000F\000o\000r\000m\000a\000t) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.3.3) cvn/Title (\376\377\000T\000e\000X\000\040\000O\000u\000t\000p\000u\000t\000\040\000S\000e\000t\000u\000p) -/OUT pdfmark end - 6863 5867 a 6863 5867 -a -SDict begin [/Count -0/Dest (subsection.3.4) cvn/Title (\376\377\000W\000h\000a\000t\000\040\000t\000o\000\040\000P\000r\000i\000n\000t) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.3.5) cvn/Title (\376\377\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000a\000n\000d\000\040\000E\000n\000c\000o\000d\000i\000n\000g) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.3.6) cvn/Title (\376\377\000F\000o\000n\000t\000s) -/OUT pdfmark end - 6863 -5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.3.7) cvn/Title (\376\377\000L\000e\000n\000g\000t\000h\000s) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.3.8) cvn/Title (\376\377\000S\000c\000a\000l\000i\000n\000g\000\040\000a\000n\000d\000\040\000R\000o\000t\000a\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 -a 6863 5867 a -SDict begin [/Count -8/Dest (section.4) cvn/Title (\376\377\000R\000u\000n\000n\000i\000n\000g\000\040\000t\000h\000e\000\040\000P\000r\000o\000g\000r\000a\000m) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.4.1) cvn/Title (\376\377\000P\000r\000o\000g\000r\000a\000m\000\040\000I\000n\000v\000o\000c\000a\000t\000i\000o\000n\000\040\000A\000n\000d\000\040\000O\000p\000t\000i\000o\000n\000s) -/OUT pdfmark end - 6863 5867 a 6863 -5867 a -SDict begin [/Count -0/Dest (subsection.4.2) cvn/Title (\376\377\000D\000a\000t\000a\000\040\000F\000i\000l\000e) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.4.3) cvn/Title (\376\377\000T\000w\000i\000n\000s) -/OUT pdfmark end - 6863 5867 a 6863 5867 -a -SDict begin [/Count -0/Dest (subsection.4.4) cvn/Title (\376\377\000A\000b\000o\000r\000t\000i\000o\000n\000s) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.4.5) cvn/Title (\376\377\000C\000h\000i\000l\000d\000l\000e\000s\000s\000n\000e\000s\000s\000\040\000a\000n\000d\000\040\000I\000n\000f\000e\000r\000t\000i\000l\000i\000t\000y) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.4.6) cvn/Title (\376\377\000O\000r\000d\000e\000r\000i\000n\000g\000\040\000S\000i\000b\000l\000i\000n\000g\000s\000\040\000a\000n\000d\000\040\000M\000a\000r\000r\000i\000a\000g\000e\000\040\000P\000a\000r\000t\000n\000e\000r\000s) -/OUT pdfmark end - 6863 -5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.4.7) cvn/Title (\376\377\000C\000o\000n\000s\000a\000n\000g\000u\000i\000n\000i\000c\000\040\000U\000n\000i\000o\000n\000s) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (subsection.4.8) cvn/Title (\376\377\000L\000a\000n\000g\000u\000a\000g\000e\000-\000D\000e\000p\000e\000n\000d\000e\000n\000t\000\040\000K\000e\000y\000w\000o\000r\000d\000s) -/OUT pdfmark end - 6863 5867 -a 6863 5867 a -SDict begin [/Count -6/Dest (part.2) cvn/Title (\376\377\000I\000I\000\040\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (section.5) cvn/Title (\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 -5867 a -SDict begin [/Count -0/Dest (section.6) cvn/Title (\376\377\000M\000a\000i\000n\000\040\000A\000l\000g\000o\000r\000i\000t\000h\000m) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (section.7) cvn/Title (\376\377\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000f\000o\000r\000\040\000S\000o\000r\000t\000i\000n\000g\000\040\000S\000i\000b\000l\000i\000n\000g\000s\000\040\000a\000n\000d\000\040\000M\000a\000r\000r\000i\000a\000g\000e\000\040\000P\000a\000r\000t\000n\000e\000r\000s) -/OUT pdfmark end - 6863 5867 a 6863 5867 -a -SDict begin [/Count -0/Dest (section.8) cvn/Title (\376\377\000M\000o\000d\000i\000f\000i\000c\000a\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000C\000o\000n\000s\000a\000n\000g\000u\000n\000i\000c\000\040\000U\000n\000i\000o\000n\000s) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (section.9) cvn/Title (\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n) -/OUT pdfmark end - 6863 5867 a 6863 5867 a -SDict begin [/Count -0/Dest (section.10) cvn/Title (\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000e\000m\000e\000n\000t\000s) -/OUT pdfmark end - 6863 -5867 a 6863 5867 a -SDict begin [/PageMode /UseOutlines/Page 1/View [/Fit] /DOCVIEW pdfmark -end - 6863 5867 a 6863 5867 a -SDict begin [ {Catalog}<<>> /PUT pdfmark end - 6863 5867 -a 6863 5867 a -SDict begin H.S end - 6863 5867 a 6863 5867 a -SDict begin 12 H.A end - 6863 5867 a 6863 -5867 a -SDict begin [/View [/XYZ H.V]/Dest (Doc-Start) cvn /DEST pdfmark end - 6863 5867 a 0 TeXcolorgray 0 TeXcolorgray 6953 -11623 a FC(A)578 b(Program)g(F)-150 b(or)578 b(Automatic)h(P)-50 -b(edigree)579 b(Construction)19726 14058 y(With)e FB(pst-)55 -b(pdgr)10482 16494 y FC(User)579 b(Man)-50 b(ual)578 -b(and)g(Algorithm)g(Description)9878 19704 y FA(Boris)434 -b(V)-108 b(eytsman,)434 b Fz(borisv@lk.net)3023 b FA(Leila)434 -b(Akhmadeev)-72 b(a)22635 22309 y(Marc)-36 b(h)433 b(2012)p -0 TeXcolorgray 0 TeXcolorgray 23703 26294 a Fy(Abstract)p -0 TeXcolorgray 0 TeXcolorgray 11166 28029 a Fx(The)256 -b(set)h(of)f(macros)g(in)h Fw(pst-)55 b(pdgr)256 b Fx(pac)-28 -b(k)-57 b(age)257 b(allo)-28 b(ws)256 b(to)g(t)-28 b(yp)28 -b(eset)258 b(complex)g(p)28 b(edi-)9631 29247 y(grees.)447 -b(Ho)-28 b(w)g(ev)g(er,)322 b(a)c(man)-28 b(ual)317 b(placemen)-28 -b(t)319 b(of)f(p)28 b(edigree)319 b(sym)-28 b(b)28 b(ols)318 -b(on)g(a)f(can)-28 b(v)-57 b(as)318 b(is)g(a)9631 30464 -y(time-consuming)289 b(task.)437 b(This)287 b(program)f(pro)28 -b(duces)288 b(T)30702 30679 y(E)31270 30464 y(X)f(\014les)h(from)f -(spreadsheets)9631 31682 y(with)304 b(the)h(data)f(on)g(inheritance)i -(for)e(a)g(large)h(class)f(of)g(p)28 b(edigrees.)445 -b(It)304 b(has)g(a)h(simple)9631 32900 y(in)-28 b(terface)341 -b(and)g(can)g(b)28 b(e)342 b(used)g(for)e(quite)j(complex)g(p)28 -b(edigrees.)p 0 TeXcolorgray 0 TeXcolorgray 28320 45650 -a -tx@Dict begin { -128.03734 51.21501 } PutCoor PutBegin end - 28320 45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GF1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial -28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 a Fx(I:1)28320 -45650 y -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin { 0.0 51.21501 } PutCoor PutBegin end - 28320 45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GF2 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28320 45650 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 a Fx(I:3)28320 45650 y -tx@Dict begin PutEnd end - 28320 -45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { 85.35823 51.21501 } PutCoor PutBegin end - 28320 -45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GM2 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a -28498 46331 a Fx(I:4)28320 45650 y -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { 42.67911 51.21501 } PutCoor PutBegin end - 28320 45650 a 28320 -45650 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@GF2_m_GM2 10 {InitPnode -} /NodeScale {} def NewNode end end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin { -85.35823 51.21501 } PutCoor PutBegin end - 28320 45650 a 28320 45650 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@GF1_m_GM1 10 {InitPnode -} /NodeScale {} def NewNode end end - 28320 45650 a 28320 -45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { -42.67911 51.21501 } PutCoor PutBegin end - 28320 45650 a 27533 -45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GM1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray 0.0 7.11317 moveto -0.0 -7.11317 L 0 setlinejoin 0 setlinecap stroke end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a -28498 46331 a Fx(I:2)28320 45650 y -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 28320 45650 a 28320 -45650 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@F1_m_M1 10 {InitPnode -} /NodeScale {} def NewNode end end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin { -106.69778 0.0 } PutCoor PutBegin end - 28320 45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray /DS 2.0 2. CLW mul -add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0 0.0] FontDot -/Dot { moveto gsave 1. 1. scale (b) show grestore } bind def 0.0 -0.0 Dot end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a -28498 46331 a Fx(I)g(I:1)28320 45650 y -tx@Dict begin PutEnd end - 28320 45650 a -28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { 42.67911 0.0 } PutCoor PutBegin end - 28320 45650 -a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@M1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 -a Fx(I)g(I:3)28320 45650 y -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 -a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { -64.01866 0.0 } PutCoor PutBegin end - 28320 45650 a 27533 45650 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@F1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - -@endspecial -28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 a Fx(I)g(I:2)28320 -45650 y -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin { 0.0 -51.21501 } PutCoor PutBegin end - 28320 45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial 28320 45650 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 a Fx(I)g(I)g(I:3)28320 45650 -y -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 -a -tx@Dict begin { 42.67911 -51.21501 } PutCoor PutBegin end - 28320 45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S2 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28320 45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a -28498 46331 a Fx(I)g(I)g(I:4)28320 45650 y -tx@Dict begin PutEnd end - 28320 45650 -a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin { -42.67911 -51.21501 } PutCoor PutBegin end - 28320 45650 -a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@P 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28320 -45650 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 a Fx(I)g(I)g(I:2)28320 -45650 y -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 -45650 a -tx@Dict begin { -106.69778 -51.21501 } PutCoor PutBegin end - 28320 45650 a 27533 45650 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 27533 45650 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial 28320 45650 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28320 45650 a 28498 46331 a Fx(I)g(I)g(I:1)28320 45650 -y -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 a -tx@Dict begin PutEnd end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@M1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 28320 45650 a 28320 45650 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@GM2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@GF2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28320 45650 a 28320 45650 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@A1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@F1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 28320 45650 a 28320 45650 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@GM1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@GF1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28320 45650 a 28320 45650 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@P InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28320 45650 a 28320 45650 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@M1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 28320 45650 a 28320 45650 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@F1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 28320 45650 a 28320 45650 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 25.60728 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28320 45650 a 0 TeXcolorgray 25681 70071 a Fv(1)p 0 -TeXcolorgray eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.2) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 6974 a -SDict begin H.S end - 6863 6974 a 6863 6974 a -SDict begin 18 H.A end - 6863 6974 a 6863 -6974 a -SDict begin [/View [/XYZ H.V]/Dest (section*.1) cvn /DEST pdfmark end - 6863 6974 a Fu(Con)-50 b(ten)g(ts)p 0 TeXcolorgray -6863 10793 a -SDict begin H.S end - 6863 10793 a Ft(I)1494 b(User)499 b(Man)-42 -b(ual)17345 10793 y -SDict begin 14 H.L end - 17345 10793 a 17345 10793 a -SDict begin [/Subtype /Link/Dest (part.1) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 17345 -10793 a 0 TeXcolorgray 26961 w Ft(4)p 0 TeXcolorgray -6863 13228 a -SDict begin H.S end - 6863 13228 a Fs(1)1025 b(In)-35 b(tro)35 -b(duction)15541 13228 y -SDict begin 12 H.L end - 15541 13228 a 15541 13228 a -SDict begin [/Subtype /Link/Dest (section.1) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 15541 -13228 a 0 TeXcolorgray 28876 w Fs(4)p 0 TeXcolorgray -6863 15663 a -SDict begin H.S end - 6863 15663 a Fs(2)1025 b(Installation)14849 -15663 y -SDict begin 12 H.L end - 14849 15663 a 14849 15663 a -SDict begin [/Subtype /Link/Dest (section.2) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 14849 15663 a 0 TeXcolorgray -29568 w Fs(4)p 0 TeXcolorgray 8524 16992 a -SDict begin H.S end - 8524 16992 -a Fv(2.1)1133 b(System)369 b(Requiremen)-31 b(ts)21523 -16992 y -SDict begin 12 H.L end - 21523 16992 a 21523 16992 a -SDict begin [/Subtype /Link/Dest (subsection.2.1) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 21523 16992 a 0 TeXcolorgray -1114 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f -(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1754 w(4)p 0 TeXcolorgray 0 TeXcolorgray 8524 18320 a -SDict begin H.S end - -8524 18320 a Fv(2.2)1133 b(Unix/Lin)-31 b(ux)371 b(Installation)22619 -18320 y -SDict begin 12 H.L end - 22619 18320 a 22619 18320 a -SDict begin [/Subtype /Link/Dest (subsection.2.2) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 22619 18320 a 0 TeXcolorgray -879 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1754 -w(4)p 0 TeXcolorgray 0 TeXcolorgray 8524 19649 a -SDict begin H.S end - 8524 -19649 a Fv(2.3)1133 b(Installation)372 b(in)d(Other)g(Systems)25358 -19649 y -SDict begin 12 H.L end - 25358 19649 a 25358 19649 a -SDict begin [/Subtype /Link/Dest (subsection.2.3) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 25358 19649 a 0 TeXcolorgray -723 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1754 w(5)p 0 TeXcolorgray -0 TeXcolorgray 6863 22084 a -SDict begin H.S end - 6863 22084 a Fs(3)1025 b(Con\014guration) -16171 22084 y -SDict begin 12 H.L end - 16171 22084 a 16171 22084 a -SDict begin [/Subtype /Link/Dest (section.3) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 16171 22084 -a 0 TeXcolorgray 28246 w Fs(5)p 0 TeXcolorgray 8524 23412 -a -SDict begin H.S end - 8524 23412 a Fv(3.1)1133 b(Con\014guration)371 b(V)-92 -b(ariables)371 b(and)e(Lo)31 b(cation)371 b(of)f(Con\014guration)h -(File)39742 23412 y -SDict begin 12 H.L end - 39742 23412 a 39742 23412 a -SDict begin [/Subtype /Link/Dest (subsection.3.1) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 39742 -23412 a 0 TeXcolorgray 975 w Fv(.)554 b(.)g(.)p 0 TeXcolorgray -1754 w(5)p 0 TeXcolorgray 0 TeXcolorgray 8524 24741 a -SDict begin H.S end - -8524 24741 a Fv(3.2)1133 b(Con\014guration)371 b(File)f(F)-92 -b(ormat)23805 24741 y -SDict begin 12 H.L end - 23805 24741 a 23805 24741 a -SDict begin [/Subtype /Link/Dest (subsection.3.2) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 23805 -24741 a 0 TeXcolorgray 554 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1754 w(6)p 0 TeXcolorgray 0 TeXcolorgray -8524 26069 a -SDict begin H.S end - 8524 26069 a Fv(3.3)1133 b(T)11684 26307 -y(E)12300 26069 y(X)369 b(Output)h(Setup)20202 26069 -y -SDict begin 12 H.L end - 20202 26069 a 20202 26069 a -SDict begin [/Subtype /Link/Dest (subsection.3.3) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 20202 26069 a 0 TeXcolorgray -713 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1754 w(6)p 0 TeXcolorgray 0 TeXcolorgray 8524 27397 a -SDict begin H.S end - -8524 27397 a Fv(3.4)1133 b(What)369 b(to)h(Prin)-31 b(t)18036 -27397 y -SDict begin 12 H.L end - 18036 27397 a 18036 27397 a -SDict begin [/Subtype /Link/Dest (subsection.3.4) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 18036 27397 a 0 TeXcolorgray -296 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1754 w(7)p 0 TeXcolorgray 0 TeXcolorgray -8524 28726 a -SDict begin H.S end - 8524 28726 a Fv(3.5)1133 b(Language)370 -b(and)g(Enco)31 b(ding)22753 28726 y -SDict begin 12 H.L end - 22753 28726 a 22753 -28726 a -SDict begin [/Subtype /Link/Dest (subsection.3.5) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 22753 28726 a 0 TeXcolorgray 745 w Fv(.)554 b(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -p 0 TeXcolorgray 1754 w(8)p 0 TeXcolorgray 0 TeXcolorgray -8524 30054 a -SDict begin H.S end - 8524 30054 a Fv(3.6)1133 b(F)-92 b(on)-31 -b(ts)13705 30054 y -SDict begin 12 H.L end - 13705 30054 a 13705 30054 a -SDict begin [/Subtype /Link/Dest (subsection.3.6) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 13705 -30054 a 0 TeXcolorgray 323 w Fv(.)553 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1754 w(8)p -0 TeXcolorgray 0 TeXcolorgray 8524 31382 a -SDict begin H.S end - 8524 31382 -a Fv(3.7)1133 b(Lengths)14904 31382 y -SDict begin 12 H.L end - 14904 31382 a 14904 -31382 a -SDict begin [/Subtype /Link/Dest (subsection.3.7) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 14904 31382 a 0 TeXcolorgray 845 w Fv(.)554 b(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.) -h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1754 w(9)p 0 TeXcolorgray 0 TeXcolorgray 8524 32711 a -SDict begin H.S end - -8524 32711 a Fv(3.8)1133 b(Scaling)370 b(and)g(Rotation)21291 -32711 y -SDict begin 12 H.L end - 21291 32711 a 21291 32711 a -SDict begin [/Subtype /Link/Dest (subsection.3.8) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 21291 32711 a 0 TeXcolorgray -485 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1754 w(9)p 0 TeXcolorgray 0 TeXcolorgray 6863 35146 a -SDict begin H.S end - -6863 35146 a Fs(4)1025 b(Running)425 b(the)g(Program)20802 -35146 y -SDict begin 12 H.L end - 20802 35146 a 20802 35146 a -SDict begin [/Subtype /Link/Dest (section.4) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 20802 35146 a 0 TeXcolorgray -22978 w Fs(10)p 0 TeXcolorgray 8524 36474 a -SDict begin H.S end - 8524 36474 -a Fv(4.1)1133 b(Program)370 b(In)-31 b(v)g(o)31 b(cation)372 -b(And)d(Options)27332 36474 y -SDict begin 12 H.L end - 27332 36474 a 27332 36474 -a -SDict begin [/Subtype /Link/Dest (subsection.4.1) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 27332 36474 a 0 TeXcolorgray 471 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g -(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1200 w(10)p 0 TeXcolorgray 0 TeXcolorgray 8524 37803 -a -SDict begin H.S end - 8524 37803 a Fv(4.2)1133 b(Data)370 b(File)15651 37803 -y -SDict begin 12 H.L end - 15651 37803 a 15651 37803 a -SDict begin [/Subtype /Link/Dest (subsection.4.2) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 15651 37803 a 0 TeXcolorgray -959 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1200 w(11)p 0 TeXcolorgray 0 TeXcolorgray -8524 39131 a -SDict begin H.S end - 8524 39131 a Fv(4.3)1133 b(Twins)14027 39131 -y -SDict begin 12 H.L end - 14027 39131 a 14027 39131 a -SDict begin [/Subtype /Link/Dest (subsection.4.3) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 14027 39131 a 0 TeXcolorgray -861 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)p 0 TeXcolorgray 1200 w(13)p 0 TeXcolorgray 0 TeXcolorgray -8524 40459 a -SDict begin H.S end - 8524 40459 a Fv(4.4)1133 b(Ab)31 b(ortions)15875 -40459 y -SDict begin 12 H.L end - 15875 40459 a 15875 40459 a -SDict begin [/Subtype /Link/Dest (subsection.4.4) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 15875 40459 a 0 TeXcolorgray -735 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1200 w(13)p 0 TeXcolorgray 0 TeXcolorgray -8524 41788 a -SDict begin H.S end - 8524 41788 a Fv(4.5)1133 b(Childlessness)369 -b(and)g(Infertilit)-31 b(y)24501 41788 y -SDict begin 12 H.L end - 24501 41788 -a 24501 41788 a -SDict begin [/Subtype /Link/Dest (subsection.4.5) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 24501 41788 a 0 TeXcolorgray 719 w Fv(.)554 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)p 0 TeXcolorgray 1200 w(13)p 0 TeXcolorgray -0 TeXcolorgray 8524 43116 a -SDict begin H.S end - 8524 43116 a Fv(4.6)1133 -b(Ordering)369 b(Siblings)h(and)g(Marriage)f(P)-31 b(artners)30856 -43116 y -SDict begin 12 H.L end - 30856 43116 a 30856 43116 a -SDict begin [/Subtype /Link/Dest (subsection.4.6) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 30856 43116 a 0 TeXcolorgray -391 w Fv(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1200 w(19)p 0 TeXcolorgray 0 TeXcolorgray -8524 44444 a -SDict begin H.S end - 8524 44444 a Fv(4.7)1133 b(Consanguinic)371 -b(Unions)21259 44444 y -SDict begin 12 H.L end - 21259 44444 a 21259 44444 a -SDict begin [/Subtype /Link/Dest (subsection.4.7) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 21259 -44444 a 0 TeXcolorgray 517 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1200 w(26)p 0 TeXcolorgray 0 TeXcolorgray -8524 45773 a -SDict begin H.S end - 8524 45773 a Fv(4.8)1133 b(Language-Dep)31 -b(enden)-31 b(t)370 b(Keyw)-31 b(ords)26391 45773 y -SDict begin 12 H.L end - 26391 -45773 a 26391 45773 a -SDict begin [/Subtype /Link/Dest (subsection.4.8) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 26391 45773 a 0 TeXcolorgray 551 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(26)p 0 TeXcolorgray -0 TeXcolorgray 6863 49592 a -SDict begin H.S end - 6863 49592 a Ft(I)42 b(I)1493 -b(Algorithm)500 b(Description)24238 49592 y -SDict begin 14 H.L end - 24238 49592 -a 24238 49592 a -SDict begin [/Subtype /Link/Dest (part.2) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 24238 49592 a 0 TeXcolorgray 19321 w -Ft(29)p 0 TeXcolorgray 6863 52027 a -SDict begin H.S end - 6863 52027 a Fs(5)1025 -b(In)-35 b(tro)35 b(duction)15541 52027 y -SDict begin 12 H.L end - 15541 52027 -a 15541 52027 a -SDict begin [/Subtype /Link/Dest (section.5) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 15541 52027 a 0 TeXcolorgray 28239 w -Fs(29)p 0 TeXcolorgray 6863 54462 a -SDict begin H.S end - 6863 54462 a Fs(6)1025 -b(Main)424 b(Algorithm)17565 54462 y -SDict begin 12 H.L end - 17565 54462 a 17565 -54462 a -SDict begin [/Subtype /Link/Dest (section.6) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 17565 54462 a 0 TeXcolorgray 26215 w Fs(29)p -0 TeXcolorgray 6863 56898 a -SDict begin H.S end - 6863 56898 a Fs(7)1025 b(Algorithm)425 -b(for)g(Sorting)h(Siblings)e(and)h(Marriage)g(P)-35 b(artners)38621 -56898 y -SDict begin 12 H.L end - 38621 56898 a 38621 56898 a -SDict begin [/Subtype /Link/Dest (section.7) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 38621 56898 a 0 TeXcolorgray -5159 w Fs(30)p 0 TeXcolorgray 6863 59333 a -SDict begin H.S end - 6863 59333 -a Fs(8)1025 b(Mo)35 b(di\014cations)425 b(for)g(Consangunic)h(Unions) -29820 59333 y -SDict begin 12 H.L end - 29820 59333 a 29820 59333 a -SDict begin [/Subtype /Link/Dest (section.8) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 29820 59333 -a 0 TeXcolorgray 13960 w Fs(31)p 0 TeXcolorgray 6863 -61768 a -SDict begin H.S end - 6863 61768 a Fs(9)1025 b(Conclusion)14612 61768 -y -SDict begin 12 H.L end - 14612 61768 a 14612 61768 a -SDict begin [/Subtype /Link/Dest (section.9) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 14612 61768 a 0 TeXcolorgray -29168 w Fs(31)p 0 TeXcolorgray 6863 64204 a -SDict begin H.S end - 6863 64204 -a Fs(10)389 b(Ac)-35 b(kno)g(wledgemen)g(ts)19092 64204 -y -SDict begin 12 H.L end - 19092 64204 a 19092 64204 a -SDict begin [/Subtype /Link/Dest (section.10) cvn/H /I/Border [0 0 -0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 19092 64204 a 0 TeXcolorgray -24688 w Fs(32)p 0 TeXcolorgray 25681 70071 a Fv(2)p 0 -TeXcolorgray eop end -%%Page: 3 3 -TeXDict begin 3 2 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.3) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 6974 a -SDict begin H.S end - 6863 6974 a 6863 6974 a -SDict begin 18 H.A end - 6863 6974 a 6863 -6974 a -SDict begin [/View [/XYZ H.V]/Dest (section*.2) cvn /DEST pdfmark end - 6863 6974 a Fu(List)599 b(of)f(Figures)p 0 TeXcolorgray -8524 9398 a -SDict begin H.S end - 8524 9398 a Fv(1)1993 b(Example)292 b(of)g(the)f(T)-31 -b(yp)31 b(eset)292 b(P)-31 b(edigree)292 b(in)f(English)i(\(Data)f -(File)f(from)h(List-)11070 10727 y(ing)p 0 TeXcolorgray -12915 10727 a -SDict begin H.S end - 12915 10727 a 0 TeXcolorgray Fv(7)p 0 TeXcolorgray -13468 10013 a -SDict begin H.R end - 13468 10013 a 13468 10727 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.7) cvn H.B /ANN pdfmark end - 13468 10727 -a 0 TeXcolorgray Fv(\))13898 10727 y -SDict begin 12 H.L end - 13898 10727 a 13898 -10727 a -SDict begin [/Subtype /Link/Dest (figure.1) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 13898 10727 a 0 TeXcolorgray 990 w Fv(.)554 b(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1200 w(15)p 0 TeXcolorgray 0 TeXcolorgray 8524 12055 -a -SDict begin H.S end - 8524 12055 a Fv(2)1993 b(Example)552 b(of)f(the)g(T)-31 -b(yp)31 b(eset)551 b(P)-31 b(edigree)552 b(in)e(Russian)h(\(Data)h -(File)f(from)11070 13383 y(Listing)p 0 TeXcolorgray 14781 -13383 a -SDict begin H.S end - 14781 13383 a 0 TeXcolorgray Fv(7)p 0 TeXcolorgray -15334 12670 a -SDict begin H.R end - 15334 12670 a 15334 13383 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.7) cvn H.B /ANN pdfmark end - 15334 13383 -a 0 TeXcolorgray Fv(\))15764 13383 y -SDict begin 12 H.L end - 15764 13383 a 15764 -13383 a -SDict begin [/Subtype /Link/Dest (figure.2) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 15764 13383 a 0 TeXcolorgray 846 w Fv(.)j(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(16)p -0 TeXcolorgray 0 TeXcolorgray 8524 14712 a -SDict begin H.S end - 8524 14712 -a Fv(3)1993 b(Example)371 b(of)e(a)h(P)-31 b(edigree)370 -b(with)g(Twins)g(\(Data)h(File)e(from)h(Listing)p 0 TeXcolorgray -39884 14712 a -SDict begin H.S end - 39884 14712 a 0 TeXcolorgray Fv(8)p 0 TeXcolorgray -40437 13998 a -SDict begin H.R end - 40437 13998 a 40437 14712 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.8) cvn H.B /ANN pdfmark end - 40437 14712 -a 0 TeXcolorgray Fv(\))40867 14712 y -SDict begin 12 H.L end - 40867 14712 a 40867 -14712 a -SDict begin [/Subtype /Link/Dest (figure.3) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 40867 14712 a 0 TeXcolorgray 711 w Fv(.)554 b(.)p -0 TeXcolorgray 1200 w(17)p 0 TeXcolorgray 0 TeXcolorgray -8524 16040 a -SDict begin H.S end - 8524 16040 a Fv(4)1993 b(Example)371 b(of)e(a)h(P)-31 -b(edigree)370 b(with)g(Ab)31 b(ortions)370 b(\(Data)h(File)e(from)h -(Listing)p 0 TeXcolorgray 41732 16040 a -SDict begin H.S end - 41732 16040 a -0 TeXcolorgray Fv(9)p 0 TeXcolorgray 42285 15327 a -SDict begin H.R end - 42285 -15327 a 42285 16040 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.9) cvn H.B /ANN pdfmark end - 42285 16040 a 0 TeXcolorgray Fv(\))42715 -16040 y -SDict begin 12 H.L end - 42715 16040 a 42715 16040 a -SDict begin [/Subtype /Link/Dest (figure.4) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 42715 16040 a 0 TeXcolorgray -0 TeXcolorgray 1231 w Fv(18)p 0 TeXcolorgray 0 TeXcolorgray -8524 17369 a -SDict begin H.S end - 8524 17369 a Fv(5)1993 b(Example)424 b(of)g(a)f(P)-31 -b(edigree)423 b(with)h(Childlessness)f(\(Data)i(File)e(from)g(List-) -11070 18697 y(ing)p 0 TeXcolorgray 12915 18697 a -SDict begin H.S end - 12915 -18697 a 0 TeXcolorgray Fv(10)p 0 TeXcolorgray 14021 17983 -a -SDict begin H.R end - 14021 17983 a 14021 18697 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.10) cvn H.B /ANN pdfmark end - 14021 18697 a 0 TeXcolorgray -Fv(\))14451 18697 y -SDict begin 12 H.L end - 14451 18697 a 14451 18697 a -SDict begin [/Subtype /Link/Dest (figure.5) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 14451 -18697 a 0 TeXcolorgray 437 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(20)p -0 TeXcolorgray 0 TeXcolorgray 8524 20025 a -SDict begin H.S end - 8524 20025 -a Fv(6)1993 b(P)-31 b(edigree)370 b(from)f(Listing)p -0 TeXcolorgray 21875 20025 a -SDict begin H.S end - 21875 20025 a 0 TeXcolorgray -Fv(12)p 0 TeXcolorgray 22981 19312 a -SDict begin H.R end - 22981 19312 a 22981 -20025 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.12) cvn H.B /ANN pdfmark end - 22981 20025 a 0 TeXcolorgray 22981 20025 a -SDict begin 12 H.L end - 22981 -20025 a 22981 20025 a -SDict begin [/Subtype /Link/Dest (figure.6) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 22981 20025 a 0 TeXcolorgray 517 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(22)p -0 TeXcolorgray 0 TeXcolorgray 8524 21354 a -SDict begin H.S end - 8524 21354 -a Fv(7)1993 b(P)-31 b(edigree)370 b(from)f(Listing)p -0 TeXcolorgray 21875 21354 a -SDict begin H.S end - 21875 21354 a 0 TeXcolorgray -Fv(12)p 0 TeXcolorgray 22981 20640 a -SDict begin H.R end - 22981 20640 a 22981 -21354 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.12) cvn H.B /ANN pdfmark end - 22981 21354 a 0 TeXcolorgray 22981 21354 a -SDict begin 12 H.L end - 22981 -21354 a 22981 21354 a -SDict begin [/Subtype /Link/Dest (figure.7) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 22981 21354 a 0 TeXcolorgray 517 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(23)p -0 TeXcolorgray 0 TeXcolorgray 8524 22682 a -SDict begin H.S end - 8524 22682 -a Fv(8)1993 b(P)-31 b(edigree)370 b(from)f(Listing)p -0 TeXcolorgray 21875 22682 a -SDict begin H.S end - 21875 22682 a 0 TeXcolorgray -Fv(13)p 0 TeXcolorgray 22981 21969 a -SDict begin H.R end - 22981 21969 a 22981 -22682 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.13) cvn H.B /ANN pdfmark end - 22981 22682 a 0 TeXcolorgray 22981 22682 a -SDict begin 12 H.L end - 22981 -22682 a 22981 22682 a -SDict begin [/Subtype /Link/Dest (figure.8) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 22981 22682 a 0 TeXcolorgray 517 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(24)p -0 TeXcolorgray 0 TeXcolorgray 8524 24010 a -SDict begin H.S end - 8524 24010 -a Fv(9)1993 b(P)-31 b(edigree)370 b(from)f(Listing)p -0 TeXcolorgray 21875 24010 a -SDict begin H.S end - 21875 24010 a 0 TeXcolorgray -Fv(14)p 0 TeXcolorgray 22981 23297 a -SDict begin H.R end - 22981 23297 a 22981 -24010 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.14) cvn H.B /ANN pdfmark end - 22981 24010 a 0 TeXcolorgray 22981 24010 a -SDict begin 12 H.L end - 22981 -24010 a 22981 24010 a -SDict begin [/Subtype /Link/Dest (figure.9) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 22981 24010 a 0 TeXcolorgray 517 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(25)p -0 TeXcolorgray 0 TeXcolorgray 8524 25339 a -SDict begin H.S end - 8524 25339 -a Fv(10)1440 b(P)-31 b(edigree)370 b(from)f(Listing)p -0 TeXcolorgray 21875 25339 a -SDict begin H.S end - 21875 25339 a 0 TeXcolorgray -Fv(15)p 0 TeXcolorgray 22981 24625 a -SDict begin H.R end - 22981 24625 a 22981 -25339 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.15) cvn H.B /ANN pdfmark end - 22981 25339 a 0 TeXcolorgray 22981 25339 a -SDict begin 12 H.L end - 22981 -25339 a 22981 25339 a -SDict begin [/Subtype /Link/Dest (figure.10) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 22981 25339 a 0 TeXcolorgray 517 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(27)p -0 TeXcolorgray 0 TeXcolorgray 8524 26667 a -SDict begin H.S end - 8524 26667 -a Fv(11)1440 b(Subp)31 b(edigrees)368 b(and)i(Do)-31 -b(wn)g(w)g(ard)371 b(T)-92 b(ree)27521 26667 y -SDict begin 12 H.L end - 27521 -26667 a 27521 26667 a -SDict begin [/Subtype /Link/Dest (figure.11) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 27521 26667 a 0 TeXcolorgray 282 -w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)p 0 TeXcolorgray 1200 w(30)p 0 TeXcolorgray 6863 -30328 a -SDict begin H.S end - 6863 30328 a 6863 30328 a -SDict begin 18 H.A end - 6863 30328 a 6863 30328 -a -SDict begin [/View [/XYZ H.V]/Dest (section*.3) cvn /DEST pdfmark end - 6863 30328 a Fu(List)599 b(of)f(T)-149 b(ables)p 0 -TeXcolorgray 8524 32752 a -SDict begin H.S end - 8524 32752 a Fv(1)1993 b(Keyw)-31 -b(ords)369 b(in)h(Di\013eren)-31 b(t)369 b(Languages)27138 -32752 y -SDict begin 12 H.L end - 27138 32752 a 27138 32752 a -SDict begin [/Subtype /Link/Dest (table.1) cvn/H /I/Border [0 0 0]BorderArrayPatch/Color -[1 0 0] H.B /ANN pdfmark end - 27138 32752 a 0 TeXcolorgray -665 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(28)p 0 TeXcolorgray -6863 36413 a -SDict begin H.S end - 6863 36413 a 6863 36413 a -SDict begin 18 H.A end - 6863 36413 a 6863 -36413 a -SDict begin [/View [/XYZ H.V]/Dest (section*.4) cvn /DEST pdfmark end - 6863 36413 a Fu(List)599 b(of)f(Listings)p 0 -TeXcolorgray 8524 38837 a -SDict begin H.S end - 8524 38837 a Fv(1)1993 b(Con\014guration)371 -b(File:)493 b(Setting)387 b(T)25155 39076 y(E)25771 38837 -y(X)369 b(Output)30536 38837 y -SDict begin 12 H.L end - 30536 38837 a 30536 38837 -a -SDict begin [/Subtype /Link/Dest (lstlisting.1) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 30536 38837 a 0 TeXcolorgray 711 w Fv(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1754 w(7)p -0 TeXcolorgray 0 TeXcolorgray 8524 40166 a -SDict begin H.S end - 8524 40166 -a Fv(2)1993 b(Con\014guration)371 b(File:)493 b(Cho)31 -b(osing)371 b(Fields)e(to)h(Prin)-31 b(t)32657 40166 -y -SDict begin 12 H.L end - 32657 40166 a 32657 40166 a -SDict begin [/Subtype /Link/Dest (lstlisting.2) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 32657 40166 a 0 TeXcolorgray -312 w Fv(.)554 b(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1754 w(8)p 0 TeXcolorgray 0 TeXcolorgray -8524 41494 a -SDict begin H.S end - 8524 41494 a Fv(3)1993 b(Con\014guration)371 -b(File:)493 b(Cho)31 b(osing)371 b(Language)g(and)e(Enco)31 -b(ding)37229 41494 y -SDict begin 12 H.L end - 37229 41494 a 37229 41494 a -SDict begin [/Subtype /Link/Dest (lstlisting.3) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 37229 -41494 a 0 TeXcolorgray 905 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1754 w(9)p 0 TeXcolorgray 0 TeXcolorgray -8524 42822 a -SDict begin H.S end - 8524 42822 a Fv(4)1993 b(Con\014guration)371 -b(File:)493 b(Cho)31 b(osing)371 b(F)-92 b(on)-31 b(ts)28181 -42822 y -SDict begin 12 H.L end - 28181 42822 a 28181 42822 a -SDict begin [/Subtype /Link/Dest (lstlisting.4) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 28181 42822 a 0 TeXcolorgray -483 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)p 0 TeXcolorgray 1754 w(9)p 0 TeXcolorgray 0 -TeXcolorgray 8524 44151 a -SDict begin H.S end - 8524 44151 a Fv(5)1993 b(Con\014guration)371 -b(File:)493 b(Cho)31 b(osing)371 b(Lengths)29380 44151 -y -SDict begin 12 H.L end - 29380 44151 a 29380 44151 a -SDict begin [/Subtype /Link/Dest (lstlisting.5) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 29380 44151 a 0 TeXcolorgray -1006 w Fv(.)554 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)p 0 TeXcolorgray 1200 w(10)p 0 TeXcolorgray 0 TeXcolorgray -8524 45479 a -SDict begin H.S end - 8524 45479 a Fv(6)1993 b(Con\014guration)371 -b(File:)493 b(Cho)31 b(osing)371 b(Scaling)g(and)f(Rotation)35768 -45479 y -SDict begin 12 H.L end - 35768 45479 a 35768 45479 a -SDict begin [/Subtype /Link/Dest (lstlisting.6) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 35768 45479 a 0 TeXcolorgray -644 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1200 w(11)p 0 TeXcolorgray 0 TeXcolorgray 8524 46807 -a -SDict begin H.S end - 8524 46807 a Fv(7)1993 b(Examples)370 b(of)g(Data)g(Files)f -(\(English)i(and)e(Russian\))33500 46807 y -SDict begin 12 H.L end - 33500 46807 -a 33500 46807 a -SDict begin [/Subtype /Link/Dest (lstlisting.7) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 33500 46807 a 0 TeXcolorgray 330 w Fv(.)553 -b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1200 w(14)p 0 TeXcolorgray 0 TeXcolorgray 8524 48136 -a -SDict begin H.S end - 8524 48136 a Fv(8)1993 b(Example)371 b(of)e(Data)h(File)g(with)g -(Twins)27356 48136 y -SDict begin 12 H.L end - 27356 48136 a 27356 48136 a -SDict begin [/Subtype /Link/Dest (lstlisting.8) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 27356 -48136 a 0 TeXcolorgray 447 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)f(.)h -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 -w(17)p 0 TeXcolorgray 0 TeXcolorgray 8524 49464 a -SDict begin H.S end - 8524 -49464 a Fv(9)1993 b(Example)371 b(of)e(Data)h(File)g(with)g(Ab)31 -b(ortions)29204 49464 y -SDict begin 12 H.L end - 29204 49464 a 29204 49464 a -SDict begin [/Subtype /Link/Dest (lstlisting.9) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 29204 -49464 a 0 TeXcolorgray 321 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(18)p -0 TeXcolorgray 0 TeXcolorgray 8524 50793 a -SDict begin H.S end - 8524 50793 -a Fv(10)1440 b(Example)371 b(of)e(Data)h(File)g(with)g(Childlessness) -30696 50793 y -SDict begin 12 H.L end - 30696 50793 a 30696 50793 a -SDict begin [/Subtype /Link/Dest (lstlisting.10) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 30696 50793 -a 0 TeXcolorgray 551 w Fv(.)554 b(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(19)p 0 TeXcolorgray -0 TeXcolorgray 8524 52121 a -SDict begin H.S end - 8524 52121 a Fv(11)1440 b(A)369 -b(Data)h(File)f(with)i(a)e(Sorting)i(Problem)28617 52121 -y -SDict begin 12 H.L end - 28617 52121 a 28617 52121 a -SDict begin [/Subtype /Link/Dest (lstlisting.11) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 28617 52121 a 0 TeXcolorgray -908 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)p 0 TeXcolorgray 1200 w(21)p 0 TeXcolorgray 0 TeXcolorgray -8524 53449 a -SDict begin H.S end - 8524 53449 a Fv(12)1440 b(First)368 b(Solution)k(to)e(the) -f(Problem)h(in)g(Listing)p 0 TeXcolorgray 30844 53449 -a -SDict begin H.S end - 30844 53449 a 0 TeXcolorgray Fv(11)p 0 TeXcolorgray -31950 52736 a -SDict begin H.R end - 31950 52736 a 31950 53449 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.11) cvn H.B /ANN pdfmark end - 31950 53449 -a 0 TeXcolorgray 31950 53449 a -SDict begin 12 H.L end - 31950 53449 a 31950 53449 -a -SDict begin [/Subtype /Link/Dest (lstlisting.12) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 31950 53449 a 0 TeXcolorgray 1019 w Fv(.)554 b(.)f(.)h(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray 1200 w(21)p 0 TeXcolorgray -0 TeXcolorgray 8524 54778 a -SDict begin H.S end - 8524 54778 a Fv(13)1440 b(Second)369 -b(Solution)i(to)f(the)g(Problem)g(in)f(Listing)p 0 TeXcolorgray -31896 54778 a -SDict begin H.S end - 31896 54778 a 0 TeXcolorgray Fv(11)p 0 -TeXcolorgray 33002 54064 a -SDict begin H.R end - 33002 54064 a 33002 54778 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.11) cvn H.B /ANN pdfmark end - 33002 54778 a 0 TeXcolorgray 33002 54778 a -SDict begin 12 H.L end - 33002 54778 -a 33002 54778 a -SDict begin [/Subtype /Link/Dest (lstlisting.13) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 33002 54778 a 0 TeXcolorgray 828 w Fv(.)553 -b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p 0 TeXcolorgray -1200 w(23)p 0 TeXcolorgray 0 TeXcolorgray 8524 56106 -a -SDict begin H.S end - 8524 56106 a Fv(14)1440 b(A)369 b(P)-31 b(edigree)370 -b(with)g(Una)-31 b(v)g(oidable)373 b(Self-In)-31 b(tersections)33826 -56106 y -SDict begin 12 H.L end - 33826 56106 a 33826 56106 a -SDict begin [/Subtype /Link/Dest (lstlisting.14) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 33826 56106 a 0 TeXcolorgray -864 w Fv(.)554 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)p -0 TeXcolorgray 1200 w(24)p 0 TeXcolorgray 0 TeXcolorgray -8524 57434 a -SDict begin H.S end - 8524 57434 a Fv(15)1440 b(A)369 b(P)-31 -b(edigree)370 b(with)g(Consanguinic)i(Unions)29457 57434 -y -SDict begin 12 H.L end - 29457 57434 a 29457 57434 a -SDict begin [/Subtype /Link/Dest (lstlisting.15) cvn/H /I/Border [0 -0 0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 29457 57434 a 0 TeXcolorgray -929 w Fv(.)554 b(.)g(.)g(.)g(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -p 0 TeXcolorgray 1200 w(26)p 0 TeXcolorgray 0 TeXcolorgray -25681 70071 a(3)p 0 TeXcolorgray eop end -%%Page: 4 4 -TeXDict begin 4 3 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.4) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 5867 a -SDict begin H.S end - 6863 5867 a 6863 5867 a -SDict begin 12 H.A end - 6863 5867 a 6863 -5867 a -SDict begin [/View [/XYZ H.V]/Dest (part.1) cvn /DEST pdfmark end - 6863 5867 a 1107 x Fu(P)-50 b(art)599 b(I)6863 -9741 y Fr(User)861 b(Man)-72 b(ual)6863 11171 y -SDict begin H.S end - 6863 -11171 a 6863 11171 a -SDict begin 12 H.A end - 6863 11171 a 6863 11171 a -SDict begin [/View [/XYZ H.V]/Dest (section.1) cvn /DEST pdfmark end - 6863 11171 -a 1993 x Fu(1)1793 b(In)-50 b(tro)50 b(duction)6863 15588 -y Fv(Medical)343 b(p)31 b(edigree)342 b(is)g(a)h(v)-31 -b(ery)342 b(imp)31 b(ortan)-31 b(t)344 b(to)31 b(ol)344 -b(for)e(clinicians,)350 b(genetic)343 b(researc)-31 b(hers)341 -b(and)6863 16916 y(educators.)485 b(As)346 b(stated)h(in)f([)p -0 TeXcolorgray 18768 16916 a -SDict begin H.S end - 18768 16916 a 0 TeXcolorgray -Fv(1)p 0 TeXcolorgray 19321 16203 a -SDict begin H.R end - 19321 16203 a 19321 -16916 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.PedigreeNomenclature95) cvn H.B /ANN pdfmark end - 19321 16916 a 0 TeXcolorgray 1 w Fv(],)352 b(\\The)346 -b(construction)i(of)e(an)g(accurate)h(family)h(p)31 b(edigree)346 -b(is)6863 18245 y(a)h(fundamen)-31 b(tal)350 b(comp)31 -b(onen)-31 b(t)348 b(of)f(a)h(clinical)h(genetic)f(ev)-61 -b(aluation)349 b(and)e(of)g(h)-31 b(uman)348 b(genetic)6863 -19573 y(researc)-31 b(h.")474 b(The)315 b(pac)-31 b(k)-61 -b(age)315 b Fq(pst-)55 b(pdgr)316 b Fv([)p 0 TeXcolorgray -23727 19573 a -SDict begin H.S end - 23727 19573 a 0 TeXcolorgray Fv(2)p 0 TeXcolorgray -24280 18860 a -SDict begin H.R end - 24280 18860 a 24280 19573 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.pst-pdgr06) cvn H.B /ANN pdfmark end - 24280 19573 -a 0 TeXcolorgray 1 w Fv(])f(pro)-31 b(vides)315 b(a)f(set)g(of)h(PST) --92 b(ric)-31 b(ks)315 b(macros)g(\(see)f([)p 0 TeXcolorgray -43761 19573 a -SDict begin H.S end - 43761 19573 a 0 TeXcolorgray Fv(3)p 0 TeXcolorgray -44314 18860 a -SDict begin H.R end - 44314 18860 a 44314 19573 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.PSTricks93) cvn H.B /ANN pdfmark end - 44314 19573 -a 0 TeXcolorgray 1 w Fv(]\))6863 20902 y(to)372 b(t)-31 -b(yp)31 b(eset)371 b(p)31 b(edigrees.)496 b(In)370 b(the)h(framew)-31 -b(ork)372 b(of)f Fq(pst-)55 b(pdgr)372 b Fv(the)f(user)f(man)-31 -b(ually)373 b(c)-31 b(ho)31 b(oses)6863 22230 y(co)g(ordinates)323 -b(for)g(eac)-31 b(h)323 b(p)31 b(edigree)322 b(no)31 -b(de)322 b(on)g(the)h(diagram.)479 b(While)322 b(this)h(is)f(relativ) --31 b(ely)325 b(easy)6863 23558 y(for)476 b(small)h(p)31 -b(edigrees,)502 b(this)476 b(task)g(b)31 b(ecomes)476 -b(increasingly)h(time-consuming)h(for)e(larger)6863 24887 -y(ones.)558 b(There)391 b(ma)-31 b(y)392 b(b)31 b(e)390 -b(sev)-31 b(eral)392 b(approac)-31 b(hes)391 b(to)h(automate)i(it.)558 -b(F)-92 b(or)390 b(example,)399 b(one)391 b(ma)-31 b(y)6863 -26215 y(ha)g(v)g(e)444 b(data)g(ab)31 b(out)443 b(the)g(patien)-31 -b(ts)445 b(and)e(their)g(families)i(in)e(a)g(spreadsheet)f(or)g -(database.)6863 27543 y(Then)386 b(it)h(w)-31 b(ould)387 -b(b)31 b(e)386 b(useful)g(to)g(generate)h(p)31 b(edigrees)386 -b(from)g(suc)-31 b(h)386 b(data.)544 b(This)386 b(is)g(the)g(aim)6863 -28872 y(of)370 b(the)f(program)h Fq(pedigree)g Fv(describ)31 -b(ed)369 b(in)g(this)h(man)-31 b(ual.)8524 30200 y(Spreadsheets)495 -b(and)g(databases)i(can)f(exp)31 b(ort)496 b(the)f(data)i(as)f -(separated)g(v)-61 b(alues)495 b(\014les)6863 31528 y(\(\\csv")428 -b(\014les)e(for)g(Comma)j(Separated)e(V)-92 b(alues\).)665 -b(Our)426 b(program)h(reads)f(these)h(\014les)f(and)6863 -32857 y(outputs)382 b(LaT)-92 b(eX)382 b(co)31 b(de)382 -b(with)h Fq(pst-)55 b(pdgr)382 b Fv(macros.)530 b(W)-92 -b(e)381 b(tried)h(to)g(mak)-31 b(e)383 b(this)f(co)31 -b(de)381 b(read-)6863 34185 y(able,)371 b(so)e(a)g(user)f(migh)-31 -b(t)371 b(t)-31 b(w)g(eak)372 b(it)e(if)f(necessary)-92 -b(.)8524 35513 y(Of)422 b(course,)436 b(man)-31 b(ually)426 -b(pro)31 b(duced)422 b(L)23939 35286 y Fp(A)24427 35513 -y Fv(T)25041 35752 y(E)25657 35513 y(X)h(co)31 b(de)422 -b(is)h(more)g(v)-31 b(ersatile)424 b(than)g(the)f(auto-)6863 -36842 y(matically)354 b(generated)e(one.)486 b(There)351 -b(are)g(certain)g(limitations)k(for)350 b(the)h(program:)41782 -36842 y -SDict begin H.S end - 41782 36842 a 41782 36842 a -SDict begin 12 H.A end - 41782 36842 a 41782 -36842 a -SDict begin [/View [/XYZ H.V]/Dest (Item.1) cvn /DEST pdfmark end - 41782 36842 a Fv(1.)g(only)6863 38170 y(p)31 -b(ersons)453 b(ha)-31 b(ving)456 b(common)g(genes)e(with)h(the)g -(proband)f(or)g(the)g(\\starting)i(p)31 b(erson")454 -b(are)6863 39498 y(included)505 b(in)g(the)g(p)31 b(edigree;)19805 -39498 y -SDict begin H.S end - 19805 39498 a 19805 39498 a -SDict begin 12 H.A end - 19805 39498 a 19805 -39498 a -SDict begin [/View [/XYZ H.V]/Dest (Item.2) cvn /DEST pdfmark end - 19805 39498 a Fv(2.)506 b(no)e(adopted)i(c)-31 -b(hildren,)539 b(sp)31 b(erm)504 b(donors)g(or)h(surrogate)6863 -40827 y(mothers)402 b(are)g(sho)-31 b(wn)402 b(on)h(the)f(p)31 -b(edigree;)24685 40827 y -SDict begin H.S end - 24685 40827 a 24685 40827 a -SDict begin 12 H.A end - -24685 40827 a 24685 40827 a -SDict begin [/View [/XYZ H.V]/Dest (Item.3) cvn /DEST pdfmark end - 24685 40827 a Fv(3.)403 b(only)g(one)f -(disease)g(is)f(sho)-31 b(wn)403 b(on)f(the)g(c)-31 b(hart;)6863 -42155 y -SDict begin H.S end - 6863 42155 a 6863 42155 a -SDict begin 12 H.A end - 6863 42155 a 6863 42155 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.4) cvn /DEST pdfmark end - 6863 42155 a Fv(4.)470 b(the)g(supp)31 b(ort)469 b(for)h -(consanguinic)h(unions)f(and)f(in)-31 b(breeding)471 -b(is)e(rather)g(exp)31 b(erimen)-31 b(tal)6863 43484 -y(\(see)409 b(Section)p 0 TeXcolorgray 13038 43484 a -SDict begin H.S end - -13038 43484 a 0 TeXcolorgray Fv(4.7)p 0 TeXcolorgray -14451 42770 a -SDict begin H.R end - 14451 42770 a 14451 43484 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.7) cvn H.B /ANN pdfmark end - 14451 43484 -a 0 TeXcolorgray Fv(\).)615 b(Subsequen)-31 b(t)410 b(v)-31 -b(ersions)409 b(of)h(the)g(program)g(ma)-31 b(y)410 b(ease)g(some)f(of) -h(these)6863 44812 y(limitations.)6863 46480 y -SDict begin H.S end - 6863 46480 -a 6863 46480 a -SDict begin 12 H.A end - 6863 46480 a 6863 46480 a -SDict begin [/View [/XYZ H.V]/Dest (section.2) cvn /DEST pdfmark end - 6863 46480 a -1993 x Fu(2)1793 b(Installation)6863 49569 y -SDict begin H.S end - 6863 49569 -a 6863 49569 a -SDict begin 12 H.A end - 6863 49569 a 6863 49569 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.1) cvn /DEST pdfmark -end - 6863 49569 a -1549 x Ft(2.1)1495 b(System)499 b(Requiremen)-42 b(ts)6863 -53162 y Fv(The)304 b(program)h(requires)e Fo(P)-31 b(erl)305 -b Fv(v)-31 b(ersion)304 b(5)g(or)g(new)-31 b(er)304 b(\(it)h(w)-31 -b(as)305 b(tested)f(with)h Fo(P)-31 b(erl)305 b Fv(v5.8.8,)320 -b(but)6863 54490 y(should)382 b(w)-31 b(ork)382 b(with)g(an)-31 -b(y)398 b Fo(P)-31 b(erl-5)p Fv(\).)531 b(The)381 b(L)24340 -54263 y Fp(A)24828 54490 y Fv(T)25442 54728 y(E)26058 -54490 y(X)g(macros)h(require)f Fq(pst-)55 b(pdgr)382 -b Fv(v)-31 b(ersion)382 b(0.3)6863 55818 y(\(July)370 -b(2007\))i(or)d(new)-31 b(er.)6863 57644 y -SDict begin H.S end - 6863 57644 -a 6863 57644 a -SDict begin 12 H.A end - 6863 57644 a 6863 57644 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.2) cvn /DEST pdfmark -end - 6863 57644 a -1273 x Ft(2.2)1495 b(Unix/Lin)-42 b(ux)500 b(Installation)6863 -60960 y Fv(If)400 b(y)-31 b(our)400 b(system)h(has)f(a)g(w)-31 -b(orking)417 b Fo(mak)-31 b(e)401 b Fv(program,)409 b(whic)-31 -b(h)401 b(is)f(the)g(usual)g(case)g(for)g(Unix-)6863 -62289 y(lik)-31 b(e)446 b(en)-31 b(vironmen)g(ts,)466 -b(the)445 b(supplied)f Fq(Makefile)i Fv(installs)g(the)f(executable)h -Fq(pedigree)g Fv(in)6863 63617 y Fq(/usr/local/bin)p -Fv(,)374 b(the)d(libraries)g(in)h Fq(/usr/local/lib/site_perl)i -Fv(and)d(the)g(man)-31 b(ual)6863 64945 y(pages)369 b(in)g -Fq(/usr/local/man)p Fv(.)494 b(This)369 b(is)g(done)f(b)-31 -b(y)369 b(the)g(usual)g(command)h Fq(make)582 b(install)q -Fv(.)p 0 TeXcolorgray 25681 70071 a(4)p 0 TeXcolorgray -eop end -%%Page: 5 5 -TeXDict begin 5 4 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.5) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 6974 a Fv(Optionally)426 b(y)-31 b(ou)424 b(can)g(install)h -(\014les)e(in)h(the)f Fq(doc)h Fv(and)f Fq(examples)h -Fv(sub)31 b(directories)423 b(in)h(the)6863 8302 y(prop)31 -b(er)368 b(places)i(in)f(y)-31 b(our)370 b(system.)6863 -10066 y -SDict begin H.S end - 6863 10066 a 6863 10066 a -SDict begin 12 H.A end - 6863 10066 a 6863 10066 -a -SDict begin [/View [/XYZ H.V]/Dest (subsection.2.3) cvn /DEST pdfmark -end - 6863 10066 a 1335 x Ft(2.3)1495 b(Installation)500 -b(in)f(Other)g(Systems)6863 13444 y Fv(If)310 b(y)-31 -b(our)311 b(system)g(do)31 b(es)310 b(not)i(ha)-31 b(v)g(e)311 -b Fo(mak)-31 b(e)p Fv(,)324 b(y)-31 b(ou)311 b(need)f(to)i(man)-31 -b(ually)313 b(p)31 b(erform)310 b(the)h(follo)-31 b(wing:)6863 -14102 y -SDict begin H.S end - 6863 14102 a 6863 14102 a -SDict begin 12 H.A end - 6863 14102 a 6863 14102 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.5) cvn /DEST pdfmark end - 6863 14102 a 0 TeXcolorgray 8216 15658 a Fv(1.)p 0 -TeXcolorgray 555 w(Install)370 b(the)f(executable)i Fq(pedigree.pl)f -Fv(to)g(the)g(place)g(y)-31 b(our)369 b(system)h(can)f(\014nd)g(it.) -6863 16347 y -SDict begin H.S end - 6863 16347 a 6863 16347 a -SDict begin 12 H.A end - 6863 16347 a 6863 -16347 a -SDict begin [/View [/XYZ H.V]/Dest (Item.6) cvn /DEST pdfmark end - 6863 16347 a 0 TeXcolorgray 8216 17872 a Fv(2.)p -0 TeXcolorgray 555 w(Install)430 b(the)f(libraries:)613 -b Fq(Pedigree.pm)p Fv(,)446 b(directory)429 b Fq(Pedigree)h -Fv(and)g(all)g(\014les)f(in)g(it)9631 19200 y(to)389 -b(the)h Fo(P)-31 b(erl)390 b Fv(searc)-31 b(h)388 b(path.)553 -b(The)390 b(latter)g(is)f(listed)h(in)f(the)g(arra)-31 -b(y)390 b Fq(@INC)p Fv(,)395 b(whic)-31 b(h)390 b(can)9631 -20529 y(b)31 b(e)368 b(c)-31 b(hec)g(k)g(ed)370 b(b)-31 -b(y)370 b(the)f(command)i Fq(perl)582 b(-V)369 b Fv(or)g(its)g(equiv) --61 b(alen)-31 b(t.)6863 22443 y -SDict begin H.S end - 6863 22443 a 6863 22443 -a -SDict begin 12 H.A end - 6863 22443 a 6863 22443 a -SDict begin [/View [/XYZ H.V]/Dest (section.3) cvn /DEST pdfmark end - 6863 22443 a 1746 x Fu(3)1793 -b(Con\014guration)6863 25596 y -SDict begin H.S end - 6863 25596 a 6863 25596 -a -SDict begin 12 H.A end - 6863 25596 a 6863 25596 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.1) cvn /DEST pdfmark -end - 6863 25596 a 1239 x Ft(3.1)1495 -b(Con\014guration)737 b(V)-125 b(ariables)737 b(and)f(Lo)42 -b(cation)735 b(of)f(Con\014gura-)10267 28385 y(tion)499 -b(File)6863 30428 y Fv(The)485 b(program)g(defaults)h(are)f(su\016cien) --31 b(t)485 b(for)g(most)g(cases.)839 b(Ho)-31 b(w)g(ev)g(er,)515 -b(if)486 b(y)-31 b(ou)485 b(w)-31 b(an)g(t)486 b(to)6863 -31757 y(dra)-31 b(w)378 b(p)31 b(edigrees)377 b(in)g(a)h(language)h -(other)e(than)h(English,)j(or)c(to)h(t)-31 b(w)g(eak)379 -b(the)f(la)-31 b(y)g(out)379 b(of)f(the)6863 33085 y(p)31 -b(edigrees,)369 b(y)-31 b(ou)370 b(need)f(to)h(c)-31 -b(hange)370 b(the)g(program)g(con\014guration.)8524 34413 -y(The)426 b(b)31 b(eha)-31 b(vior)428 b(of)f(the)g(program)g -Fo(p)31 b(edigree)427 b Fv(is)g(determined)g(b)-31 b(y)427 -b Fn(c)-57 b(on\014gur)g(ation)450 b(vari-)6863 35742 -y(ables.)806 b Fv(There)474 b(are)f(sev)-31 b(eral)474 -b(sources)f(of)h(con\014guration)i(v)-61 b(ariables.)807 -b(They)475 b(are)e(\(in)i(the)6863 37070 y(order)369 -b(of)g(increasing)h(priorit)-31 b(y\):)6863 37790 y -SDict begin H.S end - 6863 -37790 a 6863 37790 a -SDict begin 12 H.A end - 6863 37790 a 6863 37790 a -SDict begin [/View [/XYZ H.V]/Dest (Item.7) cvn /DEST pdfmark end - 6863 37790 -a 0 TeXcolorgray 8216 39284 a Fv(1.)p 0 TeXcolorgray -555 w(Program)370 b(defaults.)6863 39942 y -SDict begin H.S end - 6863 39942 -a 6863 39942 a -SDict begin 12 H.A end - 6863 39942 a 6863 39942 a -SDict begin [/View [/XYZ H.V]/Dest (Item.8) cvn /DEST pdfmark end - 6863 39942 a -0 TeXcolorgray 8216 41498 a Fv(2.)p 0 TeXcolorgray 555 -w(The)336 b(system)h(con\014guration)h(\014le)p 0 TeXcolorgray -23599 41498 a -SDict begin H.S end - 23599 41498 a -402 x Fp(1)24096 41498 y -SDict begin 12 H.L end - -24096 41498 a 24096 41498 a -SDict begin [/Subtype /Link/Dest (Hfootnote.1) cvn/H /I/Border [0 0 -0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 24096 41498 a 0 TeXcolorgray -336 w Fq(/etc/pedigree.cfg)p Fv(.)484 b(On)336 b(T)37526 -41736 y(E)38142 41498 y(XLiv)-31 b(e)337 b(the)g(sys-)9631 -42826 y(tem)246 b(coniguration)j(\014les)d(are)g Fq($TEXMFHOME/texmf-) -55 b(config/pedigree/pedigree.)9631 44155 y(cfg)369 b -Fv(and)g Fq($TEXMFLOCAL/pedigree/pedigree.cfg)p Fv(.)6863 -44843 y -SDict begin H.S end - 6863 44843 a 6863 44843 a -SDict begin 12 H.A end - 6863 44843 a 6863 44843 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.9) cvn /DEST pdfmark end - 6863 44843 a 0 TeXcolorgray 8216 46369 a Fv(3.)p 0 -TeXcolorgray 555 w(User)f(con\014guration)j(\014le)p -0 TeXcolorgray 20312 46369 a -SDict begin H.S end - 20312 46369 a -402 x Fp(2)20809 -46369 y -SDict begin 12 H.L end - 20809 46369 a 20809 46369 a -SDict begin [/Subtype /Link/Dest (Hfootnote.2) cvn/H /I/Border [0 0 -0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 20809 46369 a 0 TeXcolorgray -369 w Fq($HOME/.pedigreerc)p Fv(.)6863 47057 y -SDict begin H.S end - 6863 47057 -a 6863 47057 a -SDict begin 12 H.A end - 6863 47057 a 6863 47057 a -SDict begin [/View [/XYZ H.V]/Dest (Item.10) cvn /DEST pdfmark end - 6863 47057 a -0 TeXcolorgray 8216 48582 a Fv(4.)p 0 TeXcolorgray 555 -w(The)e(\014le)g(sp)31 b(eci\014ed)369 b(b)-31 b(y)370 -b(the)f Fq(-c)g Fv(option)i(\(see)e(Section)p 0 TeXcolorgray -32668 48582 a -SDict begin H.S end - 32668 48582 a 0 TeXcolorgray Fv(4.1)p 0 -TeXcolorgray 34081 47869 a -SDict begin H.R end - 34081 47869 a 34081 48582 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.1) cvn H.B /ANN pdfmark end - 34081 48582 a 0 TeXcolorgray Fv(\).)6863 50796 y(If)g(a)h(\014le)f -(men)-31 b(tioned)371 b(in)f(this)f(list)h(do)31 b(es)369 -b(not)h(exists,)g(the)f(program)h(silen)-31 b(tly)p 0 -TeXcolorgray 38975 50796 a -SDict begin H.S end - 38975 50796 a -401 x Fp(3)39474 -50796 y -SDict begin 12 H.L end - 39474 50796 a 39474 50796 a -SDict begin [/Subtype /Link/Dest (Hfootnote.3) cvn/H /I/Border [0 0 -0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 39474 50796 a 0 TeXcolorgray -369 w Fv(con)g(tin)g(ues.)8524 52125 y(Note)307 b(that)h(ev)-31 -b(en)307 b(if)g(a)g(con\014guration)i(\014le)e(with)h(higher)f(priorit) --31 b(y)307 b(exists,)320 b(the)307 b(program)6863 53453 -y(reads)472 b(the)i(\014les)e(with)i(lo)-31 b(w)g(er)475 -b(priorit)-31 b(y)474 b(\014rst.)803 b(The)473 b(former)g -Fn(overrides)563 b Fv(the)473 b(latter,)501 b(but)6863 -54781 y(not)449 b(precludes)f(it)i(from)f(reading.)731 -b(In)448 b(other)h(w)-31 b(ords,)469 b(if)449 b Fq(/etc/pedigree.cfg)i -Fv(de\014nes)6863 56110 y(v)-61 b(ariables)402 b Fq($foo)p -0 TeXcolorgray 0 TeXcolorgray 401 w Fv(and)f Fq($bar)p -0 TeXcolorgray 0 TeXcolorgray Fv(,)410 b(and)401 b Fq -($HOME/.pedigreerc)i Fv(de\014nes)d Fq($bar)p 0 TeXcolorgray -0 TeXcolorgray 401 w Fv(and)h Fq($baz)p 0 TeXcolorgray -0 TeXcolorgray 1 w Fv(,)409 b(the)6863 57438 y(program)339 -b(tak)-31 b(es)339 b Fq($foo)p 0 TeXcolorgray 0 TeXcolorgray -339 w Fv(from)g(the)f(\014rst)g(\014le,)345 b(and)338 -b Fq($bar)p 0 TeXcolorgray 0 TeXcolorgray 339 w Fv(and)g -Fq($baz)p 0 TeXcolorgray 0 TeXcolorgray 339 w Fv(from)h(the)f(second)g -(one.)p 0 TeXcolorgray 6863 58362 15276 45 v 8096 59078 -a Fm(1)p 0 TeXcolorgray 8557 59390 a -SDict begin H.S end - 8557 59390 a 8557 -59390 a -SDict begin H.R end - 8557 59390 a 8557 59390 a -SDict begin [/View [/XYZ H.V]/Dest (Hfootnote.1) cvn /DEST pdfmark -end - 8557 59390 a 0 TeXcolorgray -Fl(On)313 b(Unix-lik)-26 b(e)313 b(systems,)h(where)f -Fk(/etc)j Fl(exists)8096 60134 y Fm(2)p 0 TeXcolorgray -8557 60446 a -SDict begin H.S end - 8557 60446 a 8557 60446 a -SDict begin H.R end - 8557 60446 a 8557 -60446 a -SDict begin [/View [/XYZ H.V]/Dest (Hfootnote.2) cvn /DEST pdfmark -end - 8557 60446 a 0 TeXcolorgray Fl(On)d(Unix-lik)-26 -b(e)313 b(systems,)h(where)f Fk($HOME)j Fl(exists)8096 -61190 y Fm(3)p 0 TeXcolorgray 8557 61502 a -SDict begin H.S end - 8557 61502 -a 8557 61502 a -SDict begin H.R end - 8557 61502 a 8557 61502 a -SDict begin [/View [/XYZ H.V]/Dest (Hfootnote.3) cvn /DEST pdfmark -end - 8557 61502 a -0 TeXcolorgray Fl(Unless)e Fk(-)55 b(d)315 b Fl(option)f(is)g -(selected,)h(see)f(Section)p 0 TeXcolorgray 25287 61502 -a -SDict begin H.S end - 25287 61502 a 0 TeXcolorgray Fl(4.1)p 0 TeXcolorgray -26488 60932 a -SDict begin H.R end - 26488 60932 a 26488 61502 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.1) cvn H.B /ANN pdfmark end - 26488 61502 -a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 25681 -70071 a Fv(5)p 0 TeXcolorgray eop end -%%Page: 6 6 -TeXDict begin 6 5 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.6) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 5867 a -SDict begin H.S end - 6863 5867 a 6863 5867 a -SDict begin 12 H.A end - 6863 5867 a 6863 -5867 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.2) cvn /DEST pdfmark -end - 6863 5867 a 1107 x Ft(3.2)1495 b(Con\014guration)501 -b(File)e(F)-125 b(ormat)6863 9017 y Fv(All)299 b(con\014guration)i -(\014les)d(men)-31 b(tioned)300 b(in)e(Section)p 0 TeXcolorgray -27725 9017 a -SDict begin H.S end - 27725 9017 a 0 TeXcolorgray Fv(3.1)p 0 TeXcolorgray -29138 8304 a -SDict begin H.R end - 29138 8304 a 29138 9017 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.1) cvn H.B /ANN pdfmark end - 29138 9017 a 0 -TeXcolorgray Fv(,)314 b(ha)-31 b(v)g(e)299 b(the)f(same)h(format.)471 -b(They)298 b(are)6863 10345 y(actually)393 b(snipp)31 -b(ets)390 b(of)478 b Fo(P)-31 b(erl)391 b Fv(co)31 b(de,)396 -b(executed)391 b(b)-31 b(y)391 b(the)g(program)g Fo(p)31 -b(edigree)p Fv(.)557 b(This)391 b(means,)6863 11674 y(b)-31 -b(y)477 b(the)g(w)-31 b(a)g(y)-92 b(,)505 b(that)478 -b(all)g(precautions)f(usually)h(tak)-31 b(en)478 b(with)g(resp)31 -b(ect)475 b(to)j(programs)f(and)6863 13002 y(scripts,)345 -b(are)339 b(relev)-61 b(an)-31 b(t)340 b(for)f(con\014guration)i -(\014les)e(as)g(w)-31 b(ell.)484 b(In)338 b(particular,)347 -b(it)340 b(is)f(a)g(bad)g(idea)6863 14331 y(to)370 b(ha)-31 -b(v)g(e)370 b(w)-31 b(orld-writable)372 b(system-wide)f -(con\014guration)g(\014le)f Fq(/etc/pedigree.cfg)p Fv(.)8524 -15659 y(The)302 b(co)31 b(de)302 b(in)h(con\014guration)i(\014les)d(is) -g(v)-31 b(ery)302 b(simple,)317 b(and)303 b(one)g(do)31 -b(es)302 b(not)h(need)f(to)h(kno)-31 b(w)6863 16987 y -Fo(P)g(erl)356 b Fv(to)f(edit)h(con\014guration)h(\014les.)488 -b(There)354 b(are)h(sev)-31 b(eral)355 b(simple)h(rules)e(whic)-31 -b(h)356 b(are)e(enough)6863 18316 y(to)370 b(understand)f(these)g -(\014les:)6863 18758 y -SDict begin H.S end - 6863 18758 a 6863 18758 a -SDict begin 12 H.A end - 6863 -18758 a 6863 18758 a -SDict begin [/View [/XYZ H.V]/Dest (Item.11) cvn /DEST pdfmark end - 6863 18758 a 0 TeXcolorgray 8216 -20529 a Fv(1.)p 0 TeXcolorgray 555 w(All)435 b(text)g(after)f -Fj(#)p 0 TeXcolorgray 0 TeXcolorgray 434 w Fv(to)h(the)f(end)g(of)h -(the)f(line)h(is)f(a)g(commen)-31 b(ts.)689 b(In)434 -b(particular,)452 b(the)9631 21858 y(lines)369 b(starting)i(with)f -Fj(#)p 0 TeXcolorgray 0 TeXcolorgray Fv(,)g(are)f(commen)-31 -b(t)371 b(lines.)6863 22516 y -SDict begin H.S end - 6863 22516 a 6863 22516 -a -SDict begin 12 H.A end - 6863 22516 a 6863 22516 a -SDict begin [/View [/XYZ H.V]/Dest (Item.12) cvn /DEST pdfmark end - 6863 22516 a 0 TeXcolorgray -8216 24072 a Fv(2.)p 0 TeXcolorgray 555 w Fo(P)-31 b(erl)370 -b Fv(commands)g(m)-31 b(ust)370 b(end)f(b)-31 b(y)369 -b(semicolon)i Fq(;)p 0 TeXcolorgray 0 TeXcolorgray Fv(.)6863 -24730 y -SDict begin H.S end - 6863 24730 a 6863 24730 a -SDict begin 12 H.A end - 6863 24730 a 6863 24730 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.13) cvn /DEST pdfmark end - 6863 24730 a 0 TeXcolorgray 8216 26286 a Fv(3.)p 0 -TeXcolorgray 555 w(The)e(commands)h(lik)-31 b(e)6863 -26950 y -SDict begin H.S end - 6863 26950 a 6863 26950 a -SDict begin 12 H.A end - 6863 26950 a 6863 26950 -a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.-1) cvn /DEST pdfmark -end - 6863 26950 a 9631 28278 a -SDict begin H.S end - 9631 28278 a 9631 28278 a -SDict begin 12 H.A end - -9631 28278 a 9631 28278 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-1.1) cvn /DEST pdfmark -end - 9631 28278 a 2889 w Fq($)100 -b(x)g(d)g(i)g(s)g(t)195 b(=)97 b(1)g(.)g(5)g(;)p 0 TeXcolorgray -0 TeXcolorgray 9631 30714 a Fv(or)6863 31378 y -SDict begin H.S end - 6863 31378 -a 6863 31378 a -SDict begin 12 H.A end - 6863 31378 a 6863 31378 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.-2) cvn /DEST pdfmark -end - 6863 31378 a -9631 32706 a -SDict begin H.S end - 9631 32706 a 9631 32706 a -SDict begin 12 H.A end - 9631 32706 a 9631 -32706 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-2.1) cvn /DEST pdfmark -end - 9631 32706 a 2898 w Fq(@)109 b(f)g(i)g(e)g(l)g(d)g(s)g(f)g(o)g -(r)g(p)g(r)g(i)g(n)g(t)169 b(=)136 b(q)77 b(w)136 b(\()151 -b(N)93 b(a)g(m)g(e)878 b(D)87 b(o)g(B)166 b(\))77 b(;)p -0 TeXcolorgray 0 TeXcolorgray 9631 35141 a Fv(assign)369 -b(v)-61 b(alues)370 b(to)f(the)h(v)-61 b(ariables.)6863 -35799 y -SDict begin H.S end - 6863 35799 a 6863 35799 a -SDict begin 12 H.A end - 6863 35799 a 6863 35799 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.14) cvn /DEST pdfmark end - 6863 35799 a 0 TeXcolorgray 8216 37355 a Fv(4.)p 0 -TeXcolorgray 555 w(V)-92 b(ariables)390 b(starting)g(with)h -Fq($)p 0 TeXcolorgray 0 TeXcolorgray 389 w Fv(are)e(scalars)h(and)f -(tak)-31 b(e)391 b(n)-31 b(umerical)391 b(or)e(string)g(v)-61 -b(alues.)9631 38684 y(V)-92 b(ariables)370 b(starting)g(with)h -Fq(@)p 0 TeXcolorgray 0 TeXcolorgray 369 w Fv(are)e(arra)-31 -b(ys)369 b(and)g(tak)-31 b(e)371 b(list)f(of)g(v)-61 -b(alues.)6863 39342 y -SDict begin H.S end - 6863 39342 a 6863 39342 a -SDict begin 12 H.A end - 6863 -39342 a 6863 39342 a -SDict begin [/View [/XYZ H.V]/Dest (Item.15) cvn /DEST pdfmark end - 6863 39342 a 0 TeXcolorgray 8216 -40898 a Fv(5.)p 0 TeXcolorgray 555 w(A)301 b(bac)-31 -b(kslash)302 b(in)f(single)h(quotes)g(stands)f(for)h(itself,)316 -b(A)301 b(bac)-31 b(kslash)302 b(in)g(double)f(quotes)9631 -42226 y(or)391 b(inside)g Fq(<<)q(END)p 0 TeXcolorgray -0 TeXcolorgray Fv(.)185 b(.)g(.)g Fq(END)p 0 TeXcolorgray -0 TeXcolorgray 391 w Fv(construction)393 b(m)-31 b(ust)392 -b(b)31 b(e)391 b(doubled.)559 b(Compare)393 b(the)e(com-)9631 -43554 y(mands)6863 44218 y -SDict begin H.S end - 6863 44218 a 6863 44218 a -SDict begin 12 H.A end - -6863 44218 a 6863 44218 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.-3) cvn /DEST pdfmark -end - 6863 44218 a 9631 45547 a -SDict begin H.S end - 9631 -45547 a 9631 45547 a -SDict begin 12 H.A end - 9631 45547 a 9631 45547 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-3.1) cvn /DEST pdfmark -end - 9631 45547 -a 2882 w Fq($)93 b(f)g(o)g(o)152 b(=)135 b(')98 b(\\)166 -b(d)108 b(o)g(c)g(u)g(m)g(e)g(n)g(t)g(c)g(l)g(a)g(s)g(s)186 -b(')97 b(;)9631 46875 y -SDict begin H.S end - 9631 46875 a 9631 46875 a -SDict begin 12 H.A end - 9631 -46875 a 9631 46875 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-3.2) cvn /DEST pdfmark -end - 9631 46875 a 2882 w Fq($)c(b)g(a)g(r)152 -b(=)116 b(")136 b(\\)77 b(\\)186 b(d)108 b(o)g(c)g(u)g(m)g(e)g(n)g(t)g -(c)g(l)g(a)g(s)g(s)167 b(")117 b(;)p 0 TeXcolorgray 0 -TeXcolorgray 6863 48381 a -SDict begin H.S end - 6863 48381 a 6863 48381 a -SDict begin 12 H.A end - 6863 -48381 a 6863 48381 a -SDict begin [/View [/XYZ H.V]/Dest (Item.16) cvn /DEST pdfmark end - 6863 48381 a 0 TeXcolorgray 8216 -49753 a Fv(6.)p 0 TeXcolorgray 555 w(The)369 b(last)h(command)h(in)e -(the)h(\014le)f(m)-31 b(ust)370 b(b)31 b(e)6863 50417 -y -SDict begin H.S end - 6863 50417 a 6863 50417 a -SDict begin 12 H.A end - 6863 50417 a 6863 50417 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.-4) cvn /DEST pdfmark -end - -6863 50417 a 9631 51746 a -SDict begin H.S end - 9631 51746 a 9631 51746 a -SDict begin 12 H.A end - 9631 -51746 a 9631 51746 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-4.1) cvn /DEST pdfmark -end - 9631 51746 a 2867 w Fq(1)77 b(;)p -0 TeXcolorgray 0 TeXcolorgray 8524 54624 a Fv(A)437 b(n)-31 -b(um)g(b)31 b(er)437 b(of)h(commen)-31 b(ted)440 b(con\014guration)f -(\014les)e(can)h(b)31 b(e)437 b(found)h(in)f(the)h Fq(examples)6863 -55952 y Fv(sub)31 b(directory)369 b(of)h(the)f(distribution.)8524 -57281 y(In)311 b(the)h(remaining)i(parts)e(of)g(this)g(section)h(w)-31 -b(e)312 b(describ)31 b(e)311 b(the)h(con\014guration)i(v)-61 -b(ariables)6863 58609 y(in)370 b(detail.)6863 60158 y -SDict begin H.S end - -6863 60158 a 6863 60158 a -SDict begin 12 H.A end - 6863 60158 a 6863 60158 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.3) cvn /DEST pdfmark -end - 6863 -60158 a 1550 x Ft(3.3)1495 b(T)11057 62003 y(E)11851 -61708 y(X)499 b(Output)g(Setup)6863 63751 y Fv(A)286 -b(n)-31 b(um)g(b)31 b(er)285 b(of)h(v)-61 b(ariables)286 -b(determine)g(what)h(kind)f(of)372 b(T)29663 63989 y(E)30279 -63751 y(X)285 b(\014le)h(is)f(pro)31 b(duced.)464 b(An)286 -b(example)6863 65079 y(of)370 b(their)f(usage)h(is)f(sho)-31 -b(wn)370 b(on)f(Listing)p 0 TeXcolorgray 23511 65079 -a -SDict begin H.S end - 23511 65079 a 0 TeXcolorgray Fv(1)p 0 TeXcolorgray -24064 64366 a -SDict begin H.R end - 24064 64366 a 24064 65079 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.1) cvn H.B /ANN pdfmark end - 24064 65079 -a 0 TeXcolorgray Fv(.)p 0 TeXcolorgray 25681 70071 a(6)p -0 TeXcolorgray eop end -%%Page: 7 7 -TeXDict begin 7 6 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.7) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a 6863 6531 a -SDict begin 12 H.A end - 6863 -6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.1) cvn /DEST pdfmark -end - 6863 6531 a 6863 7461 a -SDict begin H.S end - 6863 7461 -a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.1) cvn /DEST pdfmark -end - 6863 7461 a 58 -w Fj(#)833 b(D)77 b(o)854 b(w)77 b(e)868 b(w)93 b(a)g(n)g(t)869 -b(t)77 b(o)868 b(h)93 b(a)g(v)g(e)849 b(a)g(f)93 b(u)g(l)g(l)888 -b(L)97 b(a)g(T)g(e)g(X)6863 8789 y -SDict begin H.S end - 6863 8789 a 6863 8789 -a -SDict begin 12 H.A end - 6863 8789 a 6863 8789 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.2) cvn /DEST pdfmark -end - 6863 8789 a 58 w Fj(#)849 b(f)93 -b(i)g(l)g(e)868 b(o)77 b(r)869 b(j)93 b(u)g(s)g(t)849 -b(a)859 b(f)103 b(r)g(a)g(g)g(m)g(e)g(n)g(t)165 b(?)6863 -10118 y -SDict begin H.S end - 6863 10118 a 6863 10118 a -SDict begin 12 H.A end - 6863 10118 a 6863 10118 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.3) cvn /DEST pdfmark -end - 6863 10118 a 58 w Fj(#)6863 11446 y -SDict begin H.S end - 6863 11446 a 6863 -11446 a -SDict begin 12 H.A end - 6863 11446 a 6863 11446 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.4) cvn /DEST pdfmark -end - 6863 11446 a 103 w -Fq($)103 b(f)g(u)g(l)g(l)g(d)g(o)g(c)194 b(=)87 b(1)g(;)6863 -12774 y -SDict begin H.S end - 6863 12774 a 6863 12774 a -SDict begin 12 H.A end - 6863 12774 a 6863 12774 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.5) cvn /DEST pdfmark -end - 6863 12774 a 6863 14103 a -SDict begin H.S end - 6863 14103 a 6863 14103 a -SDict begin 12 H.A end - -6863 14103 a 6863 14103 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.6) cvn /DEST pdfmark -end - 6863 14103 a 58 w Fj(#)849 -b(W)93 b(h)g(a)g(t)884 b(k)93 b(i)g(n)g(d)868 b(o)77 -b(f)879 b(d)103 b(o)g(c)g(u)g(m)g(e)g(n)g(t)882 b(d)77 -b(o)853 b(w)77 b(e)869 b(w)93 b(a)g(n)g(t)6863 15431 -y -SDict begin H.S end - 6863 15431 a 6863 15431 a -SDict begin 12 H.A end - 6863 15431 a 6863 15431 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.7) cvn /DEST pdfmark -end - -6863 15431 a 58 w Fj(#)6863 16759 y -SDict begin H.S end - 6863 16759 a 6863 -16759 a -SDict begin 12 H.A end - 6863 16759 a 6863 16759 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.8) cvn /DEST pdfmark -end - 6863 16759 a 109 w -Fq($)109 b(d)g(o)g(c)g(u)g(m)g(e)g(n)g(t)g(h)g(e)g(a)g(d)g(e)g(r)169 -b(=)136 b(')97 b(\\)166 b(d)108 b(o)g(c)g(u)g(m)g(e)g(n)g(t)g(c)g(l)g -(a)g(s)g(s)167 b({)160 b(a)102 b(r)g(t)g(i)g(c)g(l)g(e)159 -b(})136 b(')97 b(;)6863 18088 y -SDict begin H.S end - 6863 18088 a 6863 18088 -a -SDict begin 12 H.A end - 6863 18088 a 6863 18088 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.9) cvn /DEST pdfmark -end - 6863 18088 a 6863 19416 a -SDict begin H.S end - -6863 19416 a 6863 19416 a -SDict begin 12 H.A end - 6863 19416 a 6863 19416 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.10) cvn /DEST pdfmark -end - 6863 -19416 a 58 w Fj(#)856 b(D)100 b(e)g(f)g(i)g(n)g(e)901 -b(a)106 b(d)g(d)g(i)g(t)g(i)g(o)g(n)g(a)g(l)905 b(p)103 -b(a)g(c)g(k)g(a)g(g)g(e)g(s)897 b(h)93 b(e)g(r)g(e)6863 -20744 y -SDict begin H.S end - 6863 20744 a 6863 20744 a -SDict begin 12 H.A end - 6863 20744 a 6863 20744 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.11) cvn /DEST pdfmark -end - 6863 20744 a 58 w Fj(#)6863 22073 y -SDict begin H.S end - 6863 22073 a 6863 -22073 a -SDict begin 12 H.A end - 6863 22073 a 6863 22073 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.12) cvn /DEST pdfmark -end - 6863 22073 a 108 w -Fq($)108 b(a)g(d)g(d)g(t)g(o)g(p)g(r)g(e)g(a)g(m)g(b)g(l)g(e)176 -b(=)116 b(<)g(<)146 b(E)87 b(N)g(D)146 b(;)6863 23401 -y -SDict begin H.S end - 6863 23401 a 6863 23401 a -SDict begin 12 H.A end - 6863 23401 a 6863 23401 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.13) cvn /DEST pdfmark -end - -6863 23401 a 77 w Fq(\\)77 b(\\)185 b(u)106 b(s)g(e)g(p)g(a)g(c)g(k)g -(a)g(g)g(e)162 b({)128 b(p)70 b(s)g(t)197 b(-)152 b(p)93 -b(d)g(g)g(r)151 b(})6863 24729 y -SDict begin H.S end - 6863 24729 a 6863 24729 -a -SDict begin 12 H.A end - 6863 24729 a 6863 24729 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.14) cvn /DEST pdfmark -end - 6863 24729 a 87 w Fq(E)87 -b(N)g(D)6863 26058 y -SDict begin H.S end - 6863 26058 a 6863 26058 a -SDict begin 12 H.A end - 6863 26058 -a 6863 26058 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.15) cvn /DEST pdfmark -end - 6863 26058 a 6863 27386 a -SDict begin H.S end - 6863 27386 a -6863 27386 a -SDict begin 12 H.A end - 6863 27386 a 6863 27386 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.16) cvn /DEST pdfmark -end - 6863 27386 a 58 -w Fj(#)833 b(D)77 b(o)854 b(w)77 b(e)868 b(w)93 b(a)g(n)g(t)869 -b(t)77 b(o)872 b(p)97 b(r)g(i)g(n)g(t)853 b(a)i(l)100 -b(e)g(g)g(e)g(n)g(d)157 b(?)6863 28715 y -SDict begin H.S end - 6863 28715 a -6863 28715 a -SDict begin 12 H.A end - 6863 28715 a 6863 28715 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.17) cvn /DEST pdfmark -end - 6863 28715 a 58 -w Fj(#)6863 30043 y -SDict begin H.S end - 6863 30043 a 6863 30043 a -SDict begin 12 H.A end - 6863 30043 -a 6863 30043 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.1.18) cvn /DEST pdfmark -end - 6863 30043 a 107 w Fq($)107 b(p)g(r)g(i)g(n)g(t)g(l)g(e) -g(g)g(e)g(n)g(d)200 b(=)87 b(1)g(;)p 0 TeXcolorgray 0 -TeXcolorgray 13692 32478 a Fv(Listing)371 b(1:)493 b(Con\014guration) -372 b(File:)493 b(Setting)386 b(T)32842 32717 y(E)33458 -32478 y(X)369 b(Output)p 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 8524 37809 a(The)563 b(v)-61 b(ariable)564 -b Fq($fulldoc)p 0 TeXcolorgray 0 TeXcolorgray 565 w Fv(determines)f -(whether)h(the)f(program)h(pro)31 b(duces)563 b(a)g(full)6863 -39137 y(L)7156 38910 y Fp(A)7644 39137 y Fv(T)8258 39375 -y(E)8874 39137 y(X)541 b(\014le)g(with)i(header)e(and)g(pream)-31 -b(ble)542 b(\(when)g Fq($fulldoc)q(=1)p 0 TeXcolorgray -0 TeXcolorgray Fv(\),)585 b(or)541 b(just)h(a)f(snipp)31 -b(et)6863 40465 y(to)370 b(b)31 b(e)369 b(included)h(in)f(a)h(larger)f -(do)31 b(cumen)-31 b(t)370 b(\(when)g Fq($fulldoc)r(=0)p -0 TeXcolorgray 0 TeXcolorgray Fv(\).)493 b(The)369 b(default)i(is)e(1.) -8524 41794 y(The)416 b(v)-61 b(ariable)417 b Fq($documentheader)p -0 TeXcolorgray 0 TeXcolorgray 418 w Fv(is)f(used)g(when)g -Fq($fulldoc)p 0 TeXcolorgray 0 TeXcolorgray 417 w Fv(is)g(1.)634 -b(It)416 b(determines)6863 43122 y(the)337 b(do)31 b(cumen)-31 -b(t)339 b(class)e(of)g(the)g(resulting)354 b(L)24312 -42895 y Fp(A)24800 43122 y Fv(T)25414 43360 y(E)26029 -43122 y(X)337 b(\014le.)483 b(The)337 b(default)h(is)f -Fq(article)h Fv(class,)344 b(set)6863 44450 y(b)-31 b(y)370 -b Fq(\\documentclass{article})s Fv(.)8524 45779 y(By)375 -b(default)h(the)f(pream)-31 b(ble)376 b(of)g(the)f(L)24152 -45552 y Fp(A)24640 45779 y Fv(T)25254 46017 y(E)25870 -45779 y(X)g(\014le)g(created)g(when)h Fq($fulldoc)p 0 -TeXcolorgray 0 TeXcolorgray 376 w Fv(is)f(1,)i(con-)6863 -47107 y(tains)391 b(only)f(the)g(line)h Fq(\\usepackage{pst-pdgr})h -Fv(and,)k(if)390 b(the)g(language)i(c)-31 b(hosen)390 -b(is)f(not)6863 48435 y(English)331 b(\(see)f(Section)p -0 TeXcolorgray 16796 48435 a -SDict begin H.S end - 16796 48435 a 0 TeXcolorgray -Fv(3.5)p 0 TeXcolorgray 18209 47722 a -SDict begin H.R end - 18209 47722 a 18209 -48435 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.5) cvn H.B /ANN pdfmark end - 18209 48435 a 0 TeXcolorgray Fv(\),)340 b(the)330 -b(calls)h(of)416 b Fo(bab)31 b(el)330 b Fv(and)f Fo(inputenc)h -Fv(pac)-31 b(k)-61 b(ages.)480 b(The)330 b(v)-61 b(ariable)6863 -49764 y Fq($addtopreamble)p 0 TeXcolorgray 0 TeXcolorgray -2 w Fv(,)420 b(if)411 b(set,)420 b(ma)-31 b(y)411 b(con)-31 -b(tain)412 b(an)-31 b(y)410 b(other)h(L)30612 49537 y -Fp(A)31100 49764 y Fv(T)31714 50002 y(E)32329 49764 y(X)f(co)31 -b(de)410 b(y)-31 b(ou)410 b(migh)-31 b(t)412 b(wish)e(to)6863 -51092 y(add)370 b(to)g(the)f(pream)-31 b(ble.)8524 52420 -y(The)396 b(v)-61 b(ariable)397 b Fq($printlegend)p 0 -TeXcolorgray 0 TeXcolorgray 397 w Fv(determines)g(whether)f(to)g(add)h -(legend)f(to)h(the)f(p)31 b(edi-)6863 53749 y(gree.)493 -b(The)369 b(default)i(v)-61 b(alue)369 b(is)g(1,)h(and)g(the)f(legend)h -(is)f(prin)-31 b(ted.)6863 55513 y -SDict begin H.S end - 6863 55513 a 6863 -55513 a -SDict begin 12 H.A end - 6863 55513 a 6863 55513 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.4) cvn /DEST pdfmark -end - 6863 55513 a 1334 x -Ft(3.4)1495 b(What)499 b(to)f(Prin)-42 b(t)6863 58891 -y Fv(The)335 b(next)h(groups)f(of)h(con\014guration)h(v)-61 -b(ariables)336 b(sets)e(the)i(information)i(to)e(b)31 -b(e)334 b(prin)-31 b(ted)336 b(in)6863 60219 y(the)247 -b(legend)f(and)h(on)f(the)h(p)31 b(edigree.)451 b(It)247 -b(consists)f(of)h(t)-31 b(w)g(o)248 b(arra)-31 b(ys:)431 -b(arra)-31 b(y)246 b Fq(@fieldsforlegend)p 0 TeXcolorgray -0 TeXcolorgray 6863 61547 a Fv(is)359 b(the)f(list)i(of)f(\014elds)g -(\(see)f(Section)p 0 TeXcolorgray 21850 61547 a -SDict begin H.S end - 21850 -61547 a 0 TeXcolorgray Fv(4.2)p 0 TeXcolorgray 23263 -60834 a -SDict begin H.R end - 23263 60834 a 23263 61547 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.2) cvn H.B /ANN pdfmark end - 23263 61547 a 0 TeXcolorgray -Fv(\))i(whic)-31 b(h)360 b(are)e(included)h(in)g(the)g(legend,)j(and)d -(arra)-31 b(y)6863 62876 y Fq(@fieldsforchart)p 0 TeXcolorgray -0 TeXcolorgray 463 w Fv(is)460 b(the)h(list)g(of)g(\014elds)g(to)g -(prin)-31 b(t)461 b(near)f(eac)-31 b(h)461 b(no)31 b(de)461 -b(in)f(the)h(p)31 b(edigree)6863 64204 y(\(Listing)p -0 TeXcolorgray 11005 64204 a -SDict begin H.S end - 11005 64204 a 0 TeXcolorgray -Fv(2)p 0 TeXcolorgray 11558 63491 a -SDict begin H.R end - 11558 63491 a 11558 -64204 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.2) cvn H.B /ANN pdfmark end - 11558 64204 a 0 TeXcolorgray Fv(\).)493 b(Setting)371 -b Fq(@fieldsforchart)p 0 TeXcolorgray 0 TeXcolorgray -372 w Fv(to)f(empt)-31 b(y)370 b(arra)-31 b(y:)6863 65145 -y -SDict begin H.S end - 6863 65145 a 6863 65145 a -SDict begin 12 H.A end - 6863 65145 a 6863 65145 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.-5) cvn /DEST pdfmark -end - -6863 65145 a 6863 66197 a -SDict begin H.S end - 6863 66197 a 6863 66197 a -SDict begin 12 H.A end - 6863 -66197 a 6863 66197 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-5.1) cvn /DEST pdfmark -end - 6863 66197 a 109 w Fq(@)109 b(f)g(i)g(e)g(l)g(d)g -(s)g(f)g(o)g(r)g(c)g(h)g(a)g(r)g(t)866 b(=)843 b(\()87 -b(\))g(;)p 0 TeXcolorgray 0 TeXcolorgray 25681 70071 -a Fv(7)p 0 TeXcolorgray eop end -%%Page: 8 8 -TeXDict begin 8 7 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.8) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a 6863 6531 a -SDict begin 12 H.A end - 6863 -6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.2) cvn /DEST pdfmark -end - 6863 6531 a 6863 7461 a -SDict begin H.S end - 6863 7461 -a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.1) cvn /DEST pdfmark -end - 6863 7461 a 58 -w Fj(#)856 b(F)100 b(i)g(e)g(l)g(d)g(s)873 b(t)77 b(o)877 -b(i)102 b(n)g(c)g(l)g(u)g(d)g(e)876 b(i)77 b(n)863 b(t)87 -b(h)g(e)885 b(l)100 b(e)g(g)g(e)g(n)g(d)157 b(.)6863 -8789 y -SDict begin H.S end - 6863 8789 a 6863 8789 a -SDict begin 12 H.A end - 6863 8789 a 6863 8789 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.2) cvn /DEST pdfmark -end - 6863 8789 a 58 w Fj(#)856 b(D)100 b(e)g(l)g(e)g(t)g(e)889 -b(N)93 b(a)g(m)g(e)878 b(f)87 b(o)g(r)887 b(p)102 b(r)g(i)g(v)g(a)g(c)g -(y)904 b(p)106 b(r)g(o)g(t)g(e)g(c)g(t)g(i)g(o)g(n)162 -b(.)6863 10118 y -SDict begin H.S end - 6863 10118 a 6863 10118 a -SDict begin 12 H.A end - 6863 10118 -a 6863 10118 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.3) cvn /DEST pdfmark -end - 6863 10118 a 58 w Fj(#)6863 11446 y -SDict begin H.S end - 6863 -11446 a 6863 11446 a -SDict begin 12 H.A end - 6863 11446 a 6863 11446 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.4) cvn /DEST pdfmark -end - 6863 11446 -a 109 w Fq(@)109 b(f)g(i)g(e)g(l)g(d)g(s)g(f)g(o)g(r)g(l)g(e)g(g)g(e)g -(n)g(d)874 b(=)833 b(q)77 b(w)136 b(\()152 b(N)93 b(a)g(m)g(e)878 -b(D)87 b(o)g(B)872 b(D)87 b(o)g(D)887 b(C)102 b(o)g(m)g(m)g(e)g(n)g(t) -179 b(\))77 b(;)6863 12774 y -SDict begin H.S end - 6863 12774 a 6863 12774 -a -SDict begin 12 H.A end - 6863 12774 a 6863 12774 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.5) cvn /DEST pdfmark -end - 6863 12774 a 6863 14103 a -SDict begin H.S end - -6863 14103 a 6863 14103 a -SDict begin 12 H.A end - 6863 14103 a 6863 14103 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.6) cvn /DEST pdfmark -end - 6863 -14103 a 58 w Fj(#)6863 15431 y -SDict begin H.S end - 6863 15431 a 6863 15431 -a -SDict begin 12 H.A end - 6863 15431 a 6863 15431 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.7) cvn /DEST pdfmark -end - 6863 15431 a 58 w Fj(#)856 -b(F)100 b(i)g(e)g(l)g(d)g(s)873 b(t)77 b(o)863 b(p)87 -b(u)g(t)863 b(a)77 b(t)863 b(t)87 b(h)g(e)878 b(n)93 -b(o)g(d)g(e)152 b(.)6863 16759 y -SDict begin H.S end - 6863 16759 a 6863 16759 -a -SDict begin 12 H.A end - 6863 16759 a 6863 16759 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.8) cvn /DEST pdfmark -end - 6863 16759 a 58 w Fj(#)856 -b(D)100 b(e)g(l)g(e)g(t)g(e)889 b(N)93 b(a)g(m)g(e)878 -b(f)87 b(o)g(r)887 b(p)102 b(r)g(i)g(v)g(a)g(c)g(y)904 -b(p)106 b(r)g(o)g(t)g(e)g(c)g(t)g(i)g(o)g(n)162 b(.)6863 -18088 y -SDict begin H.S end - 6863 18088 a 6863 18088 a -SDict begin 12 H.A end - 6863 18088 a 6863 18088 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.9) cvn /DEST pdfmark -end - 6863 18088 a 58 w Fj(#)6863 19416 y -SDict begin H.S end - 6863 19416 a 6863 -19416 a -SDict begin 12 H.A end - 6863 19416 a 6863 19416 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.2.10) cvn /DEST pdfmark -end - 6863 19416 a 109 w -Fq(@)109 b(f)g(i)g(e)g(l)g(d)g(s)g(f)g(o)g(r)g(c)g(h)g(a)g(r)g(t)866 -b(=)834 b(q)77 b(w)136 b(\()151 b(N)93 b(a)g(m)g(e)171 -b(\))77 b(;)p 0 TeXcolorgray 0 TeXcolorgray 12632 21851 -a Fv(Listing)370 b(2:)493 b(Con\014guration)372 b(File:)493 -b(Cho)31 b(osing)371 b(Fields)e(to)h(Prin)-31 b(t)p 0 -TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 27159 a(prev)g(en)g(ts)369 b(putting)i(additional)i(information)f -(on)d(the)h(p)31 b(edigrees.)8524 28487 y(The)549 b(\014eld)h(names)g -(are)f(describ)31 b(ed)548 b(in)i(Section)p 0 TeXcolorgray -29760 28487 a -SDict begin H.S end - 29760 28487 a 0 TeXcolorgray Fv(4.2)p 0 -TeXcolorgray 31173 27774 a -SDict begin H.R end - 31173 27774 a 31173 28487 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.2) cvn H.B /ANN pdfmark end - 31173 28487 a 0 TeXcolorgray Fv(.)1034 b(Note)551 b(that)f -Fq(AgeAtDeath)h Fv(is)6863 29815 y(a)479 b(sp)31 b(ecial)478 -b(\014eld:)712 b(it)479 b(is)f(the)g(age)h(at)g(death)g(\(or)g(empt)-31 -b(y\))480 b(calculated)g(as)e(the)h(di\013erence)6863 -31144 y(b)31 b(et)-31 b(w)g(een)370 b(the)g(death)g(date)f(and)h(the)f -(birth)h(date.)6863 32693 y -SDict begin H.S end - 6863 32693 a 6863 32693 a -SDict begin 12 H.A end - -6863 32693 a 6863 32693 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.5) cvn /DEST pdfmark -end - 6863 32693 a 1549 x Ft(3.5)1495 -b(Language)500 b(and)f(Enco)42 b(ding)6863 36286 y Fv(The)460 -b(next)f(group)h(of)f(v)-61 b(ariables)460 b(describ)31 -b(es)458 b(the)h(language)i(and)f(enco)31 b(ding)460 -b(of)f(the)h(data)6863 37614 y(\014le)466 b(input)h(and)f(the)g(L)16337 -37387 y Fp(A)16825 37614 y Fv(T)17439 37852 y(E)18055 -37614 y(X)g(output.)784 b(They)467 b(are)f(sho)-31 b(wn)466 -b(in)g(Listing)p 0 TeXcolorgray 37253 37614 a -SDict begin H.S end - 37253 37614 -a 0 TeXcolorgray Fv(3)p 0 TeXcolorgray 37806 36901 a -SDict begin H.R end - -37806 36901 a 37806 37614 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.3) cvn H.B /ANN pdfmark end - 37806 37614 a 0 TeXcolorgray -Fv(.)783 b(The)466 b(v)-61 b(ariable)6863 38942 y Fq($language)p -0 TeXcolorgray 0 TeXcolorgray 508 w Fv(at)507 b(presen)-31 -b(t)506 b(can)g(ha)-31 b(v)g(e)508 b(one)e(of)h(t)-31 -b(w)g(o)508 b(v)-61 b(alues:)768 b Fq(english)507 b Fv(\(the)g -(default\))h(or)6863 40271 y Fq(russian)q Fv(.)582 b(If)399 -b(the)h(v)-61 b(alue)399 b(is)g Fq(russian)q Fv(,)407 -b(the)400 b(output)g(do)31 b(cumen)-31 b(t)400 b(pream)-31 -b(ble)400 b(includes)g(the)6863 41599 y(line)6863 42263 -y -SDict begin H.S end - 6863 42263 a 6863 42263 a -SDict begin 12 H.A end - 6863 42263 a 6863 42263 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.-6) cvn /DEST pdfmark -end - -6863 42263 a 6863 43592 a -SDict begin H.S end - 6863 43592 a 6863 43592 a -SDict begin 12 H.A end - 6863 -43592 a 6863 43592 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.-6.1) cvn /DEST pdfmark -end - 6863 43592 a 58 w Fq(\\)164 b(u)106 -b(s)g(e)g(p)g(a)g(c)g(k)g(a)g(g)g(e)162 b([)e(r)102 b(u)g(s)g(s)g(i)g -(a)g(n)179 b(])77 b({)175 b(b)97 b(a)g(b)g(e)g(l)155 -b(})p 0 TeXcolorgray 0 TeXcolorgray 6863 45584 a Fv(The)301 -b(v)-61 b(ariable)302 b Fq($encoding)p 0 TeXcolorgray -0 TeXcolorgray 302 w Fv(sets)e(the)h(enco)31 b(ding)301 -b(of)h(the)e(L)30518 45357 y Fp(A)31006 45584 y Fv(T)31620 -45822 y(E)32236 45584 y(X)h(\014le)g(if)g(the)g(language)i(is)d(not) -6863 46912 y(English.)639 b(By)418 b(default)h(it)f(is)g -Fq(cp1251)p Fv(,)430 b(if)418 b(the)g(language)i(is)d(Russian.)638 -b(Set)418 b(it)g(to)g Fq(koi8-r)6863 48241 y Fv(to)371 -b(c)-31 b(ho)31 b(ose)370 b(K)-31 b(OI8)371 b(enco)31 -b(ding.)496 b(It)370 b(is)g(w)-31 b(orth)371 b(to)g(note)g(that)g(the)g -(data)g(\014le)f(and)h(the)f(output)6863 49569 y(L)7156 -49342 y Fp(A)7644 49569 y Fv(T)8258 49807 y(E)8874 49569 -y(X)f(\014le)g(are)g(assumed)h(to)g(ha)-31 b(v)g(e)370 -b(the)f(same)h(language)h(and)e(enco)31 b(ding.)8524 -50898 y(If)252 b Fq($language)j Fv(is)e(not)g Fq(english)q -Fv(,)277 b(the)253 b(program)h(recognizes)f(b)31 b(oth)254 -b(English)g(and)f(nativ)-31 b(e)6863 52226 y(names)370 -b(of)f(the)h(\014elds)f(in)g(the)h(data)g(\014le)g(\(see)f(Section)p -0 TeXcolorgray 29851 52226 a -SDict begin H.S end - 29851 52226 a 0 TeXcolorgray -Fv(4.2)p 0 TeXcolorgray 31264 51513 a -SDict begin H.R end - 31264 51513 a 31264 -52226 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.2) cvn H.B /ANN pdfmark end - 31264 52226 a 0 TeXcolorgray Fv(\).)6863 54052 -y -SDict begin H.S end - 6863 54052 a 6863 54052 a -SDict begin 12 H.A end - 6863 54052 a 6863 54052 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.6) cvn /DEST pdfmark -end - -6863 54052 a 1273 x Ft(3.6)1495 b(F)-125 b(on)-42 b(ts)6863 -57368 y Fv(There)421 b(are)f(t)-31 b(w)g(o)423 b(kinds)e(of)g(text)h -(on)e(the)h(c)-31 b(hart:)597 b(the)421 b(text)g(ab)31 -b(o)-31 b(v)g(e)422 b(a)f(no)31 b(de)421 b(and)g(the)g(text)6863 -58696 y(b)31 b(elo)-31 b(w)314 b(a)f(no)31 b(de)p 0 TeXcolorgray -13115 58696 a -SDict begin H.S end - 13115 58696 a -401 x Fp(4)13612 58696 y -SDict begin 12 H.L end - -13612 58696 a 13612 58696 a -SDict begin [/Subtype /Link/Dest (Hfootnote.4) cvn/H /I/Border [0 0 -0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 13612 58696 a 0 TeXcolorgray -Fv(.)473 b(The)313 b(fon)-31 b(ts)314 b(for)f(them)g(are)g(set)f(b)-31 -b(y)313 b(the)g(v)-61 b(ariables)314 b Fq($belowtextfont)p -0 TeXcolorgray 0 TeXcolorgray 314 w Fv(\(b)-31 b(y)6863 -60025 y(default)470 b Fq(\\small)q Fv(\))e(and)h Fq($abovetextfont)p -0 TeXcolorgray 0 TeXcolorgray 470 w Fv(\(b)-31 b(y)469 -b(default)h Fq(\\scriptsize)q Fv(\).)790 b(An)-31 b(y)484 -b(L)42505 59798 y Fp(A)42993 60025 y Fv(T)43607 60263 -y(E)44223 60025 y(X)6863 61353 y(fon)-31 b(t)398 b(declaration)g(lik) --31 b(e)398 b Fq(\\sffamily)g Fv(or)e Fq(\\itshape)h -Fv(is)g(allo)-31 b(w)g(ed)399 b(here.)573 b(See)397 b(Listing)p -0 TeXcolorgray 42778 61353 a -SDict begin H.S end - 42778 61353 a 0 TeXcolorgray -Fv(4)p 0 TeXcolorgray 43331 60640 a -SDict begin H.R end - 43331 60640 a 43331 -61353 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.4) cvn H.B /ANN pdfmark end - 43331 61353 a 0 TeXcolorgray 397 w Fv(for)6863 -62681 y(an)370 b(example)g(of)g(usage.)p 0 TeXcolorgray -6863 63605 15276 45 v 8096 64321 a Fm(4)p 0 TeXcolorgray -8557 64633 a -SDict begin H.S end - 8557 64633 a 8557 64633 a -SDict begin H.R end - 8557 64633 a 8557 -64633 a -SDict begin [/View [/XYZ H.V]/Dest (Hfootnote.4) cvn /DEST pdfmark -end - 8557 64633 a 0 TeXcolorgray Fl(The)303 b(T)11004 -64824 y(E)11526 64633 y(X)g(pac)-26 b(k)-52 b(age)305 -b([)p 0 TeXcolorgray 16288 64633 a -SDict begin H.S end - 16288 64633 a 0 TeXcolorgray -Fl(2)p 0 TeXcolorgray 16758 64063 a -SDict begin H.R end - 16758 64063 a 16758 -64633 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.pst-pdgr06) cvn H.B /ANN pdfmark end - 16758 64633 a 0 TeXcolorgray Fl(])f(also)h(allo)-26 -b(ws)305 b(to)f(place)h(text)e(at)h(b)26 b(oth)304 b(sides)g(of)f(the)h -(no)26 b(de,)306 b(but)d(the)h(program)6863 65685 y Fi(p)26 -b(edigree)315 b Fl(curren)-26 b(tly)313 b(do)26 b(es)314 -b(not)g(use)g(this)g(feature.)p 0 TeXcolorgray 0 TeXcolorgray -25681 70071 a Fv(8)p 0 TeXcolorgray eop end -%%Page: 9 9 -TeXDict begin 9 8 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.9) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a 6863 6531 a -SDict begin 12 H.A end - 6863 -6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.3) cvn /DEST pdfmark -end - 6863 6531 a 6863 7461 a -SDict begin H.S end - 6863 7461 -a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.1) cvn /DEST pdfmark -end - 6863 7461 a 58 -w Fj(#)6863 8789 y -SDict begin H.S end - 6863 8789 a 6863 8789 a -SDict begin 12 H.A end - 6863 8789 -a 6863 8789 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.2) cvn /DEST pdfmark -end - 6863 8789 a 58 w Fj(#)859 b(L)103 b(a)g(n)g(g)g(u)g(a)g -(g)g(e)6863 10118 y -SDict begin H.S end - 6863 10118 a 6863 10118 a -SDict begin 12 H.A end - 6863 10118 -a 6863 10118 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.3) cvn /DEST pdfmark -end - 6863 10118 a 58 w Fj(#)6863 11446 y -SDict begin H.S end - 6863 -11446 a 6863 11446 a -SDict begin 12 H.A end - 6863 11446 a 6863 11446 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.4) cvn /DEST pdfmark -end - 6863 11446 -a 58 w Fj(#)861 b Fh($)105 b Fj(l)g(a)g(n)g(g)g(u)g(a)g(g)g(e)180 -b(=)77 b(")180 b(r)102 b(u)g(s)g(s)g(i)g(a)g(n)178 b(")77 -b(;)6863 12774 y -SDict begin H.S end - 6863 12774 a 6863 12774 a -SDict begin 12 H.A end - 6863 12774 -a 6863 12774 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.5) cvn /DEST pdfmark -end - 6863 12774 a 105 w Fq($)105 b(l)g(a)g(n)g(g)g(u)g(a)g(g) -g(e)161 b(=)116 b(")160 b(e)102 b(n)g(g)g(l)g(i)g(s)g(h)159 -b(")117 b(;)6863 14103 y -SDict begin H.S end - 6863 14103 a 6863 14103 a -SDict begin 12 H.A end - 6863 -14103 a 6863 14103 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.6) cvn /DEST pdfmark -end - 6863 14103 a 6863 15431 a -SDict begin H.S end - 6863 15431 -a 6863 15431 a -SDict begin 12 H.A end - 6863 15431 a 6863 15431 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.7) cvn /DEST pdfmark -end - 6863 15431 a -58 w Fj(#)6863 16759 y -SDict begin H.S end - 6863 16759 a 6863 16759 a -SDict begin 12 H.A end - 6863 -16759 a 6863 16759 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.8) cvn /DEST pdfmark -end - 6863 16759 a 58 w Fj(#)859 b(O)103 -b(v)g(e)g(r)g(r)g(i)g(d)g(e)892 b(t)87 b(h)g(e)888 b(e)103 -b(n)g(c)g(o)g(d)g(i)g(n)g(g)6863 18088 y -SDict begin H.S end - 6863 18088 a -6863 18088 a -SDict begin 12 H.A end - 6863 18088 a 6863 18088 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.9) cvn /DEST pdfmark -end - 6863 18088 a 58 -w Fj(#)6863 19416 y -SDict begin H.S end - 6863 19416 a 6863 19416 a -SDict begin 12 H.A end - 6863 19416 -a 6863 19416 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.3.10) cvn /DEST pdfmark -end - 6863 19416 a 58 w Fj(#)861 b Fh($)105 -b Fj(e)g(n)g(c)g(o)g(d)g(i)g(n)g(g)180 b(=)77 b(")156 -b(k)77 b(o)g(i)g(8)215 b(-)116 b(r)136 b(")77 b(;)p 0 -TeXcolorgray 0 TeXcolorgray 10345 21851 a Fv(Listing)371 -b(3:)493 b(Con\014guration)372 b(File:)493 b(Cho)31 b(osing)370 -b(Language)h(and)f(Enco)31 b(ding)p 0 TeXcolorgray 0 -TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 6863 25830 -a -SDict begin H.S end - 6863 25830 a 6863 25830 a -SDict begin 12 H.A end - 6863 25830 a 6863 25830 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.4) cvn /DEST pdfmark -end - -6863 25830 a 6863 26760 a -SDict begin H.S end - 6863 26760 a 6863 26760 a -SDict begin 12 H.A end - 6863 -26760 a 6863 26760 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.4.1) cvn /DEST pdfmark -end - 6863 26760 a 58 w Fj(#)6863 28088 -y -SDict begin H.S end - 6863 28088 a 6863 28088 a -SDict begin 12 H.A end - 6863 28088 a 6863 28088 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.4.2) cvn /DEST pdfmark -end - -6863 28088 a 58 w Fj(#)853 b(F)97 b(o)g(n)g(t)g(s)881 -b(f)87 b(o)g(r)873 b(t)87 b(h)g(e)882 b(c)97 b(h)g(a)g(r)g(t)6863 -29417 y -SDict begin H.S end - 6863 29417 a 6863 29417 a -SDict begin 12 H.A end - 6863 29417 a 6863 29417 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.4.3) cvn /DEST pdfmark -end - 6863 29417 a 58 w Fj(#)6863 30745 y -SDict begin H.S end - 6863 30745 a 6863 -30745 a -SDict begin 12 H.A end - 6863 30745 a 6863 30745 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.4.4) cvn /DEST pdfmark -end - 6863 30745 a 108 w -Fq($)108 b(b)g(e)g(l)g(o)g(w)g(t)g(e)g(x)g(t)g(f)g(o)g(n)g(t)176 -b(=)135 b(')97 b(\\)156 b(s)97 b(m)g(a)g(l)g(l)174 b(')97 -b(;)6863 32074 y -SDict begin H.S end - 6863 32074 a 6863 32074 a -SDict begin 12 H.A end - 6863 32074 -a 6863 32074 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.4.5) cvn /DEST pdfmark -end - 6863 32074 a 108 w Fq($)108 b(a)g(b)g(o)g(v)g(e)g(t)g(e) -g(x)g(t)g(f)g(o)g(n)g(t)176 b(=)135 b(')97 b(\\)164 b(s)106 -b(c)g(r)g(i)g(p)g(t)g(s)g(i)g(z)g(e)182 b(')97 b(;)p -0 TeXcolorgray 0 TeXcolorgray 14870 34509 a Fv(Listing)371 -b(4:)492 b(Con\014guration)372 b(File:)493 b(Cho)31 b(osing)371 -b(F)-92 b(on)-31 b(ts)p 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 38709 a -SDict begin H.S end - 6863 38709 a 6863 38709 a -SDict begin 12 H.A end - -6863 38709 a 6863 38709 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.7) cvn /DEST pdfmark -end - 6863 38709 a 1107 x Ft(3.7)1495 -b(Lengths)6863 41859 y Fv(The)391 b(next)g(group)g(of)g(v)-61 -b(ariables)392 b(\(Listing)p 0 TeXcolorgray 24891 41859 -a -SDict begin H.S end - 24891 41859 a 0 TeXcolorgray Fv(5)p 0 TeXcolorgray -25444 41146 a -SDict begin H.R end - 25444 41146 a 25444 41859 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.5) cvn H.B /ANN pdfmark end - 25444 41859 -a 0 TeXcolorgray Fv(\))g(sets)e(the)h(distances)g(b)31 -b(et)-31 b(w)g(een)392 b(the)f(k)-31 b(ey)391 b(ele-)6863 -43188 y(men)-31 b(ts)283 b(of)f(the)h(c)-31 b(hart.)464 -b(All)283 b(lengths)g(are)f(in)g(cen)-31 b(timeters)283 -b(\(actually)-92 b(,)303 b(in)282 b Fq(unit)q Fv(s,)299 -b(are)282 b(de\014ned)6863 44516 y(in)370 b(PST)-92 b(ric)-31 -b(ks)369 b([)p 0 TeXcolorgray 13129 44516 a -SDict begin H.S end - 13129 44516 -a 0 TeXcolorgray Fv(3)p 0 TeXcolorgray 13682 43803 a -SDict begin H.R end - -13682 43803 a 13682 44516 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.PSTricks93) cvn H.B /ANN pdfmark end - 13682 44516 a 0 TeXcolorgray -1 w Fv(]\).)8524 45844 y(The)419 b(v)-61 b(ariable)421 -b Fq($descarmA)p 0 TeXcolorgray 0 TeXcolorgray 421 w -Fv(sets)e(the)h(length)h(of)f(the)g(\014rst)f(segmen)-31 -b(t)421 b(of)f(the)g(descen)-31 b(t)6863 47173 y(line:)526 -b(from)387 b(the)f(paren)-31 b(t)386 b(no)31 b(de)385 -b(to)i(the)f(sibs)f(line,)391 b(as)385 b(measured)h(from)g(the)g(cen) --31 b(ter)386 b(of)g(the)6863 48501 y(paren)-31 b(t)370 -b(\(see)f([)p 0 TeXcolorgray 12868 48501 a -SDict begin H.S end - 12868 48501 -a 0 TeXcolorgray Fv(2)p 0 TeXcolorgray 13421 47788 a -SDict begin H.R end - -13421 47788 a 13421 48501 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.pst-pdgr06) cvn H.B /ANN pdfmark end - 13421 48501 a 0 TeXcolorgray -1 w Fv(])g(for)h(more)f(details\).)495 b(By)369 b(default)i(it)f(is)f -(0.8.)8524 49829 y(The)327 b(v)-61 b(ariables)329 b Fq($xdist)p -0 TeXcolorgray 0 TeXcolorgray 328 w Fv(and)f Fq($ydist)p -0 TeXcolorgray 0 TeXcolorgray 328 w Fv(set)f(the)h(distances)g(b)31 -b(et)-31 b(w)g(een)328 b(the)g(no)31 b(des)327 b(along)6863 -51158 y(horizon)-31 b(tal)372 b(and)d(v)-31 b(ertical)371 -b(axes)e(corresp)31 b(ondingly)-92 b(.)494 b(The)369 -b(default)i(for)e(b)31 b(oth)370 b(is)f(2.)6863 52922 -y -SDict begin H.S end - 6863 52922 a 6863 52922 a -SDict begin 12 H.A end - 6863 52922 a 6863 52922 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.3.8) cvn /DEST pdfmark -end - -6863 52922 a 1335 x Ft(3.8)1495 b(Scaling)500 b(and)f(Rotation)6863 -56300 y Fv(Complex)435 b(p)31 b(edigrees)432 b(migh)-31 -b(t)434 b(b)31 b(e)432 b(to)31 b(o)434 b(large)f(to)g(\014t)g(on)g(a)f -(page.)684 b(In)432 b(this)h(case)f(a)h(scaling)6863 -57628 y(and)451 b(\(or\))h(rotation)h(migh)-31 b(t)452 -b(b)31 b(e)451 b(necessary)f(to)h(prin)-31 b(t)451 b(the)g(c)-31 -b(hart.)738 b(Of)451 b(course,)471 b(c)-31 b(hanging)6863 -58957 y(the)404 b(lengths)h(describ)31 b(ed)403 b(in)h(Section)p -0 TeXcolorgray 22826 58957 a -SDict begin H.S end - 22826 58957 a 0 TeXcolorgray -Fv(3.7)p 0 TeXcolorgray 24239 58243 a -SDict begin H.R end - 24239 58243 a 24239 -58957 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.7) cvn H.B /ANN pdfmark end - 24239 58957 a 0 TeXcolorgray 405 w Fv(migh)-31 -b(t)406 b(also)e(help,)414 b(but)404 b(the)g(scaling)h(describ)31 -b(ed)6863 60285 y(here)369 b(also)h(c)-31 b(hanged)370 -b(the)f(size)g(of)h(the)f(p)31 b(edigree)370 b(sym)-31 -b(b)31 b(ols.)8524 61613 y(There)426 b(are)h(three)f(v)-61 -b(ariables)427 b(con)-31 b(trolling)430 b(the)d(scaling)h(and)f -(rotation)i(of)e(p)31 b(edigrees:)6863 62942 y Fq($maxW)p -0 TeXcolorgray 0 TeXcolorgray 1 w Fv(,)368 b Fq($maxH)p -0 TeXcolorgray 0 TeXcolorgray 368 w Fv(and)g Fq($rotate)p -0 TeXcolorgray 0 TeXcolorgray 368 w Fv(\(see)g(Listing)p -0 TeXcolorgray 26231 62942 a -SDict begin H.S end - 26231 62942 a 0 TeXcolorgray -Fv(6)p 0 TeXcolorgray 26784 62228 a -SDict begin H.R end - 26784 62228 a 26784 -62942 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.6) cvn H.B /ANN pdfmark end - 26784 62942 a 0 TeXcolorgray Fv(\).)493 b(The)368 -b(v)-61 b(ariables)368 b Fq($maxW)p 0 TeXcolorgray 0 -TeXcolorgray 368 w Fv(and)g Fq($maxH)p 0 TeXcolorgray -0 TeXcolorgray 368 w Fv(are)6863 64270 y(the)359 b(maximal)i(width)e -(and)g(heigh)-31 b(t)359 b(of)g(the)f(c)-31 b(hart)359 -b(in)g(cen)-31 b(timeters.)490 b(Setting)360 b(an)-31 -b(y)359 b(of)f(them)6863 65598 y(to)370 b(zero)f(disables)h(scaling.)p -0 TeXcolorgray 25681 70071 a(9)p 0 TeXcolorgray eop end -%%Page: 10 10 -TeXDict begin 10 9 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 TeXcolorgray -6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 1660 a 6752 -1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.10) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a 6863 6531 a -SDict begin 12 H.A end - 6863 -6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.5) cvn /DEST pdfmark -end - 6863 6531 a 6863 7461 a -SDict begin H.S end - 6863 7461 -a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.1) cvn /DEST pdfmark -end - 6863 7461 a 58 -w Fj(#)6863 8789 y -SDict begin H.S end - 6863 8789 a 6863 8789 a -SDict begin 12 H.A end - 6863 8789 -a 6863 8789 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.2) cvn /DEST pdfmark -end - 6863 8789 a 58 w Fj(#)1557 b(d)103 b(e)g(s)g(c)g(a)g(r)g -(m)g(A)881 b(i)77 b(n)853 b(c)77 b(m)6863 10118 y -SDict begin H.S end - 6863 -10118 a 6863 10118 a -SDict begin 12 H.A end - 6863 10118 a 6863 10118 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.3) cvn /DEST pdfmark -end - 6863 10118 -a 58 w Fj(#)6863 11446 y -SDict begin H.S end - 6863 11446 a 6863 11446 a -SDict begin 12 H.A end - 6863 -11446 a 6863 11446 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.4) cvn /DEST pdfmark -end - 6863 11446 a 105 w Fq($)105 b(d)g(e)g(s)g(c)g(a)g -(r)g(m)g(A)858 b(=)849 b(0)93 b(.)g(8)g(;)6863 12774 -y -SDict begin H.S end - 6863 12774 a 6863 12774 a -SDict begin 12 H.A end - 6863 12774 a 6863 12774 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.5) cvn /DEST pdfmark -end - -6863 12774 a 6863 14103 a -SDict begin H.S end - 6863 14103 a 6863 14103 a -SDict begin 12 H.A end - 6863 -14103 a 6863 14103 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.6) cvn /DEST pdfmark -end - 6863 14103 a 58 w Fj(#)6863 15431 -y -SDict begin H.S end - 6863 15431 a 6863 15431 a -SDict begin 12 H.A end - 6863 15431 a 6863 15431 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.7) cvn /DEST pdfmark -end - -6863 15431 a 58 w Fj(#)861 b(D)105 b(i)g(s)g(t)g(a)g(n)g(c)g(e)g(s)901 -b(b)102 b(e)g(t)g(w)g(e)g(e)g(n)896 b(n)97 b(o)g(d)g(e)g(s)852 -b(\()136 b(i)77 b(n)853 b(c)77 b(m)137 b(\))6863 16759 -y -SDict begin H.S end - 6863 16759 a 6863 16759 a -SDict begin 12 H.A end - 6863 16759 a 6863 16759 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.8) cvn /DEST pdfmark -end - -6863 16759 a 58 w Fj(#)6863 18088 y -SDict begin H.S end - 6863 18088 a 6863 -18088 a -SDict begin 12 H.A end - 6863 18088 a 6863 18088 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.9) cvn /DEST pdfmark -end - 6863 18088 a 100 w -Fq($)100 b(x)g(d)g(i)g(s)g(t)186 b(=)87 b(2)g(;)6863 -19416 y -SDict begin H.S end - 6863 19416 a 6863 19416 a -SDict begin 12 H.A end - 6863 19416 a 6863 19416 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.5.10) cvn /DEST pdfmark -end - 6863 19416 a 100 w Fq($)100 b(y)g(d)g(i)g(s)g(t)186 -b(=)87 b(2)g(;)p 0 TeXcolorgray 0 TeXcolorgray 14271 -21851 a Fv(Listing)370 b(5:)493 b(Con\014guration)372 -b(File:)493 b(Cho)31 b(osing)370 b(Lengths)p 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 8524 27159 a(The)412 b(scaling)h(w)-31 -b(orks)413 b(as)f(follo)-31 b(ws.)623 b(If)412 b(b)31 -b(oth)412 b(heigh)-31 b(t)414 b(and)e(width)h(of)g(the)f(p)31 -b(edigree)412 b(are)6863 28487 y(smaller)358 b(than)f(the)g(limits,)362 -b(no)357 b(scaling)h(is)f(done.)489 b(In)356 b(the)h(other)g(case)g -(the)g(c)-31 b(hart)357 b(is)g(scaled)6863 29815 y(while)385 -b(preserving)d(the)i(asp)31 b(ect)383 b(ratio)i(\(b)-31 -b(y)384 b(c)-31 b(hanging)385 b(the)e(v)-61 b(alue)384 -b(of)g Fq(unit)p Fv(,)j(see)c([)p 0 TeXcolorgray 40966 -29815 a -SDict begin H.S end - 40966 29815 a 0 TeXcolorgray Fv(3)p 0 TeXcolorgray -41519 29102 a -SDict begin H.R end - 41519 29102 a 41519 29815 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.PSTricks93) cvn H.B /ANN pdfmark end - 41519 29815 -a 0 TeXcolorgray 1 w Fv(]\))h(to)g(\014t)6863 31144 y(in)-31 -b(to)371 b(the)e(limits.)8524 32472 y(The)552 b(v)-61 -b(ariable)554 b Fq($rotate)g Fv(sets)e(the)h(orien)-31 -b(tation)555 b(of)f(the)f(c)-31 b(hart.)1043 b(If)553 -b(it)g(is)g Fq(no)p Fv(,)599 b(the)6863 33800 y(p)31 -b(edigree)485 b(is)h(nev)-31 b(er)485 b(rotated,)516 -b(while)487 b(if)e(it)i Fq(yes)p Fv(,)515 b(it)486 b(is)f(alw)-31 -b(a)g(ys)488 b(rotated)e(ninet)-31 b(y)487 b(degrees)6863 -35129 y(coun)-31 b(terclo)31 b(c)-31 b(kwise.)873 b(If)495 -b(this)h(v)-61 b(ariable)496 b(is)f(set)g(to)h Fq(maybe)g -Fv(\(the)g(default\),)529 b(the)495 b(program)6863 36457 -y(compares)308 b(the)h(scaling)g(for)f(the)g(non-rotated)i(and)e -(rotated)h(p)31 b(edigrees,)321 b(and)308 b(c)-31 b(ho)31 -b(oses)308 b(the)6863 37785 y(orien)-31 b(tation)372 -b(for)e(whic)-31 b(h)370 b(the)f(scaling)i(is)e(closer)g(to)h(one.)6863 -39669 y -SDict begin H.S end - 6863 39669 a 6863 39669 a -SDict begin 12 H.A end - 6863 39669 a 6863 39669 -a -SDict begin [/View [/XYZ H.V]/Dest (section.4) cvn /DEST pdfmark end - 6863 39669 a 1777 x Fu(4)1793 b(Running)598 b(the)h(Program)6863 -42852 y -SDict begin H.S end - 6863 42852 a 6863 42852 a -SDict begin 12 H.A end - 6863 42852 a 6863 42852 -a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.1) cvn /DEST pdfmark -end - 6863 42852 a 1240 x Ft(4.1)1495 b(Program)500 b(In)-42 -b(v)g(o)42 b(cation)500 b(And)f(Options)6863 46135 y -Fv(The)488 b(program)g Fq(pedigree)g Fv(is)g(a)f(command)i(line)f -(program.)848 b(It)488 b(reads)e(the)i(data)h(from)6863 -47464 y(a)471 b(text)g(\014le)f Fq(input_file)i Fv(and)e(pro)31 -b(duces)470 b(an)g(output)i(\014le)e(with)i(L)35635 47237 -y Fp(A)36123 47464 y Fv(T)36737 47702 y(E)37352 47464 -y(X)f(macros.)796 b(The)6863 48792 y(format)371 b(of)f(the)f(input)h -(\014le)f(is)g(describ)31 b(ed)369 b(in)g(Section)p 0 -TeXcolorgray 29544 48792 a -SDict begin H.S end - 29544 48792 a 0 TeXcolorgray -Fv(4.2)p 0 TeXcolorgray 30957 48079 a -SDict begin H.R end - 30957 48079 a 30957 -48792 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.2) cvn H.B /ANN pdfmark end - 30957 48792 a 0 TeXcolorgray Fv(.)493 b(The)370 -b(program)g(in)-31 b(v)g(o)31 b(cation)372 b(is:)p 0 -TeXcolorgray 0 TeXcolorgray 6863 51006 a Fq(pedigree)582 -b([-c)g(configuration_file])i([-d])e([-o)f(output_file])12093 -52334 y([-s)h(start])g(input_file)6863 54548 y Fv(\(the)370 -b(square)f(brac)-31 b(k)g(ets)370 b(sho)-31 b(w)370 b(optional)h -(argumen)-31 b(ts\).)8524 55877 y(All)370 b(argumen)-31 -b(ts)370 b(but)g Fq(input_file)g Fv(are)f(optional.)495 -b(They)370 b(are)f(describ)31 b(ed)368 b(b)31 b(elo)-31 -b(w.)8524 57205 y(The)419 b(option)h Fq(-c)f Fv(selects)g(a)g -Fn(c)-57 b(on\014gur)g(ation)443 b(\014le.)641 b Fv(The)419 -b(format)i(of)e(the)g(con\014guration)6863 58533 y(\014le)315 -b(is)g(describ)31 b(ed)314 b(in)i(Section)p 0 TeXcolorgray -19553 58533 a -SDict begin H.S end - 19553 58533 a 0 TeXcolorgray Fv(3.1)p 0 -TeXcolorgray 20966 57820 a -SDict begin H.R end - 20966 57820 a 20966 58533 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.1) cvn H.B /ANN pdfmark end - 20966 58533 a 0 TeXcolorgray Fv(.)476 b(If)315 b(this)g(option)i(is)e -(absen)-31 b(t,)327 b(the)315 b(program)h(uses)e(its)h(o)-31 -b(wn)6863 59862 y(default)249 b(parameters,)273 b(or)248 -b(system-wide)g(or)g(user's)f(defaults,)273 b(as)248 -b(explained)h(in)f(Section)p 0 TeXcolorgray 43331 59862 -a -SDict begin H.S end - 43331 59862 a 0 TeXcolorgray Fv(3.1)p 0 TeXcolorgray -44744 59148 a -SDict begin H.R end - 44744 59148 a 44744 59862 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.1) cvn H.B /ANN pdfmark end - 44744 59862 -a 0 TeXcolorgray Fv(.)8524 61190 y(The)496 b(option)i -Fq(-)55 b(d)496 b Fv(selects)g(debugging)i(mo)31 b(de.)874 -b(In)496 b(this)g(mo)31 b(de)497 b(a)f(lot)i(of)e(debugging)6863 -62518 y(messages)369 b(are)g(dump)31 b(ed)370 b(to)g -Fq(stderr)p Fv(.)8524 63847 y(The)417 b(parameter)h Fq(-o)f -Fv(pro)-31 b(vides)417 b(the)g(name)h(of)f(the)h(output)g(\014le.)636 -b(Both)418 b Fq(input_file)6863 65175 y Fv(and)359 b -Fq(output_file)i Fv(can)e(b)31 b(e)359 b(\\-",)j(whic)-31 -b(h)360 b(means)g Fq(stdin)g Fv(for)f(the)g(input)h(and)f -Fq(stdout)h Fv(for)6863 66503 y(the)k(output.)492 b(If)364 -b(the)g(parameter)g Fq(-o)g Fv(is)g(absen)-31 b(t,)366 -b(the)e(program)h(tries)e(to)i(guess)e(the)h(name)p 0 -TeXcolorgray 25405 70071 a(10)p 0 TeXcolorgray eop end -%%Page: 11 11 -TeXDict begin 11 10 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.11) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a -6863 6531 a -SDict begin 12 H.A end - 6863 6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.6) cvn /DEST pdfmark -end - 6863 6531 a 6863 -7461 a -SDict begin H.S end - 6863 7461 a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.1) cvn /DEST pdfmark -end - 6863 7461 a 58 w Fj(#)6863 8789 y -SDict begin H.S end - 6863 8789 a 6863 -8789 a -SDict begin 12 H.A end - 6863 8789 a 6863 8789 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.2) cvn /DEST pdfmark -end - 6863 8789 a 58 w Fj(#)858 -b(M)102 b(a)g(x)g(i)g(m)g(a)g(l)895 b(w)97 b(i)g(d)g(t)g(h)881 -b(a)87 b(n)g(d)885 b(h)100 b(e)g(i)g(g)g(h)g(t)874 b(o)77 -b(f)863 b(t)87 b(h)g(e)889 b(p)103 b(e)g(d)g(i)g(g)g(r)g(e)g(e)881 -b(i)77 b(n)853 b(c)77 b(m)137 b(.)6863 10118 y -SDict begin H.S end - 6863 10118 -a 6863 10118 a -SDict begin 12 H.A end - 6863 10118 a 6863 10118 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.3) cvn /DEST pdfmark -end - 6863 10118 a -58 w Fj(#)843 b(S)87 b(e)g(t)878 b(t)93 b(h)g(i)g(s)869 -b(t)77 b(o)834 b(0)f(t)77 b(o)875 b(s)100 b(w)g(i)g(t)g(c)g(h)883 -b(o)87 b(f)g(f)887 b(s)102 b(c)g(a)g(l)g(i)g(n)g(g)6863 -11446 y -SDict begin H.S end - 6863 11446 a 6863 11446 a -SDict begin 12 H.A end - 6863 11446 a 6863 11446 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.4) cvn /DEST pdfmark -end - 6863 11446 a 58 w Fj(#)6863 12774 y -SDict begin H.S end - 6863 12774 a 6863 -12774 a -SDict begin 12 H.A end - 6863 12774 a 6863 12774 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.5) cvn /DEST pdfmark -end - 6863 12774 a 97 w Fq($)97 -b(m)g(a)g(x)g(W)853 b(=)842 b(1)87 b(5)g(;)6863 14103 -y -SDict begin H.S end - 6863 14103 a 6863 14103 a -SDict begin 12 H.A end - 6863 14103 a 6863 14103 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.6) cvn /DEST pdfmark -end - -6863 14103 a 97 w Fq($)97 b(m)g(a)g(x)g(H)853 b(=)842 -b(1)87 b(9)g(;)6863 15431 y -SDict begin H.S end - 6863 15431 a 6863 15431 a -SDict begin 12 H.A end - -6863 15431 a 6863 15431 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.7) cvn /DEST pdfmark -end - 6863 15431 a 6863 16759 a -SDict begin H.S end - 6863 -16759 a 6863 16759 a -SDict begin 12 H.A end - 6863 16759 a 6863 16759 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.8) cvn /DEST pdfmark -end - 6863 16759 -a 58 w Fj(#)6863 18088 y -SDict begin H.S end - 6863 18088 a 6863 18088 a -SDict begin 12 H.A end - 6863 -18088 a 6863 18088 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.9) cvn /DEST pdfmark -end - 6863 18088 a 58 w Fj(#)858 b(W)102 -b(h)g(e)g(t)g(h)g(e)g(r)875 b(t)77 b(o)876 b(r)100 b(o)g(t)g(a)g(t)g(e) -883 b(t)87 b(h)g(e)878 b(p)93 b(a)g(g)g(e)152 b(.)1540 -b(T)87 b(h)g(e)885 b(v)100 b(a)g(l)g(u)g(e)g(s)883 b(a)87 -b(r)g(e)6863 19416 y -SDict begin H.S end - 6863 19416 a 6863 19416 a -SDict begin 12 H.A end - 6863 19416 -a 6863 19416 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.10) cvn /DEST pdfmark -end - 6863 19416 a 58 w Fj(#)833 b(')126 b(y)87 -b(e)g(s)181 b(')93 b(,)822 b(')116 b(n)77 b(o)156 b(')824 -b(a)87 b(n)g(d)863 b(')135 b(m)97 b(a)g(y)g(b)g(e)175 -b(')6863 20744 y -SDict begin H.S end - 6863 20744 a 6863 20744 a -SDict begin 12 H.A end - 6863 20744 -a 6863 20744 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.11) cvn /DEST pdfmark -end - 6863 20744 a 58 w Fj(#)833 b(I)77 b(f)854 -b(')135 b(m)97 b(a)g(y)g(b)g(e)175 b(')814 b(i)77 b(s)862 -b(c)87 b(h)g(o)g(s)g(e)g(n)235 b(,)843 b(t)87 b(h)g(e)888 -b(p)103 b(e)g(d)g(i)g(g)g(r)g(e)g(e)882 b(i)77 b(s)877 -b(r)102 b(o)g(t)g(a)g(t)g(e)g(d)6863 22073 y -SDict begin H.S end - 6863 22073 -a 6863 22073 a -SDict begin 12 H.A end - 6863 22073 a 6863 22073 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.12) cvn /DEST pdfmark -end - 6863 22073 a -58 w Fj(#)833 b(i)77 b(f)869 b(t)93 b(h)g(i)g(s)894 b(p)103 -b(r)g(o)g(v)g(i)g(d)g(e)g(s)904 b(b)100 b(e)g(t)g(t)g(e)g(r)898 -b(s)102 b(c)g(a)g(l)g(i)g(n)g(g)6863 23401 y -SDict begin H.S end - 6863 23401 -a 6863 23401 a -SDict begin 12 H.A end - 6863 23401 a 6863 23401 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.13) cvn /DEST pdfmark -end - 6863 23401 a -58 w Fj(#)6863 24729 y -SDict begin H.S end - 6863 24729 a 6863 24729 a -SDict begin 12 H.A end - 6863 -24729 a 6863 24729 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.6.14) cvn /DEST pdfmark -end - 6863 24729 a 102 w Fq($)g(r)g(o)g(t)g(a)g(t)g(e) -856 b(=)833 b(')136 b(m)97 b(a)g(y)g(b)g(e)175 b(')97 -b(;)p 0 TeXcolorgray 0 TeXcolorgray 11076 27165 a Fv(Listing)370 -b(6:)493 b(Con\014guration)372 b(File:)493 b(Cho)31 b(osing)371 -b(Scaling)g(and)e(Rotation)p 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 32472 a(of)401 b(the)g(output)h(\014le)f(from)g -(the)g(name)g(of)g(the)g(input)h(\014le.)587 b(If)400 -b(the)h(input)g(\014le)g(is)g Fq(foo.csv)q Fv(,)6863 -33800 y(the)410 b(output)i(\014le)e(will)i(b)31 b(e)409 -b Fq(foo.tex)q Fv(.)615 b(On)410 b(the)g(other)g(hand,)421 -b(if)411 b(the)f(input)h(\014le)f(is)g Fq(stdin)p Fv(,)6863 -35129 y(the)370 b(output)g(\014le)f(is)h Fq(stdout)p -Fv(.)8524 36457 y(Usually)495 b(p)31 b(edigrees)494 b(are)g(built)h -(starting)g(from)g(the)f(proband)p 0 TeXcolorgray 35383 -36457 a -SDict begin H.S end - 35383 36457 a -402 x Fp(5)35881 36457 y -SDict begin 12 H.L end - 35881 -36457 a 35881 36457 a -SDict begin [/Subtype /Link/Dest (Hfootnote.5) cvn/H /I/Border [0 0 -0]BorderArrayPatch/Color [1 0 0] H.B /ANN pdfmark end - 35881 36457 a 0 TeXcolorgray Fv(.)867 -b(Only)494 b(the)h(p)31 b(eople)6863 37785 y(that)485 -b(share)e(genes)g(with)i(the)f(proband,)512 b(are)484 -b(sho)-31 b(wn)484 b(on)f(the)h(p)31 b(edigree.)836 b(Ho)-31 -b(w)g(ev)g(er,)514 b(in)6863 39114 y(some)425 b(cases,)438 -b(for)424 b(example)i(when)f(there)f(is)g(no)g(proband,)439 -b(or)424 b(where)g(there)h(are)f(sev)-31 b(eral)6863 -40442 y(probands,)509 b(it)481 b(is)f(neccessary)g(to)h(o)-31 -b(v)g(erride)481 b(this)g(default)g(and)g(tell)h(the)e(program)i(from) -6863 41771 y(whic)-31 b(h)491 b(p)31 b(erson)489 b(to)h(start.)855 -b(This)490 b(is)g(done)g(using)g(the)g(option)i Fq(-s)p -Fv(.)854 b(If)490 b(it)h(is)e(presen)-31 b(t,)520 b(it)6863 -43099 y(m)-31 b(ust)399 b(b)31 b(e)398 b(follo)-31 b(w)g(ed)402 -b(b)-31 b(y)398 b(the)h(Id)f(of)h(a)g(p)31 b(erson)398 -b(in)g(the)h(data)h(\014le)e(\(see)h(Section)p 0 TeXcolorgray -39980 43099 a -SDict begin H.S end - 39980 43099 a 0 TeXcolorgray Fv(4.2)p 0 -TeXcolorgray 41393 42385 a -SDict begin H.R end - 41393 42385 a 41393 43099 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.2) cvn H.B /ANN pdfmark end - 41393 43099 a 0 TeXcolorgray 399 w Fv(for)g(the)6863 -44427 y(discussion)369 b(of)h(Id\).)8524 45756 y(The)401 -b(option)h Fq(-v)g Fv(is)e(sp)31 b(ecial.)589 b(The)401 -b(in)-31 b(v)g(o)31 b(cation)404 b Fq(pedigree)583 b(-v)401 -b Fv(outputs)g(the)h(v)-31 b(ersion)6863 47084 y(and)370 -b(license)f(information.)6863 48633 y -SDict begin H.S end - 6863 48633 a 6863 -48633 a -SDict begin 12 H.A end - 6863 48633 a 6863 48633 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.2) cvn /DEST pdfmark -end - 6863 48633 a 1550 x -Ft(4.2)1495 b(Data)500 b(File)6863 52226 y Fv(The)299 -b(input)g(for)f(the)h(program)g(is)f(a)h(separated)g(v)-61 -b(alues)298 b(\014le.)470 b(Usually)299 b(suc)-31 b(h)298 -b(\014les)h(are)f(called)6863 53554 y(CSV)456 b(for)g(\\comma)h -(separated)f(v)-61 b(alues".)753 b(Ho)-31 b(w)g(ev)g(er,)479 -b(this)456 b(program)g(uses)f(the)g(v)-31 b(ertical)6863 -54883 y(bar)433 b(\(\\pip)31 b(e"\))434 b Fq(|)f Fv(as)f(a)h -(separator.)684 b(Eac)-31 b(h)433 b(line)h(of)f(this)g(\014le)g(is)f(a) -h Fn(r)-57 b(e)g(c)g(or)g(d)p Fv(.)684 b(The)433 b(lines)g(are)6863 -56211 y(separated)277 b(b)-31 b(y)276 b(pip)31 b(es)276 -b(in)-31 b(to)278 b Fn(\014elds.)461 b Fv(Most)276 b(SQL)g(programs)h -(pro)31 b(duce)276 b(suc)-31 b(h)276 b(\014les)g(b)-31 -b(y)276 b(default.)6863 57539 y(Spreadsheet)392 b(programs)h(will)h -(mak)-31 b(e)393 b(them)g(if)g(y)-31 b(ou)392 b(c)-31 -b(ho)31 b(ose)393 b(\\Sa)-31 b(v)g(e)394 b(As.)184 b(.)h(.)g(")562 -b(option,)400 b(and)6863 58868 y(select)471 b Fq(|)f -Fv(as)g(the)g(\014eld)h(separator,)496 b(and)470 b(empt)-31 -b(y)472 b(text)f(delimiter.)797 b(W)-92 b(e)470 b(sometimes)h(will)6863 -60196 y(call)335 b(the)f(records)e(\\ro)-31 b(ws")335 -b(and)f(the)g(\014elds)f(\\columns")i(to)g(use)e(the)h(familiar)i -(spreadsheet)6863 61524 y(metaphor.)631 b(Normally)417 -b(eac)-31 b(h)415 b(ro)-31 b(w)415 b(corresp)31 b(onds)414 -b(to)h(a)g(p)31 b(erson)414 b(in)h(a)g(p)31 b(edigree.)629 -b(W)-92 b(e)414 b(will)6863 62853 y(call)371 b(this)e(p)31 -b(erson)369 b Fn(the)395 b(curr)-57 b(ent)397 b(p)-57 -b(erson)454 b Fv(when)369 b(describing)h(the)f(\014elds.)p -0 TeXcolorgray 6863 63776 15276 45 v 8096 64492 a Fm(5)p -0 TeXcolorgray 8557 64805 a -SDict begin H.S end - 8557 64805 a 8557 64805 a -SDict begin H.R end - -8557 64805 a 8557 64805 a -SDict begin [/View [/XYZ H.V]/Dest (Hfootnote.5) cvn /DEST pdfmark -end - 8557 64805 a 0 TeXcolorgray -Fl(The)341 b(proband)h(is)h(the)f(\014rst)g(p)26 b(erson)342 -b(among)h(the)f(relativ)-26 b(es)343 b(who)f(came)h(to)g(a)f -(geneticist;)359 b(he)342 b(or)g(she)6863 65856 y(is)314 -b(the)g(primary)f(patien)-26 b(t.)p 0 TeXcolorgray 0 -TeXcolorgray 25405 70071 a Fv(11)p 0 TeXcolorgray eop -end -%%Page: 12 12 -TeXDict begin 12 11 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.12) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 8524 6974 a Fv(The)355 b(width)h(of)g(the)f(\014elds)h -(ma)-31 b(y)356 b(not)g(b)31 b(e)355 b(the)g(same)g(in)h(all)g(ro)-31 -b(ws)356 b(\(or,)j(in)c(other)g(w)-31 b(ords,)6863 8302 -y(the)294 b(pip)31 b(es)292 b Fq(|)h Fv(ma)-31 b(y)295 -b(b)31 b(e)292 b(disaligned\).)470 b(W)-92 b(e)292 b(mak)-31 -b(e)295 b(them)f(aligned)g(in)g(the)f(examples)h(included)6863 -9631 y(in)370 b(this)f(man)-31 b(ual)371 b(just)f(to)g(mak)-31 -b(e)370 b(the)f(text)i(more)e(readable.)8524 10959 y(The)544 -b(\014rst)g(line)h(of)g(the)g(data)h(\014le)e(con)-31 -b(tains)546 b(the)f(names)g(of)g(the)g(\014elds)f(\(\\column)6863 -12287 y(headers"\).)1043 b(The)553 b(\014elds)g(in)f(the)h(subsequen) --31 b(t)553 b(lines)g(m)-31 b(ust)553 b(matc)-31 b(h)554 -b(the)f(order)f(of)h(the)6863 13616 y(headers.)651 b(An)422 -b(empt)-31 b(y)423 b(\014eld)f(m)-31 b(ust)423 b(b)31 -b(e)421 b(still)j(included)e(\(as)h Fq(||)f Fv(or)g Fq(|)581 -b(|)p Fv(\).)651 b(Otherwise)423 b(the)6863 14944 y(order)358 -b(of)h(columns)h(is)e(arbitrary)h(as)g(long)g(as)g(it)g(is)g(the)g -(same)f(for)h(all)h(ro)-31 b(ws)359 b(\(i.e.)490 b(matc)-31 -b(hes)6863 16272 y(the)370 b(order)e(of)i(\\column)h(headers")e(in)g -(the)h(\014rst)e(line\).)8524 17601 y(All)404 b(\014elds)f(but)g -Fq(Id)h Fv(are)f(optional.)597 b(If)403 b(the)h(v)-61 -b(alue)403 b(is)h(empt)-31 b(y)404 b(for)f(all)i(ro)-31 -b(ws,)412 b(the)404 b(corre-)6863 18929 y(sp)31 b(onding)357 -b(column)g(can)f(b)31 b(e)355 b(dropp)31 b(ed.)488 b(If)356 -b(applicable,)361 b(the)356 b(default)i(v)-61 b(alues)356 -b(for)g(this)g(\014eld)6863 20257 y(will)371 b(b)31 b(e)369 -b(substituted)h(b)-31 b(y)369 b(the)h(program.)8524 21586 -y(On)i(the)h(other)g(hand)g(the)g(data)h(\014le)f(can)g(include)g(an) --31 b(y)374 b(additional)i(columns)d(as)g(long)6863 22914 -y(as)395 b(their)g(names)g(do)g(not)h(clash)f(with)h(the)g(names)f -(listed)h(b)31 b(elo)-31 b(w)396 b(and)f(the)g(sp)31 -b(ecial)395 b(name)6863 24242 y Fq(AgeAtDeath)r Fv(.)580 -b(These)398 b(additional)k(columns)d(can)g(b)31 b(e)398 -b(included)h(in)g(the)g(c)-31 b(hart)399 b(or)f(legend)6863 -25571 y(as)369 b(describ)31 b(ed)369 b(in)g(Section)p -0 TeXcolorgray 18286 25571 a -SDict begin H.S end - 18286 25571 a 0 TeXcolorgray -Fv(3.4)p 0 TeXcolorgray 19699 24857 a -SDict begin H.R end - 19699 24857 a 19699 -25571 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.4) cvn H.B /ANN pdfmark end - 19699 25571 a 0 TeXcolorgray Fv(.)8524 26899 -y(Here)f(is)h(the)h(list)g(of)g(columns)g(and)f(explanation)j(of)e -(their)f(meaning:)p 0 TeXcolorgray 6863 29015 a Fs(Id:)p -0 TeXcolorgray 553 w Fv(Eac)-31 b(h)377 b(line)g(\(including)h(the)e -(sp)31 b(ecial)376 b(lines)g(describ)31 b(ed)376 b(b)31 -b(elo)-31 b(w\))377 b(m)-31 b(ust)377 b(ha)-31 b(v)g(e)376 -b(a)h(unique)9631 30343 y Fq(Id)p Fv(.)486 b(The)349 -b Fq(Id)g Fv(ma)-31 b(y)350 b(con)-31 b(tain)351 b(only)f(Latin)g -(letters)f(and)g(n)-31 b(um)g(b)31 b(ers,)353 b(and)c(start)h(with)g(a) -9631 31671 y(letter.)p 0 TeXcolorgray 6863 33836 a Fs(Name:)p -0 TeXcolorgray 554 w Fv(The)418 b(name)g(of)h(the)f(p)31 -b(erson)417 b(describ)31 b(ed)417 b(in)h(the)h(curren)-31 -b(t)417 b(ro)-31 b(w.)640 b(There)417 b(are)h(also)9631 -35164 y Fn(sp)-57 b(e)g(cial)290 b(names)345 b Fv(when)254 -b(the)g(curren)-31 b(t)254 b(ro)-31 b(w)254 b(describ)31 -b(es)253 b(ab)31 b(ortions)255 b(or)f(infertilit)-31 -b(y)-92 b(.)457 b(They)9631 36493 y(are)311 b(describ)31 -b(ed)311 b(b)31 b(elo)-31 b(w.)475 b(The)312 b(names)g(should)g(not)h -(con)-31 b(tain)314 b(\\sp)31 b(ecial)313 b(sym)-31 b(b)31 -b(ols")313 b(lik)-31 b(e)9631 37821 y(#,)370 b($,)f(\045,)p -14125 37821 333 45 v 769 w(,)g(^,)h(etc.)p 0 TeXcolorgray -6863 39986 a Fs(Sex:)p 0 TeXcolorgray 554 w Fv(The)305 -b(gender)g(of)g(a)g(p)31 b(erson.)471 b(This)305 b(column)h(ma)-31 -b(y)306 b(ha)-31 b(v)g(e)306 b(one)f(of)h(t)-31 b(w)g(o)306 -b(v)-61 b(alues:)461 b Fq(male)305 b Fv(or)9631 41314 -y Fq(female)p Fv(.)491 b(The)365 b(empt)-31 b(y)366 b(v)-61 -b(alue)365 b(corresp)31 b(onds)363 b(to)j(a)f(p)31 b(erson)363 -b(with)j(unkno)-31 b(wn)366 b(gender.)p 0 TeXcolorgray -6863 43479 a Fs(DoB:)p 0 TeXcolorgray 554 w Fv(The)384 -b(date)g(of)g(birth)h(for)e(the)h(curren)-31 b(t)384 -b(p)31 b(erson.)535 b(The)384 b(format)i(is)e Fq(YYYY.MM.DD)q -Fv(.)536 b(If)9631 44807 y(the)459 b(date)g(of)g(birth)g(is)g(not)g -(kno)-31 b(wn,)483 b(the)459 b(\014eld)g(ma)-31 b(y)460 -b(b)31 b(e)458 b(empt)-31 b(y)460 b(or)f(the)g(k)-31 -b(eyw)g(ord)9631 46136 y Fq(unknown)370 b Fv(ma)-31 b(y)370 -b(b)31 b(e)369 b(used.)p 0 TeXcolorgray 6863 48300 a -Fs(DoD:)p 0 TeXcolorgray 554 w Fv(The)486 b(date)h(of)f(death)h(for)f -(curren)-31 b(t)485 b(p)31 b(erson.)842 b(The)486 b(format)h(is)f(the)g -(same)g(as)g(for)9631 49629 y Fq(DoB)p Fv(:)477 b Fq(YYYY.MM.DD)q -Fv(.)482 b(If)337 b(this)h(\014eld)f(is)g(empt)-31 b(y)-92 -b(,)345 b(the)338 b(corresp)31 b(onding)337 b(p)31 b(erson)337 -b(is)g(aliv)-31 b(e.)9631 50957 y(F)-92 b(or)503 b(deceased)i(p)31 -b(ersons)503 b(with)i(an)g(unkno)-31 b(wn)506 b(date)f(of)g(death)g -(use)f(the)h(k)-31 b(eyw)g(ord)9631 52285 y Fq(unknown)q -Fv(.)655 b(Note)425 b(the)f(subtle)g(di\013erence)f(b)31 -b(et)-31 b(w)g(een)425 b(the)f(\014elds)f Fq(DoB)h Fv(and)g -Fq(DoD)p Fv(:)602 b(an)9631 53614 y(empt)-31 b(y)291 -b(v)-61 b(alue)291 b(for)g Fq(DoB)f Fv(is)h(means)f(\\unkno)-31 -b(wn)292 b(birth)f(date")h(while)f(for)g Fq(DoD)g Fv(it)g(means)9631 -54942 y(that)370 b(there)f(is)g(no)h(date)f(of)h(death)g(at)g(all.)p -0 TeXcolorgray 6863 57107 a Fs(Mother:)p 0 TeXcolorgray -555 w Fv(The)g Fq(Id)f Fv(of)h(the)f(mother)h(of)g(the)f(p)31 -b(erson)368 b(\(or)i(empt)-31 b(y\).)p 0 TeXcolorgray -6863 59272 a Fs(F)-106 b(ather:)p 0 TeXcolorgray 554 -w Fv(The)369 b Fq(Id)h Fv(of)f(the)h(father)g(of)f(the)h(p)31 -b(erson)368 b(\(or)i(empt)-31 b(y\).)p 0 TeXcolorgray -6863 61436 a Fs(Proband)p 0 TeXcolorgray 555 w Fv(This)417 -b(\014eld)f(can)h(b)31 b(e)416 b(either)g Fq(yes)h Fv(for)g(the)f -(probands,)429 b(or)416 b(empt)-31 b(y)417 b(\(or)g Fq(no)p -Fv(\))g(for)9631 62765 y(other)250 b(p)31 b(ersons.)452 -b(Note)251 b(that)g(if)g(a)f(p)31 b(edigree)250 b(has)g(no)g(probands)g -(or)g(sev)-31 b(eral)251 b(probands,)9631 64093 y(the)281 -b(program)g(do)31 b(es)281 b(not)g(kno)-31 b(w,)300 b(from)282 -b(whic)-31 b(h)281 b(no)31 b(de)281 b(to)h(start)f(the)g(p)31 -b(edigree.)463 b(There-)9631 65421 y(fore)348 b(in)h(this)g(case)g(the) -g(option)h Fq(-s)f Fv(m)-31 b(ust)349 b(b)31 b(e)348 -b(used)g(to)h(explicitly)j(set)c(the)h Fq(Id)g Fv(of)g(the)9631 -66750 y(starting)370 b(c)-31 b(hart)370 b(no)31 b(de)369 -b(\(see)g(Section)p 0 TeXcolorgray 25392 66750 a -SDict begin H.S end - 25392 -66750 a 0 TeXcolorgray Fv(4.1)p 0 TeXcolorgray 26805 -66036 a -SDict begin H.R end - 26805 66036 a 26805 66750 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.1) cvn H.B /ANN pdfmark end - 26805 66750 a 0 TeXcolorgray -Fv(\).)p 0 TeXcolorgray 25405 70071 a(12)p 0 TeXcolorgray -eop end -%%Page: 13 13 -TeXDict begin 13 12 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.13) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 6974 a Fs(Condition:)p -0 TeXcolorgray 555 w Fv(This)246 b(column)i(can)e(ha)-31 -b(v)g(e)247 b(the)g(v)-61 b(alues)246 b Fq(normal)q Fv(,)271 -b Fq(obligatory)q Fv(,)g Fq(asymptomatic)9631 8302 y -Fv(or)369 b Fq(affected)q Fv(.)492 b(If)369 b(it)h(is)f(empt)-31 -b(y)-92 b(,)371 b(the)e(default)i(v)-61 b(alue)370 b -Fq(normal)f Fv(is)h(assumed.)p 0 TeXcolorgray 6863 10516 -a Fs(Commen)-35 b(t:)p 0 TeXcolorgray 554 w Fv(A)369 -b(commen)-31 b(t)371 b(ab)31 b(out)371 b(the)e(p)31 b(erson.)p -0 TeXcolorgray 6863 12730 a Fs(Twins:)p 0 TeXcolorgray -553 w Fv(If)289 b(the)g(curren)-31 b(t)289 b(p)31 b(erson)288 -b(has)h(t)-31 b(wins,)307 b(they)290 b(are)f(listed)h(in)f(this)g -(column)i(separated)9631 14058 y(b)-31 b(y)369 b(spaces)g(and)g(\(or\)) -h(commas.)494 b(See)369 b(Section)p 0 TeXcolorgray 29454 -14058 a -SDict begin H.S end - 29454 14058 a 0 TeXcolorgray Fv(4.3)p 0 TeXcolorgray -30867 13345 a -SDict begin H.R end - 30867 13345 a 30867 14058 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.3) cvn H.B /ANN pdfmark end - 30867 14058 -a 0 TeXcolorgray 371 w Fv(for)g(more)h(details.)p 0 TeXcolorgray -6863 16272 a Fs(T)-35 b(yp)35 b(e:)p 0 TeXcolorgray 553 -w Fv(This)360 b(column)g(is)f(used)g(in)g(certain)h(sp)31 -b(ecial)359 b(cases.)489 b(F)-92 b(or)358 b(ab)31 b(ortions)361 -b(it)e(sho)-31 b(ws)360 b(the)9631 17601 y(t)-31 b(yp)31 -b(e)459 b(of)h(the)g(ab)31 b(ortion)461 b(\(Section)p -0 TeXcolorgray 24506 17601 a -SDict begin H.S end - 24506 17601 a 0 TeXcolorgray -Fv(4.4)p 0 TeXcolorgray 25919 16887 a -SDict begin H.R end - 25919 16887 a 25919 -17601 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.4) cvn H.B /ANN pdfmark end - 25919 17601 a 0 TeXcolorgray Fv(\),)484 b(for)459 -b(c)-31 b(hildless)461 b(p)31 b(eople)459 b(and)h(marriages)g(it)9631 -18929 y(sho)-31 b(ws)412 b(the)g(t)-31 b(yp)31 b(e)413 -b(of)f(c)-31 b(hildnessness)412 b(\(Section)p 0 TeXcolorgray -29666 18929 a -SDict begin H.S end - 29666 18929 a 0 TeXcolorgray Fv(4.5)p 0 -TeXcolorgray 31079 18216 a -SDict begin H.R end - 31079 18216 a 31079 18929 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.5) cvn H.B /ANN pdfmark end - 31079 18929 a 0 TeXcolorgray Fv(\),)425 b(and)412 b(for)g(t)-31 -b(wins)414 b(it)e(sho)-31 b(ws)413 b(the)9631 20257 y(t)-31 -b(yp)31 b(e)369 b(of)h(t)-31 b(wins)370 b(\(Section)p -0 TeXcolorgray 20614 20257 a -SDict begin H.S end - 20614 20257 a 0 TeXcolorgray -Fv(4.3)p 0 TeXcolorgray 22027 19544 a -SDict begin H.R end - 22027 19544 a 22027 -20257 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.3) cvn H.B /ANN pdfmark end - 22027 20257 a 0 TeXcolorgray Fv(\).)p 0 TeXcolorgray -6863 22471 a Fs(SortOrder:)p 0 TeXcolorgray 556 w Fv(This)431 -b(column)h(is)e(used)g(when)h(the)g(algorithm)i(for)e(sorting)g -(siblings)h(and)9631 23800 y(unions)386 b(giv)-31 b(es)387 -b(a)f(wrong)h(result,)k(and)386 b(a)g(man)-31 b(ual)388 -b(correction)f(is)f(needed.)543 b(See)385 b(Sec-)9631 -25128 y(tion)p 0 TeXcolorgray 11906 25128 a -SDict begin H.S end - 11906 25128 -a 0 TeXcolorgray Fv(4.6)p 0 TeXcolorgray 13319 24415 -a -SDict begin H.R end - 13319 24415 a 13319 25128 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.6) cvn H.B /ANN pdfmark end - 13319 25128 a 0 TeXcolorgray -370 w Fv(for)370 b(the)f(explanation)j(and)e(examples.)8524 -27342 y(Examples)f(of)g(data)g(\014les)f(\(in)g(English)i(and)e -(Russian\))g(are)g(sho)-31 b(wn)369 b(in)f(Listing)p -0 TeXcolorgray 42164 27342 a -SDict begin H.S end - 42164 27342 a 0 TeXcolorgray -Fv(7)p 0 TeXcolorgray 42717 26629 a -SDict begin H.R end - 42717 26629 a 42717 -27342 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.7) cvn H.B /ANN pdfmark end - 42717 27342 a 0 TeXcolorgray 368 w Fv(\(the)6863 -28670 y(Russian)h(k)-31 b(eyw)g(ords)370 b(are)f(discussed)g(in)g -(Section)p 0 TeXcolorgray 27646 28670 a -SDict begin H.S end - 27646 28670 a -0 TeXcolorgray Fv(4.8)p 0 TeXcolorgray 29059 27957 a -SDict begin H.R end - -29059 27957 a 29059 28670 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.8) cvn H.B /ANN pdfmark end - 29059 28670 a 0 TeXcolorgray -Fv(\).)6863 30496 y -SDict begin H.S end - 6863 30496 a 6863 30496 a -SDict begin 12 H.A end - 6863 30496 -a 6863 30496 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.3) cvn /DEST pdfmark -end - 6863 30496 a 1273 x Ft(4.3)1495 b(Twins)6863 -33812 y Fv(The)329 b(column)i Fq(Twins)e Fv(\(see)g(Section)p -0 TeXcolorgray 22181 33812 a -SDict begin H.S end - 22181 33812 a 0 TeXcolorgray -Fv(4.3)p 0 TeXcolorgray 23594 33099 a -SDict begin H.R end - 23594 33099 a 23594 -33812 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.3) cvn H.B /ANN pdfmark end - 23594 33812 a 0 TeXcolorgray Fv(\))i(lists)e(all)i -Fq(Id)p Fv(s)d(of)i(all)g(t)-31 b(wins)330 b(of)g(the)f(giv)-31 -b(en)330 b(p)31 b(erson.)6863 35141 y(The)376 b(column)i -Fq(Type)e Fv(can)g(b)31 b(e)376 b(used)f(to)i(sho)-31 -b(w)377 b(the)f(t)-31 b(yp)31 b(e)377 b(of)f(the)h(t)-31 -b(wins.)514 b(The)376 b(empt)-31 b(y)378 b(v)-61 b(alue)6863 -36469 y(means)249 b(p)31 b(olyzygotic)251 b(t)-31 b(wins,)274 -b Fq(monozygotic)249 b Fv(means)g(monozygotic)j(t)-31 -b(wins,)274 b(and)248 b Fq(qzygotic)6863 37797 y Fv(is)318 -b(used)g(in)g(the)h(case)f(when)g(the)g(t)-31 b(yp)31 -b(e)319 b(of)g(t)-31 b(wins)319 b(is)f(under)g(doubt.)476 -b(An)318 b(example)i(of)e(a)h(data)6863 39126 y(\014le)264 -b(with)h(t)-31 b(wins)264 b(is)g(sho)-31 b(wn)264 b(on)g(Listing)p -0 TeXcolorgray 23076 39126 a -SDict begin H.S end - 23076 39126 a 0 TeXcolorgray -Fv(8)p 0 TeXcolorgray 23629 38412 a -SDict begin H.R end - 23629 38412 a 23629 -39126 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.8) cvn H.B /ANN pdfmark end - 23629 39126 a 0 TeXcolorgray Fv(,)285 b(and)264 -b(the)g(corresp)31 b(onding)263 b(p)31 b(edigree)264 -b(on)g(Figure)p 0 TeXcolorgray 44192 39126 a -SDict begin H.S end - 44192 39126 -a 0 TeXcolorgray Fv(3)p 0 TeXcolorgray 44745 38412 a -SDict begin H.R end - -44745 38412 a 44745 39126 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.3) cvn H.B /ANN pdfmark end - 44745 39126 a 0 TeXcolorgray -Fv(.)6863 40890 y -SDict begin H.S end - 6863 40890 a 6863 40890 a -SDict begin 12 H.A end - 6863 40890 -a 6863 40890 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.4) cvn /DEST pdfmark -end - 6863 40890 a 1334 x Ft(4.4)1495 b(Ab)42 -b(ortions)6863 44268 y Fv(Ab)31 b(orted)362 b(pregnancies)g(are)f -(describ)31 b(ed)360 b(b)-31 b(y)362 b(a)g(sp)31 b(ecial)362 -b(en)-31 b(try)362 b(in)f(the)h(data)h(\014le.)490 b(The)362 -b(\014eld)6863 45596 y Fq(Name)515 b Fv(has)e(the)i(v)-61 -b(alue)514 b Fq(#abortion)r Fv(;)586 b(the)514 b(sym)-31 -b(b)31 b(ol)516 b Fq(#)e Fv(is)f(used)h(to)h(sho)-31 -b(w)514 b(that)h(this)g(is)f(a)6863 46924 y(sp)31 b(ecial)371 -b(v)-61 b(alue.)495 b(The)370 b(columns)h Fq(Sex)p Fv(,)f -Fq(DoB)q Fv(,)g Fq(Mother)q Fv(,)g Fq(Father)h Fv(and)f -Fq(Condition)h Fv(ha)-31 b(v)g(e)371 b(the)6863 48253 -y(usual)353 b(meaning.)489 b(The)353 b(sp)31 b(ecial)353 -b(column)h Fq(Type)f Fv(is)f(either)h(empt)-31 b(y)354 -b(or)e(b)31 b(e)352 b(equal)i(to)f Fq(sab)g Fv(for)6863 -49581 y(self-ab)31 b(ortions.)6863 51130 y -SDict begin H.S end - 6863 51130 -a 6863 51130 a -SDict begin 12 H.A end - 6863 51130 a 6863 51130 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.5) cvn /DEST pdfmark -end - 6863 51130 a -1550 x Ft(4.5)1495 b(Childlessness)501 b(and)e(Infertilit)-42 -b(y)6863 54723 y Fv(Childlessness)374 b(is)f(can)h(b)31 -b(e)372 b(a)i(prop)31 b(ert)-31 b(y)373 b(of)h(a)g(p)31 -b(erson)373 b(or)g(a)g(union)h(b)31 b(et)-31 b(w)g(een)375 -b(t)-31 b(w)g(o)375 b(p)31 b(ersons.)6863 56051 y(Therefore)364 -b(in)h(this)f(implemen)-31 b(tation)369 b(w)-31 b(e)365 -b(use)e(a)i(sp)31 b(ecial)365 b(ro)-31 b(w)364 b(rather)g(than)h(a)g -(column)g(to)6863 57380 y(rep)31 b(ort)438 b(it.)702 -b(As)438 b(other)h(ro)-31 b(ws,)457 b(this)439 b(one)g(has)f(a)h -(unique)g Fq(Id)p Fv(.)701 b(The)439 b Fq(Name)g Fv(column)h(should) -6863 58708 y(ha)-31 b(v)g(e)483 b(a)e(sp)31 b(ecial)482 -b(en)-31 b(try)482 b Fq(#childless)q Fv(.)829 b(Lik)-31 -b(e)482 b Fq(#abortion)h Fv(\(Section)p 0 TeXcolorgray -36886 58708 a -SDict begin H.S end - 36886 58708 a 0 TeXcolorgray Fv(4.4)p 0 -TeXcolorgray 38299 57995 a -SDict begin H.R end - 38299 57995 a 38299 58708 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.4) cvn H.B /ANN pdfmark end - 38299 58708 a 0 TeXcolorgray Fv(\),)512 b(this)481 -b(sp)31 b(ecial)6863 60036 y(name)439 b(starts)e(with)i -Fq(#)f Fv(to)g(distinguish)h(it)g(from)f(\\real")h(names.)698 -b(There)438 b(are)f(four)h(other)6863 61365 y(columns)370 -b(that)h(ha)-31 b(v)g(e)370 b(meaning)h(for)e(this)g(ro)-31 -b(w:)p 0 TeXcolorgray 6863 63579 a Fs(Mother:)p 0 TeXcolorgray -555 w Fv(The)370 b Fq(Id)f Fv(of)h(the)f(c)-31 b(hildless)370 -b(female.)p 0 TeXcolorgray 25405 70071 a(13)p 0 TeXcolorgray -eop end -%%Page: 14 14 -TeXDict begin 14 13 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.14) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a -6863 6531 a -SDict begin 12 H.A end - 6863 6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.7) cvn /DEST pdfmark -end - 6863 6531 a 6863 -63816 a -SDict begin H.S end - 6863 63816 a 6863 63816 a -SDict begin 12 H.A end - 6863 63816 a 6863 63816 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.7.1) cvn /DEST pdfmark -end - 6863 63816 a 19884 63816 a - gsave currentpoint currentpoint translate 90 neg rotate neg exch neg -exch translate - 19884 63816 a -12328 x Fw(Id)523 -b(|Name)6276 b(|Sex)1570 b(|DoB)3661 b(|)523 b(DoD)3138 -b(|Mother|Father|Proband|Condition)524 b(|Comment)19884 -52705 y(P)1046 b(|John)523 b(Smith)3138 b(|male)1047 -b(|1970/02/05|)5230 b(|M1)2093 b(|F1)f(|)523 b(yes)1569 -b(|)523 b(affected|Evaluated)h(2005/12/01)19884 53923 -y(M1)f(|Mary)g(Smith)3138 b(|female|1940/02/05|)5231 -b(|GM2)1570 b(|GF2)f(|)3661 b(|)523 b(normal)1046 b(|)19884 -55140 y(F1)523 b(|Bill)g(Smith)3138 b(|male)1047 b(|1938/04/03|)5230 -b(|GM1)1570 b(|)523 b(GF1)1046 b(|)3661 b(|affected)523 -b(|)19884 56358 y(GM1|Joan)g(Smith)3138 b -(|female|1902/07/01|1975/12/13|)i(|)e(|)3661 b(|asymptomatic)19884 -57576 y(GF1|Joseph)523 b(Smith)2092 b(|male)1047 b(|unknown)1569 -b(|unknown)g(|)3139 b(|)f(|)3661 b(|)523 b(normal)19884 -58793 y(GF2|Jim)g(Brown)3661 b(|male)1047 b(|1905/11/01|)5230 -b(|)3139 b(|)f(|)3661 b(|)523 b(normal)1046 b(|)19884 -60011 y(GM2|Lisa)523 b(Brown)3138 b(|female|1910/03/03|)5231 -b(|)3139 b(|)f(|)3661 b(|)523 b(normal)1046 b(|)19884 -61229 y(S1)523 b(|Rebecca)g(Smith)1569 b(|female|1972/12/25|)5231 -b(|M1)2093 b(|F1)f(|)3661 b(|)523 b(affected)19884 62446 -y(S2)g(|Alexander)g(Smith)g(|male)1047 b(|1975/11/12|)5230 -b(|M1)2093 b(|F1)f(|)3661 b(|)523 b(normal)19884 63664 -y(A1)g(|Ann)g(Gold)4184 b(|female|1941/09/02|)5231 b(|GM1)1570 -b(|)523 b(GF1)1046 b(|)3661 b(|)523 b(obligatory|Aunt)h(of)f(the)g -(proband)19884 64882 y(C1)g(|)g(Jenny)g(Smith)2092 b -(|female|1969/12/03|)5231 b(|A1)2093 b(|)3138 b(|)3661 -b(|)523 b(affected)g(|)g(Cousin)h(of)f(the)g(proband)19884 -68756 y Fg(\310\344\345\355\362|\324\310\316)10457 b -(|\317\356\353|\320\356\346\344)3137 b(|\323\354\345\360)g -(|\314\340\362\374|\316\362\345\366|\317\360\356\341\340\355\344|\321)p -(\356\361\362\356\377\355\350\345)520 b(|)j -(\312\356\354\354\345\355\362\340\360\350\351)19884 69974 -y(P)2091 b(|\310\342\340\355\356\342)523 b(\321\345\360\343\345\351)f -(\317\345\362\360\356\342\350\367)g(|\354\363\346|1965/08/06|)5228 -b(|M1)1045 b(|F1)h(|\344\340)2614 b(|\341\356\353\374\355)g(|)19884 -71191 y(M1)1568 b(|\310\342\340\355\356\342\340)522 b -(\313\376\341\356\342\374)h -(\310\342\340\355\356\342\355\340|\346\345\355|1935/12/01|2005/10/01)p -(|)2088 b(|)k(|)3660 b(|\355\356\360\354)19884 72409 -y(F1)1568 b(|\310\342\340\355\356\342)523 b(\317\345\362\360)f -(\310\353\374\350\367)3137 b(|\354\363\346|\355\345\350\347\342)2614 -b(|2003/01/25|)2090 b(|)i(|)3660 b(|\356\341\353\350\343\340\362)19884 -73627 y(S1)1568 b(|\310\342\340\355\356\342\340)522 b(\300\355\355\340) -h(\317\345\362\360\356\342\355\340)1045 b(|\346\345\355|1968/05/05|) -5228 b(|M1)1045 b(|F1)h(|)3660 b(|\355\356\360\354)19884 -74844 y(K1)1568 b(|\310\342\340\355\356\342)523 b(\310\342\340\355)f -(\321\345\360\343\345\345\342\350\367)1045 b(|\354\363\346|1990/12/01|) -5228 b(|)2091 b(|P)1569 b(|)3660 b(|\340\361\350\354\357)1046 -b(|\303\345\355\345\362\350\367.)522 b(\350\361\361\353.)g(2005/12/08) -19884 76062 y(K2)1568 b(|\310\342\340\355\356\342\340)522 -b(\304\340\360\374\377)h -(\321\345\360\343\345\345\342\355\340|\346\345\355|1995/03/24|)5227 -b(|)2091 b(|P)1569 b(|)3660 b(|\355\356\360\354)1569 -b(|\303\345\355\345\362\350\367.)522 b(\350\361\361\353.)g(2005/12/08) -77169 63816 y - currentpoint grestore moveto - 77169 63816 a 0 TeXcolorgray 0 TeXcolorgray -12210 66252 a Fv(Listing)371 b(7:)493 b(Examples)370 -b(of)g(Data)g(Files)f(\(English)i(and)f(Russian\))p 0 -TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -25405 70071 a(14)p 0 TeXcolorgray eop end -%%Page: 15 15 -TeXDict begin 15 14 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.15) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 32060 22112 a -tx@Dict begin { -170.71646 56.90549 } PutCoor PutBegin end - 32060 22112 -a 31273 22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GF1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 32060 -22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Joseph)298 b(Smith)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 -22792 a Fx(I:1)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 -a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 56.90549 } PutCoor PutBegin end - 32060 22112 a 31273 22112 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GF2 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Jim)g(Bro)-24 b(wn)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 -22792 a Fx(I:3)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 -a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 113.81097 56.90549 } PutCoor PutBegin end - 32060 22112 a 31273 22112 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GM2 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Lisa)298 b(Bro)-24 -b(wn)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 -22112 a 32237 22792 a Fx(I:4)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 -a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 56.90549 56.90549 } PutCoor PutBegin end - 32060 22112 -a 32060 22112 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@GF2_m_GM2 10 {InitPnode -} /NodeScale {} def NewNode end end - 32060 22112 a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 -a 32060 22112 a -tx@Dict begin { -113.81097 56.90549 } PutCoor PutBegin end - 32060 22112 a 32060 22112 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@GF1_m_GM1 10 {InitPnode -} /NodeScale {} def NewNode end end - 32060 22112 -a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { -56.90549 56.90549 } PutCoor PutBegin end - 32060 22112 -a 31273 22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GM1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray 0.0 7.11317 moveto -0.0 -7.11317 L 0 setlinejoin 0 setlinecap stroke end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a -177 w Fp(Joan)299 b(Smith)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a -32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 22792 a Fx(I:2)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 -22112 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 32060 22112 a 32060 22112 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@F1_m_M1 10 {InitPnode -} /NodeScale {} def NewNode end end - 32060 22112 a 32060 -22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { -142.26372 0.0 } PutCoor PutBegin end - 32060 22112 a 31273 -22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray /DS 2.0 2. CLW mul -add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0 0.0] FontDot -/Dot { moveto gsave 1. 1. scale (b) show grestore } bind def 0.0 -0.0 Dot end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 32060 -22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Ann)g(Gold)32060 22112 -y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 22792 -a Fx(I)28 b(I:1)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 -a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 32060 22112 a 31273 22112 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@M1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Mary)299 b(Smith)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 -22792 a Fx(I)28 b(I:3)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 -22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { -85.35823 0.0 } PutCoor PutBegin end - 32060 22112 a 31273 -22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@F1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Bill)297 -b(Smith)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 -22112 a 32237 22792 a Fx(I)28 b(I:2)32060 22112 y -tx@Dict begin PutEnd end - 32060 -22112 a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -56.90549 } PutCoor PutBegin end - 32060 -22112 a 31273 22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial 32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a -177 w Fp(Reb)c(ecca)296 b(Smith)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 -a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 22792 a Fx(I)28 b(I)g(I:3)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 -22112 a -tx@Dict begin { 56.90549 -56.90549 } PutCoor PutBegin end - 32060 22112 a 31273 22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S2 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 32060 22112 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Alexander)298 b(Smith)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 -22792 a Fx(I)28 b(I)g(I:4)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a -32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { -56.90549 -56.90549 } PutCoor PutBegin end - 32060 22112 -a 31273 22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@P 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 32060 -22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(John)298 b(Smith)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 -22792 a Fx(I)28 b(I)g(I:2)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a -32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin { -142.26372 -56.90549 } PutCoor PutBegin end - 32060 22112 -a 31273 22112 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 31273 22112 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - - -@endspecial 32060 22112 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 32060 22112 a 177 w Fp(Jenn)-24 -b(y)298 b(Smith)32060 22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 32060 22112 a 32237 22792 a Fx(I)28 b(I)g(I:1)32060 -22112 y -tx@Dict begin PutEnd end - 32060 22112 a 32060 22112 a -tx@Dict begin PutEnd end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@M1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 32060 22112 a 32060 22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@GM2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@GF2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 32060 22112 a 32060 22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@A1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@F1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 32060 22112 a 32060 22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@GM1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@GF1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 32060 22112 a 32060 22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@P InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 32060 22112 a 32060 22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@M1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 32060 22112 a 32060 22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@F1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 32060 22112 a 32060 -22112 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 32060 22112 a 0 TeXcolorgray 6863 37145 a Fs(I:1)p -0 TeXcolorgray 553 w Fv(Joseph)369 b(Smith;)i(b)31 b(orn:)492 -b(unkno)-31 b(wn;)371 b(age)f(at)g(death:)494 b(unkno)-31 -b(wn.)p 0 TeXcolorgray 6863 39359 a Fs(I:2)p 0 TeXcolorgray -553 w Fv(Joan)370 b(Smith;)h(b)31 b(orn:)492 b(1902/07/01;)375 -b(age)370 b(at)g(death:)493 b(73.)p 0 TeXcolorgray 6863 -41573 a Fs(I:3)p 0 TeXcolorgray 553 w Fv(Jim)370 b(Bro)-31 -b(wn;)371 b(b)31 b(orn:)492 b(1905/11/01.)p 0 TeXcolorgray -6863 43787 a Fs(I:4)p 0 TeXcolorgray 553 w Fv(Lisa)370 -b(Bro)-31 b(wn;)370 b(b)31 b(orn:)492 b(1910/03/03.)p -0 TeXcolorgray 6863 46001 a Fs(I)35 b(I:1)p 0 TeXcolorgray -554 w Fv(Ann)369 b(Gold;)h(b)31 b(orn:)492 b(1941/09/02;)374 -b(Aun)-31 b(t)370 b(of)g(the)f(proband.)p 0 TeXcolorgray -6863 48215 a Fs(I)35 b(I:2)p 0 TeXcolorgray 554 w Fv(Bill)370 -b(Smith;)h(b)31 b(orn:)492 b(1938/04/03.)p 0 TeXcolorgray -6863 50429 a Fs(I)35 b(I:3)p 0 TeXcolorgray 554 w Fv(Mary)369 -b(Smith;)h(b)31 b(orn:)493 b(1940/02/05.)p 0 TeXcolorgray -6863 52643 a Fs(I)35 b(I)g(I:1)p 0 TeXcolorgray 554 w -Fv(Jenn)-31 b(y)369 b(Smith;)i(b)31 b(orn:)492 b(1969/12/03;)374 -b(Cousin)c(of)g(the)g(proband.)p 0 TeXcolorgray 6863 -54857 a Fs(I)35 b(I)g(I:2)p 0 TeXcolorgray 554 w Fv(John)369 -b(Smith;)i(b)31 b(orn:)492 b(1970/02/05;)374 b(Ev)-61 -b(aluated)371 b(2005/12/01.)p 0 TeXcolorgray 6863 57071 -a Fs(I)35 b(I)g(I:3)p 0 TeXcolorgray 554 w Fv(Reb)c(ecca)369 -b(Smith;)i(b)31 b(orn:)492 b(1972/12/25.)p 0 TeXcolorgray -6863 59284 a Fs(I)35 b(I)g(I:4)p 0 TeXcolorgray 554 w -Fv(Alexander)370 b(Smith;)h(b)31 b(orn:)492 b(1975/11/12.)6863 -62827 y(Figure)285 b(1:)p 0 TeXcolorgray 11582 62827 -a -SDict begin H.S end - 11582 62827 a 11582 62827 a -SDict begin H.R end - 11582 62827 a 11582 62827 -a -SDict begin [/View [/XYZ H.V]/Dest (figure.1) cvn /DEST pdfmark end - 11582 62827 a 0 TeXcolorgray Fv(Example)i(of)e(the)f(T)-31 -b(yp)31 b(eset)286 b(P)-31 b(edigree)285 b(in)g(English)h(\(Data)g -(File)e(from)i(Listing)p 0 TeXcolorgray 44069 62827 a -SDict begin H.S end - -44069 62827 a 0 TeXcolorgray Fv(7)p 0 TeXcolorgray 44622 -62113 a -SDict begin H.R end - 44622 62113 a 44622 62827 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.7) cvn H.B /ANN pdfmark end - 44622 62827 a 0 TeXcolorgray -Fv(\))p 0 TeXcolorgray 0 TeXcolorgray 25405 70071 a(15)p -0 TeXcolorgray eop end -%%Page: 16 16 -TeXDict begin 16 15 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.16) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 27651 17253 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 27651 17253 -a 27651 17253 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@F1_m_M1 10 {InitPnode -} /NodeScale {} def NewNode end end - 27651 17253 a 27651 17253 a -tx@Dict begin PutEnd end - 27651 17253 -a 27651 17253 a -tx@Dict begin { 93.89413 0.0 } PutCoor PutBegin end - 27651 17253 a 26864 17253 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@M1 16 {InitRnode } /NodeScale {} def NewNode end end - 26864 17253 -a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 27651 17253 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27651 17253 a -177 w Ff(\310\342\340\355\356\342\340)298 b(\313\376\341\356\342\374)h -(\310\342\340\355\356\342\355\340)27651 17253 y -tx@Dict begin PutEnd end - 27651 -17253 a 27651 17253 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27651 17253 a 27828 17933 a Fe(I:2)27651 -17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin PutEnd end - 27651 17253 a 27651 -17253 a -tx@Dict begin { -93.89413 0.0 } PutCoor PutBegin end - 27651 17253 a 26864 17253 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@F1 16 {InitRnode } /NodeScale {} def NewNode end end - 26864 17253 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray /DS 2.0 2. CLW mul -add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0 0.0] FontDot -/Dot { moveto gsave 1. 1. scale (b) show grestore } bind def 0.0 -0.0 Dot end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial -27651 17253 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27651 17253 a 177 w Ff(\310\342\340\355\356\342)f -(\317\345\362\360)h(\310\353\374\350\367)27651 17253 -y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27651 17253 a 27828 17933 -a Fe(I:1)27651 17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin PutEnd end - 27651 -17253 a 27651 17253 a -tx@Dict begin { 0.0 -187.78827 } PutCoor PutBegin end - 27651 17253 a 26864 17253 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@K2 16 {InitRnode } /NodeScale {} def NewNode end end - 26864 -17253 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -27651 17253 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27651 17253 a 177 w Ff(\310\342\340\355\356\342\340)f -(\304\340\360\374\377)h(\321\345\360\343\345\345\342\355\340)27651 -17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27651 17253 a 27828 -17933 a Fe(I)28 b(I)g(I:2)27651 17253 y -tx@Dict begin PutEnd end - 27651 17253 a -27651 17253 a -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin { -93.89413 -187.78827 } PutCoor PutBegin end - 27651 17253 -a 26864 17253 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@K1 16 {InitRnode } /NodeScale {} def NewNode end end - 26864 17253 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray 0.0 7.11317 moveto -0.0 -7.11317 L 0 setlinejoin 0 setlinecap stroke end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27651 -17253 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27651 17253 a 177 w Ff(\310\342\340\355\356\342)298 -b(\310\342\340\355)h(\321\345\360\343\345\345\342\350\367)27651 -17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27651 17253 a 27828 -17933 a Fe(I)28 b(I)g(I:1)27651 17253 y -tx@Dict begin PutEnd end - 27651 17253 a -27651 17253 a -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin { 46.94684 -93.89413 } PutCoor PutBegin end - 27651 17253 -a 26864 17253 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S1 16 {InitRnode } /NodeScale {} def NewNode end end - 26864 17253 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 27651 17253 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27651 17253 a 177 w Ff -(\310\342\340\355\356\342\340)298 b(\300\355\355\340)h -(\317\345\362\360\356\342\355\340)27651 17253 y -tx@Dict begin PutEnd end - 27651 -17253 a 27651 17253 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27651 17253 a 27828 17933 a Fe(I)28 -b(I:2)27651 17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin PutEnd end - 27651 -17253 a 27651 17253 a -tx@Dict begin { -46.94684 -93.89413 } PutCoor PutBegin end - 27651 17253 a 26864 17253 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@P 16 {InitRnode } /NodeScale {} def NewNode end end - 26864 -17253 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - -@endspecial -@beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27651 17253 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - -27651 17253 a 177 w Ff(\310\342\340\355\356\342)298 b -(\321\345\360\343\345\351)h(\317\345\362\360\356\342\350\367)27651 -17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27651 17253 a 27828 -17933 a Fe(I)28 b(I:1)27651 17253 y -tx@Dict begin PutEnd end - 27651 17253 a 27651 -17253 a -tx@Dict begin PutEnd end - 27651 17253 a 27651 17253 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@P InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27651 17253 a 27651 -17253 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27651 17253 a 27651 17253 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@M1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27651 17253 a 27651 -17253 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@F1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27651 17253 a 27651 17253 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@P /N@K1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27651 17253 a 27651 -17253 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@P /N@K2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27651 17253 a 0 TeXcolorgray 6863 50869 a Fd(I:1)p -0 TeXcolorgray 553 w Fc(\310\342\340\355\356\342)370 -b(\317\345\362\360)f(\310\353\374\350\367;)g(\360\356)-31 -b(\344.)369 b(\355\345\350\347\342.;)h(\363\354.)f(\342)g -(\342\356\347\360.)739 b(\355\345\350\347\342..)p 0 TeXcolorgray -6863 53083 a Fd(I:2)p 0 TeXcolorgray 553 w Fc -(\310\342\340\355\356\342\340)370 b(\313\376\341\356\342\374)g -(\310\342\340\355\356\342\355\340;)h(\360\356)-31 b(\344.)369 -b(1935/12/01;)k(\363\354.)c(\342)h(\342\356\347\360.)738 -b(70.)p 0 TeXcolorgray 6863 55297 a Fd(I)35 b(I:1)p 0 -TeXcolorgray 553 w Fc(\310\342\340\355\356\342)370 b -(\321\345\360\343\345\351)e(\317\345\362\360\356\342\350\367;)i -(\360\356)-31 b(\344.)369 b(1965/08/06.)p 0 TeXcolorgray -6863 57511 a Fd(I)35 b(I:2)p 0 TeXcolorgray 553 w Fc -(\310\342\340\355\356\342\340)370 b(\300\355\355\340)f -(\317\345\362\360\356\342\355\340;)h(\360\356)-31 b(\344.)370 -b(1968/05/05.)p 0 TeXcolorgray 6863 59725 a Fd(I)35 b(I)g(I:1)p -0 TeXcolorgray 553 w Fc(\310\342\340\355\356\342)370 -b(\310\342\340\355)f(\321\345\360\343\345\345\342\350\367;)g(\360\356) --31 b(\344.)370 b(1990/12/01;)i(\303)-92 b(\345\355\345\362\350\367.) -369 b(\350\361\361\353.)f(2005/12/08.)p 0 TeXcolorgray -6863 61939 a Fd(I)35 b(I)g(I:2)p 0 TeXcolorgray 553 w -Fc(\310\342\340\355\356\342\340)250 b(\304\340\360\374\377)g -(\321\345\360\343\345\345\342\355\340;)g(\360\356)-31 -b(\344.)249 b(1995/03/24;)k(\303)-92 b(\345\355\345\362\350\367.)249 -b(\350\361\361\353.)f(2005/12/08.)6863 65481 y Fv(Figure)269 -b(2:)p 0 TeXcolorgray 11559 65481 a -SDict begin H.S end - 11559 65481 a 11559 -65481 a -SDict begin H.R end - 11559 65481 a 11559 65481 a -SDict begin [/View [/XYZ H.V]/Dest (figure.2) cvn /DEST pdfmark end - 11559 65481 a 0 TeXcolorgray -Fv(Example)i(of)f(the)g(T)-31 b(yp)31 b(eset)270 b(P)-31 -b(edigree)270 b(in)f(Russian)h(\(Data)g(File)g(from)g(Listing)p -0 TeXcolorgray 44069 65481 a -SDict begin H.S end - 44069 65481 a 0 TeXcolorgray -Fv(7)p 0 TeXcolorgray 44622 64768 a -SDict begin H.R end - 44622 64768 a 44622 -65481 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.7) cvn H.B /ANN pdfmark end - 44622 65481 a 0 TeXcolorgray Fv(\))p 0 TeXcolorgray -0 TeXcolorgray 25405 70071 a(16)p 0 TeXcolorgray eop -end -%%Page: 17 17 -TeXDict begin 17 16 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.17) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 7821 a -SDict begin H.S end - 6863 7821 a -6863 7821 a -SDict begin 12 H.A end - 6863 7821 a 6863 7821 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.8) cvn /DEST pdfmark -end - 6863 7821 a 6863 -8751 a -SDict begin H.S end - 6863 8751 a 6863 8751 a -SDict begin 12 H.A end - 6863 8751 a 6863 8751 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.8.1) cvn /DEST pdfmark -end - 6863 8751 a 1218 x Fw(Id)523 b(|Name)1046 b(|Sex)1570 -b(|DoB)3661 b(|DoD)g(|Mother|Father|Proband|Twins|Type)6863 -11187 y(F0)523 b(|Adam)1046 b(|male)h(|unknown)1569 b(|unknown)g(|)3139 -b(|)f(|)3661 b(|)2615 b(|)6863 12404 y(A0)523 b(|Sam)1569 -b(|male)1047 b(|1950.01.03|unknown)1569 b(|)3139 b(|F0)2092 -b(|)3661 b(|)523 b(A1)1046 b(|qzygotic)6863 13622 y(A1)523 -b(|John)1046 b(|male)h(|1950.01.03|2005.04.12|)3139 b(|F0)2092 -b(|)3661 b(|)523 b(A0)1046 b(|qzygotic)6863 14840 y(A2)523 -b(|Jane)1046 b(|female|1951.14.15|)5231 b(|)3139 b(|)f(|)3661 -b(|)2615 b(|)6863 16057 y(B1)523 b(|Jack)1046 b(|male)h(|1975.05.06|) -5230 b(|A2)2093 b(|A1)f(|)3661 b(|B2)1569 b(|monozygotic)6863 -17275 y(B2)523 b(|Mike)1046 b(|male)h(|1975.05.06|)5230 -b(|A2)2093 b(|A1)f(|)3661 b(|B1)1569 b(|monozygotic)6863 -18493 y(B3)523 b(|Pam)1569 b(|female|1973.11.01|)5231 -b(|A2)2093 b(|A1)f(|)3661 b(|)2615 b(|)6863 19710 y(C1)523 -b(|Jane)1046 b(|female|1998.12.04|)5231 b(|)3139 b(|B1)2092 -b(|)3661 b(|C2,C3|)6863 20928 y(C2)523 b(|John)1046 b(|male)h -(|1998.12.04|)5230 b(|)3139 b(|B1)2092 b(|)3661 b(|C1,C3|)6863 -22146 y(C3)523 b(|George|male)1047 b(|1998.12.04|)5230 -b(|)3139 b(|B1)2092 b(|)1046 b(yes)g(|C1,C2|)6863 23363 -y(C4)523 b(|Ann)1569 b(|female|2003.02.04|)5231 b(|)3139 -b(|B1)2092 b(|)3661 b(|)2615 b(|)p 0 TeXcolorgray 0 TeXcolorgray -15282 25798 a Fv(Listing)371 b(8:)493 b(Example)371 b(of)e(Data)h(File) -g(with)g(Twins)p 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 27349 43850 a -tx@Dict begin { -28.45274 -91.04869 } PutCoor PutBegin end - 27349 43850 a 27349 43850 -a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@t_C3_C2_C1 10 {InitPnode -} /NodeScale {} def NewNode end end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 -a -tx@Dict begin { -85.35823 56.90549 } PutCoor PutBegin end - 27349 43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@F0 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial -27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a 177 w Fp(Adam)27349 43850 -y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 -a Fx(I:1)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin { 28.45274 -34.1432 } PutCoor PutBegin end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@t_B1_B2 10 {InitPnode -} /NodeScale {} def NewNode end end - 27349 -43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { -56.90549 0.0 } PutCoor PutBegin end - 27349 -43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A1 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial -27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a 177 w Fp(John)27349 43850 -y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 -a Fx(I)28 b(I:2)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 -a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { -113.81097 0.0 } PutCoor PutBegin end - 27349 43850 a 26562 43850 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -@beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - -27349 43850 a 177 w Fp(Sam)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 -a 27349 43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(I)g(I:1)27349 -43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 -43850 a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 27349 43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A2 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a 177 w Fp(Jane)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 -a 27349 43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(I)g(I:3)27349 -43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 -43850 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@A1_m_A2 10 {InitPnode -} /NodeScale {} def NewNode end end - 27349 43850 a 27349 -43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { -85.35823 22.76227 } PutCoor PutBegin end - 27349 43850 a 27349 -43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@t_A1_A0 10 {InitPnode -} /NodeScale {} def NewNode end end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 -43850 a -tx@Dict begin { -85.35823 -113.81097 } PutCoor PutBegin end - 27349 43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C3 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a -177 w Fp(George)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(IV:1)27349 43850 y -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { 85.35823 -113.81097 } PutCoor PutBegin end - 27349 -43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C4 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a -177 w Fp(Ann)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(IV:4)27349 43850 y -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { 28.45274 -113.81097 } PutCoor PutBegin end - 27349 -43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a -177 w Fp(Jane)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(IV:3)27349 43850 y -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { -28.45274 -113.81097 } PutCoor PutBegin end - 27349 -43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C2 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a -177 w Fp(John)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(IV:2)27349 43850 y -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { 0.0 -56.90549 } PutCoor PutBegin end - 27349 -43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a -177 w Fp(Jac)-24 b(k)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 -43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(I)28 b(I)g(I:2)27349 -43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 -43850 a -tx@Dict begin { -56.90549 -56.90549 } PutCoor PutBegin end - 27349 43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B3 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 43850 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 27349 43850 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a 177 w Fp(P)-24 b(am)27349 43850 y -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 44530 a Fx(I)28 -b(I)g(I:1)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 -43850 a 27349 43850 a -tx@Dict begin { 56.90549 -56.90549 } PutCoor PutBegin end - 27349 43850 a 26562 43850 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 26562 -43850 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -27349 43850 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 27349 43850 a 177 w Fp(Mik)-24 b(e)27349 -43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 27349 43850 a 27526 -44530 a Fx(I)28 b(I)g(I:3)27349 43850 y -tx@Dict begin PutEnd end - 27349 43850 a -27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_C3_C2_C1 /N@C1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@t_C3_C2_C1 InitNC { tx@Dict begin - /Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_C3_C2_C1 /N@C3 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@pst@pdgr@tempnodeA -10 {InitPnode } /NodeScale {} def NewNode end end - 27349 43850 -a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_C3_C2_C1 /N@C2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@pst@pdgr@tempnodeB -10 {InitPnode } /NodeScale {} def NewNode end end - 27349 43850 -a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1_m_A2 /N@t_B1_B2 InitNC { tx@Dict begin - /Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_B1_B2 /N@B1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@pst@pdgr@tempnodeA -10 {InitPnode } /NodeScale {} def NewNode end end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 -a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_B1_B2 /N@B2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@pst@pdgr@tempnodeB -10 {InitPnode } /NodeScale {} def NewNode end end - 27349 43850 a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 -a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@pst@pdgr@tempnodeA /N@pst@pdgr@tempnodeB -InitNC { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 -ED /x2 ED /y1 ED /x1 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub -atan def /ArrowPos 0. def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos -0.5 abs def {/ArrowPos ArrowPos dArrowPos add def ArrowPos Length -gt { exit } if x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } loop }{/ArrowPos 0. def /dArrowPos 1. -1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos -mul y1 add ArrowInside pop pop } repeat } ifelse pop pop lineto pop -pop end } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha -0 setlinejoin 0 setlinecap stroke grestore grestore end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1_m_A2 /N@B3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1_m_A2 /N@A2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1_m_A2 /N@A1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F0 /N@t_A1_A0 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_A1_A0 /N@A0 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@pst@pdgr@tempnodeA -10 {InitPnode } /NodeScale {} def NewNode end end - 27349 43850 -a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@t_A1_A0 /N@A1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 a 27349 43850 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@pst@pdgr@tempnodeB -10 {InitPnode } /NodeScale {} def NewNode end end - 27349 43850 -a 27349 43850 a -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@pst@pdgr@tempnodeA /N@pst@pdgr@tempnodeB -InitNC { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 -ED /x2 ED /y1 ED /x1 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub -atan def /ArrowPos 0. def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos -0.5 abs def {/ArrowPos ArrowPos dArrowPos add def ArrowPos Length -gt { exit } if x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } loop }{/ArrowPos 0. def /dArrowPos 1. -1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos -mul y1 add ArrowInside pop pop } repeat } ifelse pop pop lineto pop -pop end } if end grestore end - 27349 43850 -a 27349 43850 a -tx@Dict begin tx@NodeDict begin /t 0.5 def LPut end PutBegin end - 27349 43850 a 27088 44234 a Fv(?)27349 -43850 y -tx@Dict begin PutEnd end - 27349 43850 a 27349 43850 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@C4 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 27349 43850 a 0 TeXcolorgray -8636 65183 a Fv(Figure)369 b(3:)p 0 TeXcolorgray 13482 -65183 a -SDict begin H.S end - 13482 65183 a 13482 65183 a -SDict begin H.R end - 13482 65183 a 13482 -65183 a -SDict begin [/View [/XYZ H.V]/Dest (figure.3) cvn /DEST pdfmark end - 13482 65183 a 0 TeXcolorgray Fv(Example)i(of)f(a)f(P)-31 -b(edigree)370 b(with)g(Twins)g(\(Data)h(File)f(from)f(Listing)p -0 TeXcolorgray 42297 65183 a -SDict begin H.S end - 42297 65183 a 0 TeXcolorgray -Fv(8)p 0 TeXcolorgray 42850 64469 a -SDict begin H.R end - 42850 64469 a 42850 -65183 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.8) cvn H.B /ANN pdfmark end - 42850 65183 a 0 TeXcolorgray Fv(\))p 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 25405 70071 a(17)p 0 TeXcolorgray -eop end -%%Page: 18 18 -TeXDict begin 18 17 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.18) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 10556 a -SDict begin H.S end - 6863 10556 -a 6863 10556 a -SDict begin 12 H.A end - 6863 10556 a 6863 10556 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.9) cvn /DEST pdfmark -end - 6863 10556 a -6863 11486 a -SDict begin H.S end - 6863 11486 a 6863 11486 a -SDict begin 12 H.A end - 6863 11486 a 6863 -11486 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.9.1) cvn /DEST pdfmark -end - 6863 11486 a 1217 x Fw(Id)523 b(|Name)2616 b(|Sex)1569 -b(|DoB)3661 b(|DoD)h(|Mother|Proband|Condition|Type)6863 -13921 y(A0)523 b(|Ann)3139 b(|female|1970.06.15|)5231 -b(|)3138 b(|)3661 b(|affected)523 b(|)6863 15139 y(B1)g -(|#abortion|female|1990.03.01|)5232 b(|A0)2092 b(|)3661 -b(|affected)523 b(|)6863 16356 y(B2)g(|#abortion|male)1047 -b(|2000.10.10|)5231 b(|A0)2092 b(|)3661 b(|)4707 b(|sab)6863 -17574 y(B3)523 b(|John)2616 b(|male)1046 b(|2002.12.01|)5231 -b(|A0)2092 b(|yes)g(|affected)523 b(|)p 0 TeXcolorgray -0 TeXcolorgray 14358 20009 a Fv(Listing)371 b(9:)493 -b(Example)370 b(of)g(Data)g(File)g(with)g(Ab)31 b(ortions)p -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -25958 37230 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 25958 37230 a 25171 37230 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 25171 37230 -a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial 25958 -37230 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25958 37230 a 177 w Fp(Ann)25958 37230 y -tx@Dict begin PutEnd end - 25958 -37230 a 25958 37230 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25958 37230 a 26135 37911 a Fx(I:1)25958 -37230 y -tx@Dict begin PutEnd end - 25958 37230 a 25958 37230 a -tx@Dict begin PutEnd end - 25958 37230 a 25958 -37230 a -tx@Dict begin { 56.90549 -56.90549 } PutCoor PutBegin end - 25958 37230 a 25171 37230 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B3 16 {InitRnode } /NodeScale {} def NewNode end end - 25171 37230 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25958 37230 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25958 37230 a -177 w Fp(John)25958 37230 y -tx@Dict begin PutEnd end - 25958 37230 a 25958 37230 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25958 37230 a 26135 37911 a Fx(I)d(I:3)25958 37230 -y -tx@Dict begin PutEnd end - 25958 37230 a 25958 37230 a -tx@Dict begin PutEnd end - 25958 37230 a 25958 37230 -a -tx@Dict begin { -56.90549 -56.90549 } PutCoor PutBegin end - 25958 37230 a 25171 37624 a -tx@Dict begin tx@NodeDict begin {14.22636 7.11317 14.22635 7.11317 -3.5566 } false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end - end - 25171 37624 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -7.11317 2.84544 moveto -7.11317 17.07181 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 7.11317 0.0 14.22636 --7.11317 7.11317 /Lineto /lineto load def 0 setlinejoin false NArray -n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } repeat }{ n 3 gt -{ CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 ED /x1 ED /xx1 -x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div -def x1 y1 moveto /n n 2 sub def /drawArrows { x11 y11 0.5 1 gt { /Alpha -y12 y11 sub x12 x11 sub atan def /ArrowPos 0. def /Length x12 x11 -sub y12 y11 sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x11 Alpha cos ArrowPos -mul add y11 Alpha sin ArrowPos mul add currentdict /ArrowInside known -{ ArrowInside } if pop pop } loop }{ /ArrowPos 0. def /dArrowPos 1. - 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x12 x11 sub ArrowPos mul x11 add y12 y11 -sub ArrowPos mul y11 add currentdict /ArrowInside known { ArrowInside -} if pop pop } repeat } ifelse pop pop Lineto } def n { 4 copy /y11 -ED /x11 ED /y12 ED /x12 ED drawArrows } repeat x1 y1 x0 y0 6 4 roll -2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def drawArrows /y11 y0 def -/x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows pop pop closepath -} ifelse gsave 0.5 setgray 1. .setopacityalpha fill grestore -gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore end - -@endspecial -25958 37624 a -tx@Dict begin { 0.0 18.4941 } PutCoor PutBegin end - 25958 37624 a 177 w Fp(female)25958 37624 -y -tx@Dict begin PutEnd end - 25958 37624 a 25958 37624 a -tx@Dict begin { 0.0 2.84544 } PutCoor PutBegin end - 25958 37624 a 26135 38305 -a Fx(I)g(I:1)25958 37624 y -tx@Dict begin PutEnd end - 25958 37624 a 25958 37230 -a -tx@Dict begin PutEnd end - 25958 37230 a 25958 37230 a -tx@Dict begin { 0.0 -56.90549 } PutCoor PutBegin end - 25958 37230 a 25171 37624 -a -tx@Dict begin tx@NodeDict begin {14.22636 7.11317 14.22635 7.11317 -3.5566 } false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end - end - 25171 37624 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 7.11317 0.0 14.22636 --7.11317 7.11317 /Lineto /lineto load def 0 setlinejoin false NArray -n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } repeat }{ n 3 gt -{ CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 ED /x1 ED /xx1 -x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div -def x1 y1 moveto /n n 2 sub def /drawArrows { x11 y11 0.5 1 gt { /Alpha -y12 y11 sub x12 x11 sub atan def /ArrowPos 0. def /Length x12 x11 -sub y12 y11 sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x11 Alpha cos ArrowPos -mul add y11 Alpha sin ArrowPos mul add currentdict /ArrowInside known -{ ArrowInside } if pop pop } loop }{ /ArrowPos 0. def /dArrowPos 1. - 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x12 x11 sub ArrowPos mul x11 add y12 y11 -sub ArrowPos mul y11 add currentdict /ArrowInside known { ArrowInside -} if pop pop } repeat } ifelse pop pop Lineto } def n { 4 copy /y11 -ED /x11 ED /y12 ED /x12 ED drawArrows } repeat x1 y1 x0 y0 6 4 roll -2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def drawArrows /y11 y0 def -/x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows pop pop closepath -} ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial -25958 37624 a -tx@Dict begin { 0.0 18.4941 } PutCoor PutBegin end - 25958 37624 a 177 w Fp(male)25958 37624 -y -tx@Dict begin PutEnd end - 25958 37624 a 25958 37624 a -tx@Dict begin { 0.0 2.84544 } PutCoor PutBegin end - 25958 37624 a 26135 38305 -a Fx(I)g(I:2)25958 37624 y -tx@Dict begin PutEnd end - 25958 37624 a 25958 37230 -a -tx@Dict begin PutEnd end - 25958 37230 a 25958 37230 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25958 37230 a 25958 37230 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25958 37230 a 25958 37230 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25958 37230 a 0 TeXcolorgray -6863 52264 a Fs(I:1)p 0 TeXcolorgray 553 w Fv(Ann;)370 -b(b)31 b(orn:)492 b(1970.06.15.)p 0 TeXcolorgray 6863 -54478 a Fs(I)35 b(I:1)p 0 TeXcolorgray 554 w Fv(ab)c(ortion;)371 -b(b)31 b(orn:)492 b(1990.03.01.)p 0 TeXcolorgray 6863 -56692 a Fs(I)35 b(I:2)p 0 TeXcolorgray 554 w Fv(ab)c(ortion;)371 -b(b)31 b(orn:)492 b(2000.10.10.)p 0 TeXcolorgray 6863 -58906 a Fs(I)35 b(I:3)p 0 TeXcolorgray 554 w Fv(John;)369 -b(b)31 b(orn:)493 b(2002.12.01.)p 0 TeXcolorgray 7712 -62448 a(Figure)369 b(4:)p 0 TeXcolorgray 12558 62448 -a -SDict begin H.S end - 12558 62448 a 12558 62448 a -SDict begin H.R end - 12558 62448 a 12558 62448 -a -SDict begin [/View [/XYZ H.V]/Dest (figure.4) cvn /DEST pdfmark end - 12558 62448 a 0 TeXcolorgray Fv(Example)i(of)e(a)h(P)-31 -b(edigree)370 b(with)g(Ab)31 b(ortions)370 b(\(Data)h(File)f(from)f -(Listing)p 0 TeXcolorgray 43221 62448 a -SDict begin H.S end - 43221 62448 a -0 TeXcolorgray Fv(9)p 0 TeXcolorgray 43774 61735 a -SDict begin H.R end - 43774 -61735 a 43774 62448 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.9) cvn H.B /ANN pdfmark end - 43774 62448 a 0 TeXcolorgray Fv(\))p -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 25405 70071 -a(18)p 0 TeXcolorgray eop end -%%Page: 19 19 -TeXDict begin 19 18 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.19) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a -6863 6531 a -SDict begin 12 H.A end - 6863 6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.10) cvn /DEST pdfmark -end - 6863 6531 a 6863 -7461 a -SDict begin H.S end - 6863 7461 a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.10.1) cvn /DEST pdfmark -end - 6863 7461 a 1218 x Fw(Id)523 b(|Name)3662 b(|Sex)1569 -b(|Mother|Father|Proband|Type)3139 b(|Comment)6863 9896 -y(A0)523 b(|John)3662 b(|male)1046 b(|)3138 b(|)g(|)3662 -b(|)5230 b(|)6863 11114 y(B1)523 b(|James)3139 b(|male)1046 -b(|)3138 b(|A0)2092 b(|)3662 b(|)5230 b(|)6863 12332 -y(B1c|#childless)524 b(|male)1046 b(|)3138 b(|B1)2092 -b(|)3662 b(|infertile)523 b(|anospermia)6863 13549 y(B2)g(|Ann)4185 -b(|female|)3138 b(|A0)2092 b(|yes)h(|)5230 b(|)6863 14767 -y(B2c|#childless)524 b(|)3138 b(|B2)2092 b(|)3138 b(|)3662 -b(|)5230 b(|)p 0 TeXcolorgray 0 TeXcolorgray 13336 17202 -a Fv(Listing)370 b(10:)494 b(Example)371 b(of)e(Data)h(File)g(with)g -(Childlessness)p 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 22509 a Fs(F)-106 b(ather:)p 0 TeXcolorgray -554 w Fv(The)360 b Fq(Id)f Fv(of)h(the)f(c)-31 b(hildless)360 -b(male.)491 b(If)359 b(b)31 b(oth)360 b Fq(Mother)g Fv(and)f -Fq(Father)h Fv(columns)g(are)9631 23838 y(not)311 b(empt)-31 -b(y)-92 b(,)325 b(the)311 b(en)-31 b(try)311 b(describ)31 -b(es)310 b(the)i(union)f(b)31 b(et)-31 b(w)g(een)312 -b(the)g Fq(Father)g Fv(and)f Fq(Mother)q Fv(.)9631 25166 -y(Of)418 b(only)h Fq(Mother)g Fv(or)f Fq(Father)h Fv(is)f(not)h(empt) --31 b(y)-92 b(,)431 b(the)419 b(en)-31 b(try)418 b(describ)31 -b(es)417 b(the)i(state)g(of)9631 26494 y(the)369 b(corresp)31 -b(onding)369 b(p)31 b(erson.)p 0 TeXcolorgray 6863 28708 -a Fs(T)-35 b(yp)35 b(e:)p 0 TeXcolorgray 553 w Fv(This)415 -b(column)h(migh)-31 b(t)417 b(b)31 b(e)414 b(either)i(empt)-31 -b(y)416 b(or)e(ha)-31 b(v)g(e)416 b(a)f(k)-31 b(eyw)g(ord)416 -b Fq(infertile)q Fv(.)630 b(In)9631 30037 y(the)523 b(latter)h(case)f -(the)h(c)-31 b(hildlessness)523 b(of)h(the)f(p)31 b(erson)522 -b(or)h(union)h(is)f(caused)g(b)-31 b(y)524 b(a)9631 31365 -y(pro)-31 b(v)g(en)369 b(infertilit)-31 b(y)-92 b(.)p -0 TeXcolorgray 6863 33579 a Fs(Commen)-35 b(t:)p 0 TeXcolorgray -554 w Fv(The)386 b(v)-61 b(aule)386 b(of)g(this)f(column)i(is)e(sho)-31 -b(wn)386 b(under)f(the)h(c)-31 b(hildlessness)385 b(sym)-31 -b(b)31 b(ol)9631 34907 y(on)412 b(the)h(c)-31 b(hart.)623 -b(Put)413 b(there)f(a)h(short)f(description)i(of)f(the)f(cause)h(of)g -(c)-31 b(hildlessness,)9631 36236 y(lik)g(e)370 b Fq(anospermia)g -Fv(or)f Fq(vasectomy)r Fv(.)6863 38450 y(An)291 b(example)i(of)e(a)g(p) -31 b(edigree)291 b(with)i(c)-31 b(hildlessness)290 b(is)h(sho)-31 -b(wn)292 b(on)f(Listing)p 0 TeXcolorgray 37305 38450 -a -SDict begin H.S end - 37305 38450 a 0 TeXcolorgray Fv(10)p 0 TeXcolorgray -38411 37736 a -SDict begin H.R end - 38411 37736 a 38411 38450 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.10) cvn H.B /ANN pdfmark end - 38411 38450 -a 0 TeXcolorgray 292 w Fv(and)g(Figure)p 0 TeXcolorgray -44192 38450 a -SDict begin H.S end - 44192 38450 a 0 TeXcolorgray Fv(5)p 0 TeXcolorgray -44745 37736 a -SDict begin H.R end - 44745 37736 a 44745 38450 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.5) cvn H.B /ANN pdfmark end - 44745 38450 -a 0 TeXcolorgray Fv(.)6863 40214 y -SDict begin H.S end - 6863 40214 a 6863 -40214 a -SDict begin 12 H.A end - 6863 40214 a 6863 40214 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.6) cvn /DEST pdfmark -end - 6863 40214 a 1334 x -Ft(4.6)1495 b(Ordering)500 b(Siblings)g(and)f(Marriage)g(P)-42 -b(artners)6863 43592 y Fv(The)312 b(generations)g(in)g(p)31 -b(edigrees)311 b(are)g(ordered)g(in)g(v)-31 b(ertical)313 -b(direction,)325 b(from)312 b(up)f(do)h(do)-31 b(wn.)6863 -44920 y(Ho)g(w)372 b(should)f(w)-31 b(e)372 b(order)e(the)h(p)31 -b(eople)371 b(on)g(the)g(same)g(generation,)j(i.e.)498 -b(siblings)372 b(and)f(mar-)6863 46248 y(riage)f(partners?)8524 -47577 y(Usually)g(t)-31 b(w)g(o)371 b(rules)e(are)g(used:)6863 -48235 y -SDict begin H.S end - 6863 48235 a 6863 48235 a -SDict begin 12 H.A end - 6863 48235 a 6863 48235 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.17) cvn /DEST pdfmark end - 6863 48235 a 0 TeXcolorgray 8216 49791 a Fv(1.)p 0 -TeXcolorgray 555 w(The)331 b(siblings)i(are)e(ordered)g(from)g(the)h -(oldest)g(on)g(the)g(left)g(to)g(the)g(y)-31 b(oungest)333 -b(to)f(the)9631 51119 y(righ)-31 b(t.)6863 51777 y -SDict begin H.S end - 6863 -51777 a 6863 51777 a -SDict begin 12 H.A end - 6863 51777 a 6863 51777 a -SDict begin [/View [/XYZ H.V]/Dest (Item.18) cvn /DEST pdfmark end - 6863 51777 -a 0 TeXcolorgray 8216 53333 a Fv(2.)p 0 TeXcolorgray -555 w(In)330 b(marriage)i(or)e(other)h(union)g(the)g(male)h(is)f(to)g -(the)g(left,)340 b(and)331 b(the)g(female)h(is)e(to)i(the)9631 -54661 y(righ)-31 b(t.)6863 56875 y(Ho)g(w)g(ev)g(er,)365 -b(the)d(com)-31 b(bination)365 b(of)d(these)g(rules)f(migh)-31 -b(t)363 b(lead)g(to)f(the)g(situation)i(when)e(mar-)6863 -58203 y(riage)347 b(lines)f(in)-31 b(tersect)346 b(the)h(paren)-31 -b(tal)347 b(lines.)485 b(Therefore)346 b(the)g(rule)p -0 TeXcolorgray 34718 58203 a -SDict begin H.S end - 34718 58203 a 0 TeXcolorgray -Fv(1)p 0 TeXcolorgray 35271 57490 a -SDict begin H.R end - 35271 57490 a 35271 -58203 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (Item.17) cvn H.B /ANN pdfmark end - 35271 58203 a 0 TeXcolorgray 346 w Fv(is)g(usually)h -(implicitly)6863 59532 y(mo)31 b(di\014ed:)p 0 TeXcolorgray -0 TeXcolorgray 7663 61746 a -SDict begin H.S end - 7663 61746 a 0 TeXcolorgray -Fv(1)p 0 TeXcolorgray 8216 61032 a -SDict begin H.R end - 8216 61032 a 8216 -61746 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (Item.17) cvn H.B /ANN pdfmark end - 8216 61746 a 0 TeXcolorgray Fv(a.)p 0 TeXcolorgray -555 w(The)400 b(are)g(ordered)f(from)i(the)f(oldest)h(on)g(the)f(left)h -(to)g(the)g(y)-31 b(oungest)401 b(to)g(the)g(righ)-31 -b(t.)9631 63074 y(Ho)g(w)g(ev)g(er,)550 b(if)513 b(a)f(sibling's)i -(marriage)g(is)e(sho)-31 b(wn)513 b(on)f(a)h(p)31 b(edigree,)549 -b(this)512 b(sibling)i(is)9631 64402 y(alw)-31 b(a)g(ys)371 -b(the)e(righ)-31 b(tmost)372 b(\(male\))f(or)e(the)g(leftmost)j -(\(female\).)p 0 TeXcolorgray 25405 70071 a(19)p 0 TeXcolorgray -eop end -%%Page: 20 20 -TeXDict begin 20 19 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.20) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 25774 12166 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 25774 12166 -a 24987 12166 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 12166 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 25774 12166 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 12166 a 177 w Fp(John)25774 -12166 y -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 12166 a 25951 -12847 a Fx(I:1)25774 12166 y -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 -a -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 a -tx@Dict begin { -28.45274 -79.66776 } PutCoor PutBegin end - 25774 12166 a 25144 12166 -a -tx@Dict begin tx@NodeDict begin {1.42271 1.42271 11.38092 5.69046 0.0 -} false /N@B1c 16 {InitRnode } /NodeScale {} def NewNode end end - 25144 12166 a 630 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -5.69046 -1.42271 moveto -5.69046 -1.42271 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial -@beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -5.69046 1.42271 moveto -5.69046 1.42271 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 26404 12166 a -tx@Dict begin { 0.0 -5.69046 } PutCoor PutBegin end - -26404 12166 a 23854 12833 a Fx(anosp)28 b(ermia)26404 -12166 y -tx@Dict begin PutEnd end - 26404 12166 a 25774 12166 a -tx@Dict begin PutEnd end - 25774 12166 a 25774 -12166 a -tx@Dict begin { 28.45274 -79.66776 } PutCoor PutBegin end - 25774 12166 a 25774 12166 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 0.0 0.0 0.0 } false /N@B2c -16 {InitRnode } /NodeScale {} def NewNode end end - 25774 12166 a @beginspecial -@setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -5.69046 0.0 moveto -5.69046 0.0 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 25774 12166 a -tx@Dict begin PutEnd end - 25774 12166 a -25774 12166 a -tx@Dict begin { -28.45274 -56.90549 } PutCoor PutBegin end - 25774 12166 a 24987 12166 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 12166 -a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 -12166 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 12166 a 177 w Fp(James)25774 12166 y -tx@Dict begin PutEnd end - 25774 -12166 a 25774 12166 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 12166 a 25951 12847 a Fx(I)g(I:1)25774 -12166 y -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 a -tx@Dict begin PutEnd end - 25774 12166 a 25774 -12166 a -tx@Dict begin { 28.45274 -56.90549 } PutCoor PutBegin end - 25774 12166 a 24987 12166 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 12166 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 12166 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 12166 a -177 w Fp(Ann)25774 12166 y -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 12166 a 25951 12847 a Fx(I)g(I:2)25774 12166 -y -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 a -tx@Dict begin PutEnd end - 25774 12166 a 25774 12166 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 12166 a 25774 12166 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 12166 a 25774 12166 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@B1c InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 12166 a 25774 12166 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B2 /N@B2c InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 12166 a 6863 33499 -a Fv(Figure)339 b(5:)p 0 TeXcolorgray 11664 33499 a -SDict begin H.S end - 11664 -33499 a 11664 33499 a -SDict begin H.R end - 11664 33499 a 11664 33499 a -SDict begin [/View [/XYZ H.V]/Dest (figure.5) cvn /DEST pdfmark end - 11664 -33499 a 0 TeXcolorgray Fv(Example)i(of)e(a)g(P)-31 b(edigree)340 -b(with)g(Childlessness)g(\(Data)g(File)f(from)h(Listing)p -0 TeXcolorgray 43516 33499 a -SDict begin H.S end - 43516 33499 a 0 TeXcolorgray -Fv(10)p 0 TeXcolorgray 44622 32786 a -SDict begin H.R end - 44622 32786 a 44622 -33499 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.10) cvn H.B /ANN pdfmark end - 44622 33499 a 0 TeXcolorgray Fv(\))p 0 TeXcolorgray -6863 37097 a(The)380 b(program)g(follo)-31 b(ws)381 b(these)e(rules.) -523 b(It)379 b(is)g(enough)h(to)g(dra)-31 b(w)380 b(p)31 -b(edigrees)378 b(in)i(most)g(cases.)6863 38425 y(In)443 -b(particular,)464 b(they)444 b(alw)-31 b(a)g(ys)446 b(pro)31 -b(duce)442 b(correct)i(p)31 b(edigrees)443 b(if)h(there)f(is)h(only)g -(one)g(mar-)6863 39753 y(riage)351 b(sho)-31 b(wn.)487 -b(Ho)-31 b(w)g(ev)g(er,)356 b(in)350 b(complex)i(cases)d(these)h(rules) -g(fail,)356 b(as)350 b(sho)-31 b(wn)351 b(on)f(Listing)p -0 TeXcolorgray 43946 39753 a -SDict begin H.S end - 43946 39753 a 0 TeXcolorgray -Fv(11)p 0 TeXcolorgray 45052 39040 a -SDict begin H.R end - 45052 39040 a 45052 -39753 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.11) cvn H.B /ANN pdfmark end - 45052 39753 a 0 TeXcolorgray 6863 41082 a Fv(and)524 -b(Figure)p 0 TeXcolorgray 12817 41082 a -SDict begin H.S end - 12817 41082 a -0 TeXcolorgray Fv(6)p 0 TeXcolorgray 13370 40368 a -SDict begin H.R end - 13370 -40368 a 13370 41082 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.6) cvn H.B /ANN pdfmark end - 13370 41082 a 0 TeXcolorgray Fv(.)955 -b(It)524 b(is)f(p)31 b(ossible)523 b(to)h(extend)g(the)g(rules)e(ab)31 -b(o)-31 b(v)g(e)525 b(to)f(accoun)-31 b(t)525 b(for)e(these)6863 -42410 y(cases,)427 b(ho)-31 b(w)g(ev)g(er)416 b(w)-31 -b(e)416 b(c)-31 b(hose)415 b(another)h(solution:)586 -b(to)416 b(pro)-31 b(vide)416 b(a)f(facilit)-31 b(y)419 -b(for)c(the)g(man)-31 b(ual)6863 43738 y(in)g(terv)g(en)g(tion)424 -b(in)e(the)f(sorting)h(and)g(ordering)f(algorithm.)652 -b(F)-92 b(or)420 b(this)i(purp)31 b(ose)420 b(a)h(sp)31 -b(ecial)6863 45067 y(column)517 b Fq(SortOrder)g Fv(is)e(used.)932 -b(It)516 b(can)g(ha)-31 b(v)g(e)516 b(p)31 b(ositiv)-31 -b(e)518 b(n)-31 b(um)g(b)31 b(ers)515 b(greater)h(than)g(1)g(or)6863 -46395 y(negativ)-31 b(e)438 b(n)-31 b(um)g(b)31 b(ers)435 -b(smaller)h(than)g(-1.)691 b(If)435 b(the)h(v)-61 b(alue)436 -b(of)f(this)h(column)h(is)e(p)31 b(ositiv)-31 b(e,)454 -b(the)6863 47723 y(corresp)31 b(onding)330 b(p)31 b(erson)329 -b(is)g(mo)-31 b(v)g(ed)332 b(to)e(the)g(left)h(when)e(sorting)i -(siblings)g(and)f(to)g(the)g(righ)-31 b(t)6863 49052 -y(when)312 b(sorting)g(marriage)g(partners.)473 b(If)311 -b(it)h(is)f(negativ)-31 b(e,)325 b(the)312 b(opp)31 b(osite)312 -b(sorting)g(rule)f(is)g(ap-)6863 50380 y(plied)344 b(\(see)g(Section)p -0 TeXcolorgray 15586 50380 a -SDict begin H.S end - 15586 50380 a 0 TeXcolorgray -Fv(7)p 0 TeXcolorgray 16139 49667 a -SDict begin H.R end - 16139 49667 a 16139 -50380 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (section.7) cvn H.B /ANN pdfmark end - 16139 50380 a 0 TeXcolorgray 344 w Fv(for)f(more)h(detailed)h -(discussion\).)485 b(Note)344 b(that)h(sibling)g(sorting)f(and)6863 -51709 y(marriage)349 b(partners)e(sorting)h(m)-31 b(ust)349 -b(w)-31 b(ork)348 b(in)g(opp)31 b(osite)348 b(directions,)353 -b(otherwise)c(marriage)6863 53037 y(lines)370 b(in)-31 -b(tersect)370 b(paternal)g(lines.)8524 54365 y(Let)455 -b(us)f(return)g(to)i(the)f(p)31 b(edigree)455 b(on)g(Listing)p -0 TeXcolorgray 28910 54365 a -SDict begin H.S end - 28910 54365 a 0 TeXcolorgray -Fv(11)p 0 TeXcolorgray 30016 53652 a -SDict begin H.R end - 30016 53652 a 30016 -54365 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.11) cvn H.B /ANN pdfmark end - 30016 54365 a 0 TeXcolorgray Fv(.)751 b(T)-92 -b(o)455 b(impro)-31 b(v)g(e)456 b(Figure)p 0 TeXcolorgray -40669 54365 a -SDict begin H.S end - 40669 54365 a 0 TeXcolorgray Fv(6)p 0 TeXcolorgray -41222 53652 a -SDict begin H.R end - 41222 53652 a 41222 54365 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.6) cvn H.B /ANN pdfmark end - 41222 54365 -a 0 TeXcolorgray 455 w Fv(w)-31 b(e)456 b(can)6863 55694 -y(either)412 b(mo)-31 b(v)g(e)414 b(P)-31 b(eter)412 -b(to)h(the)g(righ)-31 b(t)413 b(or)f(Lucy)f(to)i(the)g(left.)622 -b(The)412 b(\014rst)g(solution)i(is)d(sho)-31 b(wn)6863 -57022 y(on)370 b(Listing)p 0 TeXcolorgray 12112 57022 -a -SDict begin H.S end - 12112 57022 a 0 TeXcolorgray Fv(12)p 0 TeXcolorgray -13218 56309 a -SDict begin H.R end - 13218 56309 a 13218 57022 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.12) cvn H.B /ANN pdfmark end - 13218 57022 -a 0 TeXcolorgray 370 w Fv(and)f(Figure)p 0 TeXcolorgray -19233 57022 a -SDict begin H.S end - 19233 57022 a 0 TeXcolorgray Fv(7)p 0 TeXcolorgray -19786 56309 a -SDict begin H.R end - 19786 56309 a 19786 57022 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.7) cvn H.B /ANN pdfmark end - 19786 57022 -a 0 TeXcolorgray Fv(.)493 b(The)370 b(second)f(is)g(sho)-31 -b(wn)370 b(on)f(Listing)p 0 TeXcolorgray 36155 57022 -a -SDict begin H.S end - 36155 57022 a 0 TeXcolorgray Fv(13)p 0 TeXcolorgray -37261 56309 a -SDict begin H.R end - 37261 56309 a 37261 57022 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.13) cvn H.B /ANN pdfmark end - 37261 57022 -a 0 TeXcolorgray 370 w Fv(and)g(Figure)p 0 TeXcolorgray -43276 57022 a -SDict begin H.S end - 43276 57022 a 0 TeXcolorgray Fv(8)p 0 TeXcolorgray -43829 56309 a -SDict begin H.R end - 43829 56309 a 43829 57022 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.8) cvn H.B /ANN pdfmark end - 43829 57022 -a 0 TeXcolorgray Fv(.)8524 58350 y(Of)404 b(course)g(sometimes)j(a)e(p) -31 b(edigree)404 b(cannot)i(b)31 b(e)404 b(dra)-31 b(wn)406 -b(without)h(self-in)-31 b(tersections)6863 59679 y(with)303 -b(an)-31 b(y)303 b(sorting)g(of)g(siblings.)471 b(An)302 -b(example)i(of)e(suc)-31 b(h)302 b(p)31 b(edigree)302 -b(is)g(sho)-31 b(wn)303 b(on)f(Listing)p 0 TeXcolorgray -43946 59679 a -SDict begin H.S end - 43946 59679 a 0 TeXcolorgray Fv(14)p 0 -TeXcolorgray 45052 58965 a -SDict begin H.R end - 45052 58965 a 45052 59679 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.14) cvn H.B /ANN pdfmark end - 45052 59679 a 0 TeXcolorgray 6863 61007 a Fv(and)331 -b(Figure)p 0 TeXcolorgray 12431 61007 a -SDict begin H.S end - 12431 61007 a -0 TeXcolorgray Fv(9)p 0 TeXcolorgray 12984 60294 a -SDict begin H.R end - 12984 -60294 a 12984 61007 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.9) cvn H.B /ANN pdfmark end - 12984 61007 a 0 TeXcolorgray Fv(.)480 -b(Ob)-31 b(viously)332 b(no)f(amoun)-31 b(t)332 b(of)f(sh)-31 -b(u\017ing)332 b(the)e(siblngs)h(can)g(help)g(in)f(his)h(case.)8524 -62335 y(If)380 b(the)h(program)h(cannot)g(a)-31 b(v)g(oid)383 -b(self-in)-31 b(tersection)383 b(of)e(marriage)h(lines)f(and)h(paren) --31 b(tal)6863 63664 y(lines)439 b(despite)f(automatics)j(sorting)e -(and)f(man)-31 b(ual)440 b(in)-31 b(terv)g(en)g(tion,)459 -b(as)437 b(the)i(last)g(resort)e(it)6863 64992 y(creates)369 -b(a)h(m)-31 b(ulti-segmen)g(t)372 b(marriage)f(line,)f(as)f(sho)-31 -b(wn)370 b(on)f(Figures)p 0 TeXcolorgray 35887 64992 -a -SDict begin H.S end - 35887 64992 a 0 TeXcolorgray Fv(6)p 0 TeXcolorgray -36440 64279 a -SDict begin H.R end - 36440 64279 a 36440 64992 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.6) cvn H.B /ANN pdfmark end - 36440 64992 -a 0 TeXcolorgray 370 w Fv(and)p 0 TeXcolorgray 38962 -64992 a -SDict begin H.S end - 38962 64992 a 0 TeXcolorgray Fv(9)p 0 TeXcolorgray -39515 64279 a -SDict begin H.R end - 39515 64279 a 39515 64992 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.9) cvn H.B /ANN pdfmark end - 39515 64992 -a 0 TeXcolorgray Fv(.)p 0 TeXcolorgray 25405 70071 a(20)p -0 TeXcolorgray eop end -%%Page: 21 21 -TeXDict begin 21 20 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.21) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 11217 a -SDict begin H.S end - 6863 11217 -a 6863 11217 a -SDict begin 12 H.A end - 6863 11217 a 6863 11217 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.11) cvn /DEST pdfmark -end - 6863 11217 a -6863 12146 a -SDict begin H.S end - 6863 12146 a 6863 12146 a -SDict begin 12 H.A end - 6863 12146 a 6863 -12146 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.11.1) cvn /DEST pdfmark -end - 6863 12146 a 1218 x Fw(Id)523 b(|Name)2616 b(|Sex)1569 -b(|DoB)3661 b(|Father|Mother|Proband)6863 14582 y(A0)523 -b(|John)2616 b(|male)1046 b(|1915.06.15|)3138 b(|)h(|)6863 -15799 y(B1)523 b(|Joan)2616 b(|female|1940.03.02|A0)2092 -b(|)3139 b(|)6863 17017 y(B2)523 b(|Jane)2616 b(|female|1942.07.07|A0) -2092 b(|)3139 b(|)6863 18235 y(B3)523 b(|Bill)2616 b(|male)1046 -b(|1944.12.01|A0)2092 b(|)3139 b(|)6863 19452 y(B4)523 -b(|Peter)2093 b(|male)1046 b(|1941.05.01|)3138 b(|)h(|)6863 -20670 y(C1)523 b(|Jack)2616 b(|male)1046 b(|1963.12.01|B4)2092 -b(|B2)h(|)6863 21888 y(C2)523 b(|Sam)3139 b(|male)1046 -b(|1961.08.26|)3138 b(|B1)2093 b(|)6863 23105 y(C3)523 -b(|Ann)3139 b(|female|1965.11.12|)f(|B3)2093 b(|)6863 -24323 y(C4)523 b(|Lucy)2616 b(|female|1965.12.11|)3138 -b(|)h(|)6863 25541 y(D1)523 b(|Mark)2616 b(|male)1046 -b(|1989.06.21|C1)2092 b(|C4)h(|yes)6863 26758 y(D2)523 -b(|Dina)2616 b(|female|1991.12.02|C1)2092 b(|C4)h(|)p -0 TeXcolorgray 0 TeXcolorgray 14375 29194 a Fv(Listing)370 -b(11:)494 b(A)369 b(Data)h(File)g(with)g(a)g(Sorting)g(Problem)p -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -6863 42101 a -SDict begin H.S end - 6863 42101 a 6863 42101 a -SDict begin 12 H.A end - 6863 42101 a 6863 -42101 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.12) cvn /DEST pdfmark -end - 6863 42101 a 6863 43031 a -SDict begin H.S end - 6863 43031 a 6863 43031 -a -SDict begin 12 H.A end - 6863 43031 a 6863 43031 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.12.1) cvn /DEST pdfmark -end - 6863 43031 a 1217 x Fw(Id)523 -b(|Name)2616 b(|Sex)1569 b(|DoB)3661 b -(|Father|Mother|Proband|SortOrder)6863 45466 y(A0)523 -b(|John)2616 b(|male)1046 b(|1915.06.15|)3138 b(|)h(|)3661 -b(|)6863 46684 y(B1)523 b(|Joan)2616 b(|female|1940.03.02|A0)2092 -b(|)3139 b(|)3661 b(|)6863 47901 y(B2)523 b(|Jane)2616 -b(|female|1942.07.07|A0)2092 b(|)3139 b(|)3661 b(|)6863 -49119 y(B3)523 b(|Bill)2616 b(|male)1046 b(|1944.12.01|A0)2092 -b(|)3139 b(|)3661 b(|)6863 50337 y(B4)523 b(|Peter)2093 -b(|male)1046 b(|1941.05.01|)3138 b(|)h(|)3661 b(|)1046 -b(3)6863 51554 y(C1)523 b(|Jack)2616 b(|male)1046 b(|1963.12.01|B4)2092 -b(|B2)h(|)3661 b(|)6863 52772 y(C2)523 b(|Sam)3139 b(|male)1046 -b(|1961.08.26|)3138 b(|B1)2093 b(|)3661 b(|)6863 53990 -y(C3)523 b(|Ann)3139 b(|female|1965.11.12|)f(|B3)2093 -b(|)3661 b(|)6863 55207 y(C4)523 b(|Lucy)2616 b(|female|1965.12.11|) -3138 b(|)h(|)3661 b(|)6863 56425 y(D1)523 b(|Mark)2616 -b(|male)1046 b(|1989.06.21|C1)2092 b(|C4)h(|yes)f(|)6863 -57642 y(D2)523 b(|Dina)2616 b(|female|1991.12.02|C1)2092 -b(|C4)h(|)3661 b(|)p 0 TeXcolorgray 0 TeXcolorgray 12708 -60078 a Fv(Listing)371 b(12:)493 b(First)369 b(Solution)i(to)f(the)g -(Problem)g(in)g(Listing)p 0 TeXcolorgray 38101 60078 -a -SDict begin H.S end - 38101 60078 a 0 TeXcolorgray Fv(11)p 0 TeXcolorgray -39207 59364 a -SDict begin H.R end - 39207 59364 a 39207 60078 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.11) cvn H.B /ANN pdfmark end - 39207 60078 -a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 25405 70071 a Fv(21)p 0 TeXcolorgray eop -end -%%Page: 22 22 -TeXDict begin 22 21 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.22) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 41522 60180 a - gsave currentpoint currentpoint translate 90 neg rotate neg exch neg -exch translate - 41522 60180 -a 79317 47581 a -tx@Dict begin { -56.90549 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B3 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 -a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 -47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Bill)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I)28 -b(I:4)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin { -113.81097 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 -47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Joan)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(I)g(I:3)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -284.52744 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B4 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(P)-24 b(eter)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 -48262 a Fx(I)28 b(I:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -170.71646 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 -47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Jane)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 -48262 a Fx(I)g(I:2)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -227.62195 56.90549 } PutCoor PutBegin end - 79317 47581 a 79317 -47581 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@B4_m_B2 10 {InitPnode -} /NodeScale {} def NewNode end end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin { -56.90549 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C3 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Ann)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 -a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I)g(I)g(I:3)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 79317 47581 a 79317 47581 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@C1_m_C4 10 {InitPnode -} /NodeScale {} def NewNode end end - 79317 47581 a 79317 -47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -113.81097 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 -47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C2 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Sam)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 -48262 a Fx(I)g(I)g(I:2)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -227.62195 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 -47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Jac)-24 -b(k)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 -a 79494 48262 a Fx(I)28 b(I)g(I:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 79317 -47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C4 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(Lucy)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I)g(I)g(I:4)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { -113.81097 113.81097 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(John)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 28.45274 -56.90549 } PutCoor PutBegin end - 79317 -47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D2 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(Dina)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(IV:2)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -28.45274 -56.90549 } PutCoor PutBegin end - 79317 -47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Mark)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(IV:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B3 /N@C3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@C2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@B2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@B4 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@D1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@D2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@C4 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1 /N@C1_m_C4 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA 0. def /AngleB -180. def /ArmA 22.76227 def /ArmB 22.76227 def /ArmTypeA 0 def /ArmTypeB -0 def /loopsize 22.76227 def NCLoop } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 91915 60180 a - currentpoint grestore moveto - 91915 60180 a 0 TeXcolorgray 17579 -62615 a Fv(Figure)369 b(6:)p 0 TeXcolorgray 22425 62615 -a -SDict begin H.S end - 22425 62615 a 22425 62615 a -SDict begin H.R end - 22425 62615 a 22425 62615 -a -SDict begin [/View [/XYZ H.V]/Dest (figure.6) cvn /DEST pdfmark end - 22425 62615 a 0 TeXcolorgray Fv(P)-31 b(edigree)370 -b(from)g(Listing)p 0 TeXcolorgray 33230 62615 a -SDict begin H.S end - 33230 -62615 a 0 TeXcolorgray Fv(12)p 0 TeXcolorgray 34336 61902 -a -SDict begin H.R end - 34336 61902 a 34336 62615 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.12) cvn H.B /ANN pdfmark end - 34336 62615 a 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 25405 70071 -a Fv(22)p 0 TeXcolorgray eop end -%%Page: 23 23 -TeXDict begin 23 22 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.23) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 38359 25738 a -tx@Dict begin { -170.71646 56.90549 } PutCoor PutBegin end - 38359 25738 -a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B3 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(Bill)38359 -25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 -26419 a Fx(I)28 b(I:2)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { -227.62195 56.90549 } PutCoor PutBegin end - 38359 25738 a 37572 -25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(Joan)38359 -25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 -26419 a Fx(I)g(I:1)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { 0.0 56.90549 } PutCoor PutBegin end - 38359 25738 a 37572 -25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B4 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(P)-24 -b(eter)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 -25738 a 38536 26419 a Fx(I)28 b(I:4)38359 25738 y -tx@Dict begin PutEnd end - 38359 -25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { -113.81097 56.90549 } PutCoor PutBegin end - 38359 -25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a -177 w Fp(Jane)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(I)g(I:3)38359 25738 -y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin { -56.90549 56.90549 } PutCoor PutBegin end - 38359 25738 a 38359 25738 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@B4_m_B2 10 {InitPnode -} /NodeScale {} def NewNode end end - 38359 25738 a 38359 25738 -a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { -170.71646 0.0 } PutCoor PutBegin end - 38359 25738 a 37572 25738 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C3 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(Ann)38359 25738 -y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 -a Fx(I)g(I)g(I:2)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 38359 25738 a 38359 25738 -a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@C1_m_C4 10 {InitPnode -} /NodeScale {} def NewNode end end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin { -227.62195 0.0 } PutCoor PutBegin end - 38359 25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C2 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a -177 w Fp(Sam)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(I)g(I)g(I:1)38359 25738 -y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin { -56.90549 0.0 } PutCoor PutBegin end - 38359 25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a -177 w Fp(Jac)-24 b(k)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(I)28 b(I)g(I:3)38359 -25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 38359 25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C4 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(Lucy)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 -a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(I)g(I)g(I:4)38359 -25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin { -170.71646 113.81097 } PutCoor PutBegin end - 38359 25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(John)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 -a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(I:1)38359 -25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin { 28.45274 -56.90549 } PutCoor PutBegin end - 38359 25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D2 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a 177 w Fp(Dina)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 -a 38359 25738 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(IV:2)38359 -25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 -25738 a -tx@Dict begin { -28.45274 -56.90549 } PutCoor PutBegin end - 38359 25738 a 37572 25738 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D1 16 {InitRnode } /NodeScale {} def NewNode end end - 37572 25738 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 38359 25738 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 38359 25738 a -177 w Fp(Mark)38359 25738 y -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 38359 25738 a 38536 26419 a Fx(IV:1)38359 25738 y -tx@Dict begin PutEnd end - 38359 -25738 a 38359 25738 a -tx@Dict begin PutEnd end - 38359 25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B3 /N@C3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 -25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@C2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 -25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@B2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 38359 25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@B4 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 38359 -25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@D1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@D2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 -25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@C4 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 38359 25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@C1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 38359 -25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 -25738 a 38359 25738 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 38359 25738 a 0 TeXcolorgray 17579 -42100 a Fv(Figure)369 b(7:)p 0 TeXcolorgray 22425 42100 -a -SDict begin H.S end - 22425 42100 a 22425 42100 a -SDict begin H.R end - 22425 42100 a 22425 42100 -a -SDict begin [/View [/XYZ H.V]/Dest (figure.7) cvn /DEST pdfmark end - 22425 42100 a 0 TeXcolorgray Fv(P)-31 b(edigree)370 -b(from)g(Listing)p 0 TeXcolorgray 33230 42100 a -SDict begin H.S end - 33230 -42100 a 0 TeXcolorgray Fv(12)p 0 TeXcolorgray 34336 41387 -a -SDict begin H.R end - 34336 41387 a 34336 42100 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.12) cvn H.B /ANN pdfmark end - 34336 42100 a 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 6863 45813 -a -SDict begin H.S end - 6863 45813 a 6863 45813 a -SDict begin 12 H.A end - 6863 45813 a 6863 45813 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.13) cvn /DEST pdfmark -end - -6863 45813 a 6863 46742 a -SDict begin H.S end - 6863 46742 a 6863 46742 a -SDict begin 12 H.A end - 6863 -46742 a 6863 46742 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.13.1) cvn /DEST pdfmark -end - 6863 46742 a 1218 x Fw(Id)523 b(|Name)2616 -b(|Sex)1569 b(|DoB)3661 b(|Father|Mother|Proband|SortOrder)6863 -49178 y(A0)523 b(|John)2616 b(|male)1046 b(|1915.06.15|)3138 -b(|)h(|)3661 b(|)6863 50395 y(B1)523 b(|Joan)2616 b -(|female|1940.03.02|A0)2092 b(|)3139 b(|)3661 b(|)6863 -51613 y(B2)523 b(|Jane)2616 b(|female|1942.07.07|A0)2092 -b(|)3139 b(|)3661 b(|)6863 52831 y(B3)523 b(|Bill)2616 -b(|male)1046 b(|1944.12.01|A0)2092 b(|)3139 b(|)3661 -b(|)6863 54048 y(B4)523 b(|Peter)2093 b(|male)1046 b(|1941.05.01|)3138 -b(|)h(|)3661 b(|)6863 55266 y(C1)523 b(|Jack)2616 b(|male)1046 -b(|1963.12.01|B4)2092 b(|B2)h(|)3661 b(|)6863 56484 y(C2)523 -b(|Sam)3139 b(|male)1046 b(|1961.08.26|)3138 b(|B1)2093 -b(|)3661 b(|)6863 57701 y(C3)523 b(|Ann)3139 b(|female|1965.11.12|)f -(|B3)2093 b(|)3661 b(|)6863 58919 y(C4)523 b(|Lucy)2616 -b(|female|1965.12.11|)3138 b(|)h(|)3661 b(|)523 b(-3)6863 -60137 y(D1)g(|Mark)2616 b(|male)1046 b(|1989.06.21|C1)2092 -b(|C4)h(|yes)f(|)6863 61354 y(D2)523 b(|Dina)2616 b -(|female|1991.12.02|C1)2092 b(|C4)h(|)3661 b(|)p 0 TeXcolorgray -0 TeXcolorgray 12183 63790 a Fv(Listing)370 b(13:)494 -b(Second)369 b(Solution)i(to)f(the)g(Problem)g(in)f(Listing)p -0 TeXcolorgray 38627 63790 a -SDict begin H.S end - 38627 63790 a 0 TeXcolorgray -Fv(11)p 0 TeXcolorgray 39733 63076 a -SDict begin H.R end - 39733 63076 a 39733 -63790 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.11) cvn H.B /ANN pdfmark end - 39733 63790 a 0 TeXcolorgray 0 TeXcolorgray 0 -TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 25405 70071 -a Fv(23)p 0 TeXcolorgray eop end -%%Page: 24 24 -TeXDict begin 24 23 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.24) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 19462 25129 a -tx@Dict begin { 227.62195 56.90549 } PutCoor PutBegin end - 19462 25129 -a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B3 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(Bill)19462 -25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 -25810 a Fx(I)28 b(I:4)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 170.71646 56.90549 } PutCoor PutBegin end - 19462 25129 a 18675 -25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(Joan)19462 -25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 -25810 a Fx(I)g(I:3)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 0.0 56.90549 } PutCoor PutBegin end - 19462 25129 a 18675 -25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B4 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(P)-24 -b(eter)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 -25129 a 19639 25810 a Fx(I)28 b(I:1)19462 25129 y -tx@Dict begin PutEnd end - 19462 -25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 113.81097 56.90549 } PutCoor PutBegin end - 19462 -25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a -177 w Fp(Jane)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(I)g(I:2)19462 25129 -y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin { 56.90549 56.90549 } PutCoor PutBegin end - 19462 25129 a 19462 25129 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@B4_m_B2 10 {InitPnode -} /NodeScale {} def NewNode end end - 19462 25129 a 19462 25129 -a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 227.62195 0.0 } PutCoor PutBegin end - 19462 25129 a 18675 25129 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C3 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(Ann)19462 25129 -y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 -a Fx(I)g(I)g(I:4)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 19462 25129 a 19462 25129 -a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@C1_m_C4 10 {InitPnode -} /NodeScale {} def NewNode end end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin { 170.71646 0.0 } PutCoor PutBegin end - 19462 25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C2 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a -177 w Fp(Sam)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(I)g(I)g(I:3)19462 25129 -y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 19462 25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a -177 w Fp(Jac)-24 b(k)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(I)28 b(I)g(I:2)19462 -25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin { -56.90549 0.0 } PutCoor PutBegin end - 19462 25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C4 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(Lucy)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 -a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(I)g(I)g(I:1)19462 -25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin { 170.71646 113.81097 } PutCoor PutBegin end - 19462 25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(John)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 -a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(I:1)19462 -25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin { 28.45274 -56.90549 } PutCoor PutBegin end - 19462 25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D2 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a 177 w Fp(Dina)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 -a 19462 25129 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(IV:2)19462 -25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 -25129 a -tx@Dict begin { -28.45274 -56.90549 } PutCoor PutBegin end - 19462 25129 a 18675 25129 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D1 16 {InitRnode } /NodeScale {} def NewNode end end - 18675 25129 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 19462 25129 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 19462 25129 a -177 w Fp(Mark)19462 25129 y -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 19462 25129 a 19639 25810 a Fx(IV:1)19462 25129 y -tx@Dict begin PutEnd end - 19462 -25129 a 19462 25129 a -tx@Dict begin PutEnd end - 19462 25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B3 /N@C3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 -25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@C2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 -25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@B2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 19462 25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4_m_B2 /N@B4 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 19462 -25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@D1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@D2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 -25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@C4 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 19462 25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C1_m_C4 /N@C1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 19462 -25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 -25129 a 19462 25129 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 19462 25129 a 0 TeXcolorgray 17579 -41491 a Fv(Figure)369 b(8:)p 0 TeXcolorgray 22425 41491 -a -SDict begin H.S end - 22425 41491 a 22425 41491 a -SDict begin H.R end - 22425 41491 a 22425 41491 -a -SDict begin [/View [/XYZ H.V]/Dest (figure.8) cvn /DEST pdfmark end - 22425 41491 a 0 TeXcolorgray Fv(P)-31 b(edigree)370 -b(from)g(Listing)p 0 TeXcolorgray 33230 41491 a -SDict begin H.S end - 33230 -41491 a 0 TeXcolorgray Fv(13)p 0 TeXcolorgray 34336 40778 -a -SDict begin H.R end - 34336 40778 a 34336 41491 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.13) cvn H.B /ANN pdfmark end - 34336 41491 a 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 6863 43986 -a -SDict begin H.S end - 6863 43986 a 6863 43986 a -SDict begin 12 H.A end - 6863 43986 a 6863 43986 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.14) cvn /DEST pdfmark -end - -6863 43986 a 6863 44916 a -SDict begin H.S end - 6863 44916 a 6863 44916 a -SDict begin 12 H.A end - 6863 -44916 a 6863 44916 a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.14.1) cvn /DEST pdfmark -end - 6863 44916 a 1218 x Fw(Id)523 b(|Name)2616 -b(|Sex)1569 b(|DoB)3661 b(|Father|Mother|Proband)6863 -47351 y(A0)523 b(|John)2616 b(|male)1046 b(|1915.06.15|)3138 -b(|)h(|)6863 48569 y(B1)523 b(|Sam)3139 b(|male)1046 -b(|1935.12.04|A0)2092 b(|)3139 b(|)6863 49787 y(B2)523 -b(|Ann)3139 b(|female|1937.03.02|A0)2092 b(|)3139 b(|)6863 -51004 y(C1)523 b(|Paul)2616 b(|male)1046 b(|1952.10.03|B1)2092 -b(|)3139 b(|)6863 52222 y(F1)523 b(|Scott)2093 b(|male)1046 -b(|1912.02.01|)3138 b(|)h(|)6863 53440 y(G1)523 b(|Simon)2093 -b(|male)1046 b(|1934.09.17|F1)2092 b(|)3139 b(|)6863 -54657 y(G2)523 b(|Sarah)2093 b(|female|1936.12.19|F1)f(|)3139 -b(|)6863 55875 y(H1)523 b(|Lola)2616 b(|female|1960.04.13|G2)2092 -b(|)3139 b(|)6863 57093 y(K1)523 b(|Jim)3139 b(|male)1046 -b(|1962.11.05|G1)2092 b(|B2)h(|)6863 58310 y(M1)523 b(|Jane)2616 -b(|female|1917.02.13|)3138 b(|)h(|)6863 59528 y(P1)523 -b(|Simon)2093 b(|male)1046 b(|1935.10.04|)3138 b(|)523 -b(M1)1570 b(|)6863 60745 y(R1)523 b(|Pam)3139 b(|female|1964.02.05|P1) -2092 b(|)3139 b(|)6863 61963 y(X1)523 b(|James)2093 b(|male)1046 -b(|1988.07.12|K1)2092 b(|R1)h(|yes)p 0 TeXcolorgray 0 -TeXcolorgray 11771 64398 a Fv(Listing)370 b(14:)493 b(A)370 -b(P)-31 b(edigree)370 b(with)g(Una)-31 b(v)g(oidable)372 -b(Self-In)-31 b(tersections)p 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 25405 70071 a(24)p 0 TeXcolorgray -eop end -%%Page: 25 25 -TeXDict begin 25 24 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.25) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 41522 60180 a - gsave currentpoint currentpoint translate 90 neg rotate neg exch neg -exch translate - 41522 60180 -a 79317 47581 a -tx@Dict begin { -227.62195 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@G1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 -a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 -47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Simon)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I)28 -b(I:2)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin { -284.52744 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@G2 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 -47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Sarah)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(I)g(I:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -56.90549 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Sam)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(I)g(I:4)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -113.81097 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Ann)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(I)g(I:3)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 56.90549 56.90549 } PutCoor PutBegin end - 79317 47581 a 78530 47581 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@P1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Simon)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(I)g(I:5)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -170.71646 56.90549 } PutCoor PutBegin end - 79317 47581 a 79317 47581 -a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@G1_m_B2 10 {InitPnode -} /NodeScale {} def NewNode end end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@R1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(P)-24 b(am)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I)28 b(I)g(I:4)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin { -284.52744 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@H1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Lola)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 -a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I)g(I)g(I:1)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 79317 47581 a 79317 47581 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@K1_m_R1 10 {InitPnode -} /NodeScale {} def NewNode end end - 79317 47581 a 79317 -47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -170.71646 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 -47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@K1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(Jim)79317 -47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 -48262 a Fx(I)g(I)g(I:2)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 -47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -56.90549 0.0 } PutCoor PutBegin end - 79317 47581 a 78530 -47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(P)-24 -b(aul)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 -47581 a 79494 48262 a Fx(I)28 b(I)g(I:3)79317 47581 y -tx@Dict begin PutEnd end - -79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 56.90549 113.81097 } PutCoor PutBegin end - 79317 47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@M1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(Jane)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I:3)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -85.35823 113.81097 } PutCoor PutBegin end - 79317 -47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(John)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I:2)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { -256.07469 113.81097 } PutCoor PutBegin end - 79317 -47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@F1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a -177 w Fp(Scott)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 a Fx(I:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -56.90549 } PutCoor PutBegin end - 79317 -47581 a 78530 47581 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@X1 16 {InitRnode } /NodeScale {} def NewNode end end - 78530 47581 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -79317 47581 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 79317 47581 a 177 w Fp(James)79317 47581 -y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 79317 47581 a 79494 48262 -a Fx(IV:1)79317 47581 y -tx@Dict begin PutEnd end - 79317 47581 a 79317 47581 a -tx@Dict begin PutEnd end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@G2 /N@H1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@P1 /N@R1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@G1_m_B2 /N@K1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@G1_m_B2 /N@B2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@G1_m_B2 /N@G1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@K1_m_R1 /N@X1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@K1_m_R1 /N@R1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@K1 /N@K1_m_R1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA 0. def /AngleB -180. def /ArmA 22.76227 def /ArmB 22.76227 def /ArmTypeA 0 def /ArmTypeB -0 def /loopsize 22.76227 def NCLoop } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@M1 /N@P1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1 /N@G2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 47581 a 79317 47581 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1 /N@G1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 79317 -47581 a 91915 60180 a - currentpoint grestore moveto - 91915 60180 a 0 TeXcolorgray 17579 -62615 a Fv(Figure)369 b(9:)p 0 TeXcolorgray 22425 62615 -a -SDict begin H.S end - 22425 62615 a 22425 62615 a -SDict begin H.R end - 22425 62615 a 22425 62615 -a -SDict begin [/View [/XYZ H.V]/Dest (figure.9) cvn /DEST pdfmark end - 22425 62615 a 0 TeXcolorgray Fv(P)-31 b(edigree)370 -b(from)g(Listing)p 0 TeXcolorgray 33230 62615 a -SDict begin H.S end - 33230 -62615 a 0 TeXcolorgray Fv(14)p 0 TeXcolorgray 34336 61902 -a -SDict begin H.R end - 34336 61902 a 34336 62615 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.14) cvn H.B /ANN pdfmark end - 34336 62615 a 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 25405 70071 -a Fv(25)p 0 TeXcolorgray eop end -%%Page: 26 26 -TeXDict begin 26 25 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.26) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 6863 6531 a -SDict begin H.S end - 6863 6531 a -6863 6531 a -SDict begin 12 H.A end - 6863 6531 a 6863 6531 a -SDict begin [/View [/XYZ H.V]/Dest (lstlisting.15) cvn /DEST pdfmark -end - 6863 6531 a 6863 -7461 a -SDict begin H.S end - 6863 7461 a 6863 7461 a -SDict begin 12 H.A end - 6863 7461 a 6863 7461 -a -SDict begin [/View [/XYZ H.V]/Dest (lstnumber.15.1) cvn /DEST pdfmark -end - 6863 7461 a 1218 x Fw(Id)523 b(|Name)2616 b(|Sex)1569 -b(|Father|Mother|Proband|DoB)6863 9896 y(A0)523 b(|Jane)2616 -b(|female|)3138 b(|)g(|)3662 b(|1908.12.12)6863 11114 -y(B1)523 b(|John)2616 b(|male)1046 b(|)3138 b(|A0)2092 -b(|)3662 b(|1936.12.15)6863 12332 y(B2)523 b(|Ann)3139 -b(|female|)f(|A0)2092 b(|)3662 b(|1934.04.17)6863 13549 -y(B3)523 b(|Samantha)h(|female|)3138 b(|A0)2092 b(|)3662 -b(|1932.12.03)6863 14767 y(B4)523 b(|Nancy)2093 b(|female|)3138 -b(|A0)2092 b(|)3662 b(|1928.01.05)6863 15984 y(C1)523 -b(|Mary)2616 b(|female|)3138 b(|B2)2092 b(|)523 b(yes)1570 -b(|1955.08.26)6863 17202 y(C2)523 b(|Paul)2616 b(|male)1046 -b(|)3138 b(|B3)2092 b(|)3662 b(|1964.05.07)6863 18420 -y(C3)523 b(|Jane)2616 b(|female|)3138 b(|B4)2092 b(|)3662 -b(|1950.11.03)6863 19637 y(D1)523 b(|Jack)2616 b(|male)1046 -b(|B1)2092 b(|C1)g(|)3662 b(|1975.07.01)6863 20855 y(D2)523 -b(|Laura)2093 b(|female|C2)f(|C3)g(|)3662 b(|1974.09.05)p -0 TeXcolorgray 0 TeXcolorgray 13955 23290 a Fv(Listing)371 -b(15:)493 b(A)369 b(P)-31 b(edigree)370 b(with)h(Consanguinic)g(Unions) -p 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 6863 27491 -a -SDict begin H.S end - 6863 27491 a 6863 27491 a -SDict begin 12 H.A end - 6863 27491 a 6863 27491 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.7) cvn /DEST pdfmark -end - -6863 27491 a 1107 x Ft(4.7)1495 b(Consanguinic)501 b(Unions)6863 -30641 y Fv(Consanguinic)393 b(unions)d(presen)-31 b(t)390 -b(a)g(tec)-31 b(hnical)392 b(problem)f(for)f(the)h(program)g(\(see)f -(the)g(dis-)6863 31969 y(cussion)365 b(in)g(Section)p -0 TeXcolorgray 15840 31969 a -SDict begin H.S end - 15840 31969 a 0 TeXcolorgray -Fv(8)p 0 TeXcolorgray 16393 31256 a -SDict begin H.R end - 16393 31256 a 16393 -31969 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (section.8) cvn H.B /ANN pdfmark end - 16393 31969 a 0 TeXcolorgray Fv(\).)492 b(Therefore)365 -b(the)g(supp)31 b(ort)364 b(of)h(consanguinicit)-31 b(y)368 -b(is)c(exp)31 b(erimen)-31 b(tal)6863 33298 y(for)369 -b(this)h(release.)8524 34626 y(There)387 b(is)h(a)g(n)-31 -b(um)g(b)31 b(er)388 b(of)g(limitations)k(for)c(consanguinic)i(unions)e -(in)g(the)g(data)h(\014le)f(at)6863 35954 y(presen)-31 -b(t.)630 b(First,)426 b(the)415 b(consanguinic)i(unions)e(should)h(not) -f(in)g(the)h(direct)f(lineage)h(of)g(the)6863 37283 y(proband)358 -b(or)f(the)g(p)31 b(erson)357 b(from)g(whic)-31 b(h)358 -b(the)g(p)31 b(edigree)357 b(starts.)489 b(In)357 b(man)-31 -b(y)358 b(cases)f(this)g(limi-)6863 38611 y(tation)370 -b(can)f(eliminated)h(b)-31 b(y)368 b(using)h Fq(-s)f -Fv(option)i(\(see)e(Section)p 0 TeXcolorgray 33057 38611 -a -SDict begin H.S end - 33057 38611 a 0 TeXcolorgray Fv(4.1)p 0 TeXcolorgray -34470 37898 a -SDict begin H.R end - 34470 37898 a 34470 38611 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.1) cvn H.B /ANN pdfmark end - 34470 38611 -a 0 TeXcolorgray Fv(\))h(to)g(c)-31 b(ho)31 b(ose)369 -b(a)f(di\013eren)-31 b(t)6863 39939 y(starting)504 b(p)31 -b(oin)-31 b(t)503 b(for)f(the)h(p)31 b(edigree.)892 b(Second,)536 -b(the)502 b(c)-31 b(hildren)503 b(of)g(consanguinic)h(unions)6863 -41268 y(migh)-31 b(t)324 b(app)31 b(ear)323 b(not)g(cen)-31 -b(terd)322 b(on)h(the)f(c)-31 b(harts.)477 b(An)323 b(example)g(of)g(a) -g(p)31 b(edigree)322 b(with)i(consan-)6863 42596 y(guinic)390 -b(marriages)f(is)f(sho)-31 b(wn)389 b(on)f(Listing)p -0 TeXcolorgray 25012 42596 a -SDict begin H.S end - 25012 42596 a 0 TeXcolorgray -Fv(15)p 0 TeXcolorgray 26118 41883 a -SDict begin H.R end - 26118 41883 a 26118 -42596 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.15) cvn H.B /ANN pdfmark end - 26118 42596 a 0 TeXcolorgray Fv(,)394 b(and)389 -b(the)f(corresp)31 b(onding)388 b(c)-31 b(hart)389 b(is)f(sho)-31 -b(wn)6863 43924 y(on)383 b(Figure)p 0 TeXcolorgray 11919 -43924 a -SDict begin H.S end - 11919 43924 a 0 TeXcolorgray Fv(10)p 0 TeXcolorgray -13025 43211 a -SDict begin H.R end - 13025 43211 a 13025 43924 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.10) cvn H.B /ANN pdfmark end - 13025 43924 -a 0 TeXcolorgray Fv(.)533 b(The)382 b(dra)-31 b(wbac)g(ks)383 -b(of)g(the)f(program)h(are)f(eviden)-31 b(t)383 b(from)g(the)f(p)31 -b(ositions)384 b(of)6863 45253 y(Laura)369 b(nad)h(Jac)-31 -b(k)370 b(on)f(these)g(c)-31 b(harts.)6863 46802 y -SDict begin H.S end - 6863 -46802 a 6863 46802 a -SDict begin 12 H.A end - 6863 46802 a 6863 46802 a -SDict begin [/View [/XYZ H.V]/Dest (subsection.4.8) cvn /DEST pdfmark -end - 6863 46802 -a 1550 x Ft(4.8)1495 b(Language-Dep)42 b(enden)-42 b(t)501 -b(Keyw)-42 b(ords)6863 50395 y Fv(A)-31 b(t)341 b(presen)-31 -b(t)339 b(the)h(program)h Fo(p)31 b(edigree)340 b Fv(can)g(w)-31 -b(ork)341 b(with)g(English)g(and)f(Russian)g(languages.)6863 -51723 y(As)471 b(discussed)e(in)i(Section)p 0 TeXcolorgray -18886 51723 a -SDict begin H.S end - 18886 51723 a 0 TeXcolorgray Fv(3.5)p 0 -TeXcolorgray 20299 51010 a -SDict begin H.R end - 20299 51010 a 20299 51723 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.3.5) cvn H.B /ANN pdfmark end - 20299 51723 a 0 TeXcolorgray Fv(,)498 b(the)471 b(language)i(options) -f(c)-31 b(ho)31 b(oses)471 b Fn(b)-57 b(oth)555 b Fv(the)471 -b(languages)6863 53052 y(of)i(input)g(and)f(output)i(\014les.)802 -b(It)472 b(is)g(easy)h(to)g(add)f(new)h(languages)h(to)f(the)f(sc)-31 -b(heme)473 b(b)-31 b(y)6863 54380 y(expanding)371 b(the)e(library)h -Fq(Pedigree::Language.pm)i Fv(in)e(the)f(distribution.)8524 -55708 y(The)526 b(English)i(language)h(is)d(the)h(default.)966 -b(Moreo)-31 b(v)g(er,)567 b(if)527 b(the)g(Russian)f(option)i(is)6863 -57037 y(c)-31 b(hosen,)370 b(English)g(k)-31 b(eyw)g(ords)370 -b(are)f(still)i(recognized)f(in)f(the)h(input)g(\014le.)8524 -58365 y(The)456 b(English)h(and)g(Russian)f(k)-31 b(eyw)g(ords)457 -b(are)f(listed)h(in)f(T)-92 b(able)p 0 TeXcolorgray 35787 -58365 a -SDict begin H.S end - 35787 58365 a 0 TeXcolorgray Fv(1)p 0 TeXcolorgray -36340 57652 a -SDict begin H.R end - 36340 57652 a 36340 58365 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (table.1) cvn H.B /ANN pdfmark end - 36340 58365 -a 0 TeXcolorgray Fv(.)754 b(Note)457 b(that)h(some)6863 -59693 y(k)-31 b(eyw)g(ords)370 b(ha)-31 b(v)g(e)370 b(v)-61 -b(arian)-31 b(ts;)371 b(they)f(are)f(listed)h(in)f(the)h(table)g(as)f -(w)-31 b(ell.)p 0 TeXcolorgray 25405 70071 a(26)p 0 TeXcolorgray -eop end -%%Page: 27 27 -TeXDict begin 27 26 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.27) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 25774 25534 a -tx@Dict begin { 56.90549 -85.35823 } PutCoor PutBegin end - 25774 25534 -a 25774 25534 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@B1_m_C1 10 {InitPnode -} /NodeScale {} def NewNode end end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 -a 25774 25534 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A0 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 -a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 -25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Jane)25774 25534 y -tx@Dict begin PutEnd end - 25774 -25534 a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 a Fx(I:1)25774 -25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 -25534 a -tx@Dict begin { -85.35823 -113.81097 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C3 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 25534 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Jane)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 -a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 a Fx(I)28 b(I)g(I:1)25774 -25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 -25534 a -tx@Dict begin { -56.90549 -113.81097 } PutCoor PutBegin end - 25774 25534 a 25774 25534 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@C2_m_C3 10 {InitPnode -} /NodeScale {} def NewNode end end - 25774 25534 a 25774 -25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 56.90549 -113.81097 } PutCoor PutBegin end - 25774 25534 a 25774 -25534 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@B1_m1_C1 10 {InitPnode -} /NodeScale {} def NewNode end end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 -25534 a -tx@Dict begin { 28.45274 -113.81097 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a -177 w Fp(Mary)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 a Fx(I)g(I)g(I:3)25774 25534 -y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 -a -tx@Dict begin { -28.45274 -113.81097 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C2 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a -177 w Fp(P)-24 b(aul)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 -25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 a Fx(I)28 b(I)g(I:2)25774 -25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 -25534 a -tx@Dict begin { 85.35823 -56.90549 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B1 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 25534 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(John)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 -a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 a Fx(I)g(I:4)25774 -25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 25534 a 25774 -25534 a -tx@Dict begin { -28.45274 -56.90549 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B3 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 25774 25534 -a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Saman)-24 b(tha)25774 25534 -y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 -a Fx(I)28 b(I:2)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 -a -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { -85.35823 -56.90549 } PutCoor PutBegin end - 25774 25534 a 24987 25534 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B4 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -25774 25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Nancy)25774 25534 -y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 -a Fx(I)g(I:1)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 -a -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 28.45274 -56.90549 } PutCoor PutBegin end - 25774 25534 a 24987 25534 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@B2 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -25774 25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Ann)25774 25534 -y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 -a Fx(I)g(I:3)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 -a -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { -85.35823 -170.71646 } PutCoor PutBegin end - 25774 25534 a 24987 25534 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D2 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 25534 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -25774 25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Laura)25774 25534 -y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 26215 -a Fx(IV:1)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin PutEnd end - 25774 -25534 a 25774 25534 a -tx@Dict begin { 28.45274 -170.71646 } PutCoor PutBegin end - 25774 25534 a 24987 25534 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@D1 16 {InitRnode } /NodeScale {} def NewNode end end - 24987 -25534 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -25774 25534 a -tx@Dict begin { 0.0 11.38092 } PutCoor PutBegin end - 25774 25534 a 177 w Fp(Jac)-24 b(k)25774 -25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 25774 25534 a 25951 -26215 a Fx(IV:2)25774 25534 y -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 -a -tx@Dict begin PutEnd end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1_m_C1 /N@B1_m1_C1 InitNC { tx@Dict begin - /Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 2.6 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1_m_C1 /N@C1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 2.6 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore -gsave 1.0 SLW 1 setgray stroke grestore gsave grestore grestore -end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 2.6 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1_m_C1 /N@B1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 2.6 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore -gsave 1.0 SLW 1 setgray stroke grestore gsave grestore grestore -end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B4 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A0 /N@B1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C2_m_C3 /N@D2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 2.6 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C2_m_C3 /N@C3 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 2.6 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore -gsave 1.0 SLW 1 setgray stroke grestore gsave grestore grestore -end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 2.6 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@C2_m_C3 /N@C2 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 2.6 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore -gsave 1.0 SLW 1 setgray stroke grestore gsave grestore grestore -end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B1_m1_C1 /N@D1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B3 /N@C2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B4 /N@C3 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 25774 25534 -a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@B2 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 22.76227 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 25774 25534 a 0 TeXcolorgray 17302 53166 a Fv(Figure)369 -b(10:)p 0 TeXcolorgray 22702 53166 a -SDict begin H.S end - 22702 53166 a 22702 -53166 a -SDict begin H.R end - 22702 53166 a 22702 53166 a -SDict begin [/View [/XYZ H.V]/Dest (figure.10) cvn /DEST pdfmark end - 22702 53166 a 0 TeXcolorgray -Fv(P)-31 b(edigree)370 b(from)g(Listing)p 0 TeXcolorgray -33507 53166 a -SDict begin H.S end - 33507 53166 a 0 TeXcolorgray Fv(15)p 0 -TeXcolorgray 34613 52453 a -SDict begin H.R end - 34613 52453 a 34613 53166 -a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (lstlisting.15) cvn H.B /ANN pdfmark end - 34613 53166 a 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 25405 70071 a Fv(27)p 0 TeXcolorgray eop -end -%%Page: 28 28 -TeXDict begin 28 27 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.28) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 7974 13932 35970 45 v 8638 -14862 a Fv(English)370 b(k)-31 b(eyw)g(ord)1330 b(English)370 -b(v)-61 b(arian)-31 b(ts)1330 b(Russian)369 b(k)-31 b(eyw)g(ords)p -7974 15304 V 8638 16234 a Fs(Field)424 b(Names)8638 17563 -y Fv(Id)17379 b Fc(\310\344\345\355\362)8638 18891 y -Fv(Name)15597 b Fc(\324\310\316)8638 20219 y Fv(Sex)16703 -b Fc(\317\356\353)8638 21548 y Fv(DoB)16211 b Fc(\320)-31 -b(\356)g(\346\344)8638 22876 y Fv(DoD)16149 b Fc(\323\354\345\360)8638 -24204 y Fv(Mother)14855 b Fc(\314\340\362\374)8638 25533 -y Fv(F)-92 b(ather)15239 b Fc(\316\362\345\366)8638 26861 -y Fv(Proband)14256 b Fc(\317\360\356\341\340\355\344)8638 -28189 y Fv(Condition)13600 b Fc(\321\356\361\362\356)-31 -b(\377\355\350\345)8638 29518 y Fv(Commen)g(t)13692 b -Fc(\312\356\354\354\345\355\362)-31 b(\340\360\350\351)8638 -30846 y Fv(T)g(yp)31 b(e)15904 b Fc(\322\350\357)8638 -32174 y Fv(Twins)15437 b Fc(\301\353\350\347\355\345\366\373)8638 -33503 y Fv(SortOrder)4418 b(Sort)7076 b Fc(\317\356\360)-31 -b(\377\344\356\352\321\356\360\362\350\360\356\342\352\350,)371 -b(\321\356\360\362)8638 34831 y Fs(Field)424 b(V)-106 -b(alues)8638 36159 y Fv(male)16120 b Fc(\354\363\346,)369 -b(\354)8638 37488 y Fv(female)15290 b Fc(\346)-31 b(\345\355,)369 -b(\346)8638 38816 y Fv(unkno)-31 b(wn)14029 b Fc(\355\345\350\347\342,) -369 b(\355\345\350\347\342\345\361\362\355\356)8638 40145 -y Fv(y)-31 b(es)16912 b Fc(\344\340)8638 41473 y Fv(no)17226 -b Fc(\355\345\362)8638 42801 y Fv(normal)15010 b Fc(\355\356\360\354,) -369 b(\347\344\356\360\356\342)8638 44130 y Fv(obligatory)4397 -b(obligat)5790 b Fc(\356\341\353\350\343)-31 b(\340\362)8638 -45458 y Fv(asymptomatic)2488 b(asymp)5997 b Fc(\340\361\350\354\357) -8638 46786 y Fv(a\013ected)5566 b(a\013ect)6495 b Fc -(\341\356\353\374\355,)370 b(\341\356\353\345\355)8638 -48115 y Fv(infertile)14672 b Fc(\341\345\361\357\353\356)-31 -b(\344\355)8638 49443 y Fv(sab)16789 b Fc(\342\373\352\350\344\373\370) -8638 50771 y Fv(monozygotic)3232 b(monzygot)4406 b Fc -(\354\356\355\356\347\350\343\356\362\355,)370 b -(\354\356\355\356\347\350\343)-92 b(,)368 b(\356)-31 -b(\344\355\356)g(\377\351\366\345\342)8638 52100 y Fv(qzygotic)5291 -b(qzygot,)371 b(?)4711 b Fc(?)8638 53428 y Fs(Sp)35 b(ecial)424 -b(Names)8638 54756 y Fq(#)p Fv(ab)31 b(ortion)13722 b -Fq(#)p Fc(\340\341\356\360\362)8638 56085 y Fq(#)p Fv(c)-31 -b(hildless)13835 b Fq(#)p Fc(\341\345\347\344\345\362\355)p -7974 56528 V 0 TeXcolorgray 15725 58514 a Fv(T)-92 b(able)370 -b(1:)p 0 TeXcolorgray 20122 58514 a -SDict begin H.S end - 20122 58514 a 20122 -58514 a -SDict begin H.R end - 20122 58514 a 20122 58514 a -SDict begin [/View [/XYZ H.V]/Dest (table.1) cvn /DEST pdfmark end - 20122 58514 a 0 TeXcolorgray -Fv(Keyw)-31 b(ords)370 b(in)f(Di\013eren)-31 b(t)369 -b(Languages)p 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray -25405 70071 a(28)p 0 TeXcolorgray eop end -%%Page: 29 29 -TeXDict begin 29 28 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.29) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 5867 a -SDict begin H.S end - 6863 5867 a 6863 5867 a -SDict begin 12 H.A end - 6863 -5867 a 6863 5867 a -SDict begin [/View [/XYZ H.V]/Dest (part.2) cvn /DEST pdfmark end - 6863 5867 a 1107 x Fu(P)-50 b(art)599 -b(I)50 b(I)6863 9741 y Fr(Algorithm)864 b(Description)6863 -11617 y -SDict begin H.S end - 6863 11617 a 6863 11617 a -SDict begin 12 H.A end - 6863 11617 a 6863 11617 -a -SDict begin [/View [/XYZ H.V]/Dest (section.5) cvn /DEST pdfmark end - 6863 11617 a 1547 x Fu(5)1793 b(In)-50 b(tro)50 b(duction)6863 -15588 y Fv(This)351 b(part)f(is)h(in)-31 b(tended)351 -b(for)f(adv)-61 b(anced)351 b(users)e(and)h(is)g(not)h(neccessary)f -(for)g(runn)-31 b(uing)351 b(the)6863 16916 y(program.)8524 -18245 y(The)365 b(problem)h(of)g(nicely)g(t)-31 b(yp)31 -b(esetting)368 b(graphs)d(is)g(one)h(of)g(the)f(classical)i(problems)f -(in)6863 19573 y(the)448 b(Computer)g(Science)g([)p 0 -TeXcolorgray 18416 19573 a -SDict begin H.S end - 18416 19573 a 0 TeXcolorgray -Fv(4)p 0 TeXcolorgray 18969 18860 a -SDict begin H.R end - 18969 18860 a 18969 -19573 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.GraphDrawing99) cvn H.B /ANN pdfmark end - 18969 19573 a 0 TeXcolorgray 1 w Fv(].)727 b(One)448 -b(of)f(the)h(earliest)g(algorithms)i(here)d(is)g(the)h(classical)6863 -20902 y(algorithm)541 b(for)e(la)-31 b(y)g(ered)540 b(ro)31 -b(oted)539 b(trees)f(b)-31 b(y)539 b(Reingold)h(and)f(Tilford)h([)p -0 TeXcolorgray 37393 20902 a -SDict begin H.S end - 37393 20902 a 0 TeXcolorgray -Fv(4)p 0 TeXcolorgray 37946 20188 a -SDict begin H.R end - 37946 20188 a 37946 -20902 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.GraphDrawing99) cvn H.B /ANN pdfmark end - 37946 20902 a 0 TeXcolorgray 1 w Fv(,)581 b Fb(x)538 -b Fv(3.1].)1003 b(This)6863 22230 y(algorithm)359 b(w)-31 -b(as)356 b(implemen)-31 b(ted)358 b(b)-31 b(y)356 b Fq(PSTricks)h -Fv([)p 0 TeXcolorgray 27382 22230 a -SDict begin H.S end - 27382 22230 a 0 TeXcolorgray -Fv(3)p 0 TeXcolorgray 27935 21517 a -SDict begin H.R end - 27935 21517 a 27935 -22230 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.PSTricks93) cvn H.B /ANN pdfmark end - 27935 22230 a 0 TeXcolorgray 1 w Fv(].)488 b(Ho)-31 -b(w)g(ev)g(er,)361 b(man)-31 b(y)356 b(p)31 b(edigrees)356 -b(are)f(not)6863 23558 y(trees)440 b([)p 0 TeXcolorgray -9895 23558 a -SDict begin H.S end - 9895 23558 a 0 TeXcolorgray Fv(2)p 0 TeXcolorgray -10448 22845 a -SDict begin H.R end - 10448 22845 a 10448 23558 a -SDict begin [/Color [0 1 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (cite.pst-pdgr06) cvn H.B /ANN pdfmark end - 10448 23558 -a 0 TeXcolorgray 1 w Fv(].)705 b(If)440 b(w)-31 b(e)440 -b(consider)g(a)g(subset)g(of)g(p)31 b(edigrees)440 b(where)f(in)-31 -b(breeding)441 b(is)f(absen)-31 b(t,)459 b(the)6863 24887 -y(p)31 b(edigrees)334 b(b)31 b(ecome)334 b(trees.)480 -b(Ho)-31 b(w)g(ev)g(er,)343 b(ev)-31 b(en)335 b(in)f(this)g(case)g(the) -g(the)g(tree)g(is)g(not)h(necessary)6863 26215 y(la)-31 -b(y)g(ered,)426 b(as)413 b(can)g(b)31 b(e)413 b(seen)g(from)g(Figure)p -0 TeXcolorgray 24685 26215 a -SDict begin H.S end - 24685 26215 a 0 TeXcolorgray -Fv(1)p 0 TeXcolorgray 25238 25502 a -SDict begin H.R end - 25238 25502 a 25238 -26215 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.1) cvn H.B /ANN pdfmark end - 25238 26215 a 0 TeXcolorgray Fv(.)625 b(Therefore)413 -b(a)g(new)h(approac)-31 b(h)414 b(generalizing)6863 27543 -y(Reingold-Tilford)341 b(algorithm)g(is)d(necessary)-92 -b(.)481 b(This)338 b(approac)-31 b(h)339 b(is)f(based)g(on)g(the)g -(analysis)6863 28872 y(of)370 b(the)f(structure)g(of)h(p)31 -b(edigrees)368 b(and)i(is)f(sk)-31 b(etc)g(hed)370 b(in)f(the)h -(remainder)f(of)h(this)f(man)-31 b(ual.)6863 30755 y -SDict begin H.S end - -6863 30755 a 6863 30755 a -SDict begin 12 H.A end - 6863 30755 a 6863 30755 a -SDict begin [/View [/XYZ H.V]/Dest (section.6) cvn /DEST pdfmark end - 6863 -30755 a 1777 x Fu(6)1793 b(Main)598 b(Algorithm)6863 -34957 y Fv(A)426 b(p)31 b(edigree)425 b(consists)h(of)g(no)31 -b(des)425 b(\(v)-31 b(ertices\),)441 b(connected)426 -b(b)-31 b(y)426 b(lines)g(\(edges\).)663 b(If)425 b(there)g(is)6863 -36285 y(no)373 b(in)-31 b(breeding,)375 b(the)e(graph)g(is)g(acyclic.) -505 b(There)373 b(are)f(t)-31 b(w)g(o)375 b(kinds)e(of)g(no)31 -b(des)372 b(in)h(the)g(graph:)6863 37614 y(p)31 b(erson)533 -b(no)31 b(des)533 b(\(squares)h(and)g(circles)f(on)h(Figures)p -0 TeXcolorgray 29973 37614 a -SDict begin H.S end - 29973 37614 a 0 TeXcolorgray -Fv(1)p 0 TeXcolorgray 30526 36900 a -SDict begin H.R end - 30526 36900 a 30526 -37614 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.1) cvn H.B /ANN pdfmark end - 30526 37614 a 0 TeXcolorgray 534 w Fv(and)p 0 -TeXcolorgray 33377 37614 a -SDict begin H.S end - 33377 37614 a 0 TeXcolorgray -Fv(2)p 0 TeXcolorgray 33930 36900 a -SDict begin H.R end - 33930 36900 a 33930 -37614 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.2) cvn H.B /ANN pdfmark end - 33930 37614 a 0 TeXcolorgray Fv(\))g(and)g Fn(marriage)548 -b(no)-57 b(des)p Fv(,)6863 38942 y(whic)-31 b(h)288 b(are)e(nameless)h -(on)g(the)g(\014gures.)465 b(W)-92 b(e)286 b(will)i(use)e(the)h -(notation)j(\\male)e(sp)31 b(ouse-female)6863 40270 y(sp)g(ouse")460 -b(for)g(suc)-31 b(h)459 b(no)31 b(des,)483 b(so)459 b(the)i(marriage)g -(no)31 b(des)459 b(on)h(Figure)p 0 TeXcolorgray 35531 -40270 a -SDict begin H.S end - 35531 40270 a 0 TeXcolorgray Fv(1)p 0 TeXcolorgray -36084 39557 a -SDict begin H.R end - 36084 39557 a 36084 40270 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.1) cvn H.B /ANN pdfmark end - 36084 40270 -a 0 TeXcolorgray 460 w Fv(are)g(I:1-I:2,)484 b(I:3-I:4)6863 -41599 y(and)330 b(I)31 b(I:2-I)g(I:3.)479 b(A)330 b(no)31 -b(de)329 b(has)g(a)h Fn(pr)-57 b(e)g(c)g(e)g(dessor)449 -b Fv(and)330 b Fn(childr)-57 b(en)p Fv(.)480 b(A)329 -b(marriage)i(no)31 b(de)329 b(do)31 b(es)329 b(not)6863 -42927 y(ha)-31 b(v)g(e)380 b(a)f(precedessor,)i(but)e(has)g -Fn(male)405 b(sp)-57 b(ouse)462 b Fv(and)379 b Fn(female)406 -b(sp)-57 b(ouse)461 b Fv(\(it)380 b(is)f(customary)h(to)6863 -44255 y(put)336 b(male)h(sp)31 b(ouses)334 b(to)i(the)g(left)h(and)e -(female)i(sp)31 b(ouses)335 b(to)h(the)g(righ)-31 b(t)336 -b(on)g(p)31 b(edigrees\).)482 b(An)-31 b(y)6863 45584 -y(no)31 b(de)311 b(has)f(a)h Fn(downwar)-57 b(d)341 b(tr)-57 -b(e)g(e)394 b Fv(of)311 b(its)g(c)-31 b(hildren,)323 -b(grandc)-31 b(hildren)312 b(etc.)473 b(The)311 b(do)-31 -b(wn)g(w)g(ard)312 b(tree)6863 46912 y(ma)-31 b(y)371 -b(b)31 b(e)368 b(empt)-31 b(y)-92 b(.)8524 48240 y(An)-31 -b(y)346 b(no)31 b(de)347 b(in)f(an)h(acyclic)g(graph)g(can)f(b)31 -b(e)346 b(a)g(ro)31 b(ot.)486 b(Ho)-31 b(w)g(ev)g(er,)353 -b(in)346 b(la)-31 b(y)g(ered)348 b(trees)d(there)6863 -49569 y(is)377 b(a)g(sp)31 b(ecial)378 b(ro)31 b(ot:)508 -b(the)377 b(one)h(that)g(has)f(no)g(precedessor.)514 -b(Similarly)380 b(w)-31 b(e)377 b(will)i(call)f(a)f Fn(lo)-57 -b(c)g(al)6863 50897 y(r)g(o)g(ot)488 b Fv(a)383 b(no)31 -b(de)384 b(that)g(has)f(no)g(predecessor.)534 b(All)384 -b(marriage)g(no)31 b(des)383 b(are)g(lo)31 b(cal)385 -b(ro)31 b(ots.)534 b(Some)6863 52225 y(p)31 b(erson)369 -b(no)31 b(des)368 b(can)i(b)31 b(e)368 b(lo)31 b(cal)371 -b(ro)31 b(ots)369 b(as)h(w)-31 b(ell.)8524 53554 y(Let)424 -b(us)f(\014rst)h(discuss)f(the)h(case)g(where)g(cobnsanguinic)i -(marriages)f(are)f(absen)-31 b(t.)658 b(In)6863 54882 -y(this)370 b(case)f(a)g(p)31 b(edigree)369 b(is)h(a)f(tree.)8524 -56210 y(The)443 b(prop)31 b(osed)442 b(algorithm)k(is)d(recursiv)-31 -b(e)442 b(and)i(starts)f(from)g(a)h(lo)31 b(cal)444 b(ro)31 -b(ot.)715 b(Strictly)6863 57539 y(sp)31 b(eaking,)364 -b(it)f(can)e(start)h(from)g(an)-31 b(y)362 b(lo)31 b(cal)363 -b(ro)31 b(ot,)364 b(but)d(medical)i(p)31 b(edigrees)361 -b(ha)-31 b(v)g(e)363 b(a)e(sp)31 b(ecial)6863 58867 y(p)g(erson:)577 -b Fn(pr)-57 b(ob)g(and,)423 b Fv(the)412 b(p)31 b(erson)411 -b(who)i(w)-31 b(as)412 b(the)g(\014rst)g(to)g(b)31 b(e)412 -b(examined)h(b)-31 b(y)412 b(genetic)h(sp)31 b(e-)6863 -60196 y(cialists)426 b(\(the)e(proband)g(is)g(sho)-31 -b(wn)424 b(b)-31 b(y)425 b(an)f(arro)-31 b(w)424 b(dra)-31 -b(wn)425 b(near)e(the)h(no)31 b(de)424 b(on)g(Figures)p -0 TeXcolorgray 44500 60196 a -SDict begin H.S end - 44500 60196 a 0 TeXcolorgray -Fv(1)p 0 TeXcolorgray 45053 59482 a -SDict begin H.R end - 45053 59482 a 45053 -60196 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.1) cvn H.B /ANN pdfmark end - 45053 60196 a 0 TeXcolorgray 6863 61524 a Fv(and)p -0 TeXcolorgray 8963 61524 a -SDict begin H.S end - 8963 61524 a 0 TeXcolorgray -Fv(2)p 0 TeXcolorgray 9516 60811 a -SDict begin H.R end - 9516 60811 a 9516 -61524 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.2) cvn H.B /ANN pdfmark end - 9516 61524 a 0 TeXcolorgray Fv(\).)477 b(Therefore)317 -b(it)g(mak)-31 b(es)318 b(sense)e(to)i(start)g(from)f(the)h(lo)31 -b(cal)318 b(ro)31 b(ot)318 b(whic)-31 b(h)318 b(has)f(proband)6863 -62852 y(in)370 b(its)f(do)-31 b(wn)g(w)g(ard)371 b(tree.)8524 -64181 y(If)527 b(this)h(lo)31 b(cal)529 b(ro)31 b(ot)528 -b(is)g(a)g(p)31 b(erson)526 b(no)31 b(de,)568 b(the)528 -b(p)31 b(edigree)527 b(is)h(the)g(la)-31 b(y)g(ered)528 -b(tree,)568 b(and)6863 65509 y(Reingold-Tilford)387 b(algorithm)g(is)c -(su\016cien)-31 b(t.)537 b(Therefore)384 b(w)-31 b(e)384 -b(should)h(consider)e(only)i(the)p 0 TeXcolorgray 25405 -70071 a(29)p 0 TeXcolorgray eop end -%%Page: 30 30 -TeXDict begin 30 29 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.30) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 28910 18465 a -tx@Dict begin { -170.71646 56.90549 } PutCoor PutBegin end - 28910 18465 -a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GF1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 28910 -18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I:1)28910 18465 -y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 -a -tx@Dict begin { -113.81097 56.90549 } PutCoor PutBegin end - 28910 18465 a 28910 18465 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@GF1_m_GM1 10 {InitPnode -} /NodeScale {} def NewNode end end - 28910 18465 a 28910 18465 -a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { -56.90549 56.90549 } PutCoor PutBegin end - 28910 18465 a 28123 18465 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GM1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray 0.0 7.11317 moveto -0.0 -7.11317 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial -@beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial -@setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray -9.38945 -9.38945 moveto -9.38945 9.38945 L 0 setlinejoin 0 setlinecap stroke end - -@endspecial 28910 18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a -29087 19222 a Fv(I:2)28910 18465 y -tx@Dict begin PutEnd end - 28910 18465 a 28910 -18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { 0.0 56.90549 } PutCoor PutBegin end - 28910 18465 a 28123 -18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GF2 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - - -@endspecial 28910 18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 -a Fv(I:3)28910 18465 y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 -18465 a 28910 18465 a -tx@Dict begin { 56.90549 56.90549 } PutCoor PutBegin end - 28910 18465 a 28910 18465 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@GF2_m_GM2 10 {InitPnode -} /NodeScale {} def NewNode end end - 28910 -18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { 113.81097 56.90549 } PutCoor PutBegin end - 28910 -18465 a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@GM2 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28910 18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a -29087 19222 a Fv(I:4)28910 18465 y -tx@Dict begin PutEnd end - 28910 18465 a 28910 -18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { -142.26372 0.0 } PutCoor PutBegin end - 28910 18465 a 28123 -18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@A1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray /DS 2.0 2. CLW mul -add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0 0.0] FontDot -/Dot { moveto gsave 1. 1. scale (b) show grestore } bind def 0.0 -0.0 Dot end - - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28910 -18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I)31 b(I:1)28910 -18465 y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 -18465 a -tx@Dict begin { -85.35823 0.0 } PutCoor PutBegin end - 28910 18465 a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@F1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28910 18465 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I)g(I:2)28910 18465 -y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 -a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 28910 18465 a 28910 18465 a -tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@F1_m_M1 10 {InitPnode -} /NodeScale {} def NewNode end end - 28910 18465 a 28910 18465 -a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { 56.90549 0.0 } PutCoor PutBegin end - 28910 18465 a 28123 18465 -a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@M1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -28910 18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I)g(I:3)28910 -18465 y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 -18465 a -tx@Dict begin { -142.26372 -56.90549 } PutCoor PutBegin end - 28910 18465 a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@C1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial 28910 18465 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I)g(I)g(I:1)28910 18465 -y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 -a -tx@Dict begin { -56.90549 -56.90549 } PutCoor PutBegin end - 28910 18465 a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@P 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.5 setgray 1. .setopacityalpha - fill grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 -setlinejoin 0 setlinecap stroke grestore end - -@endspecial @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow -1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul -dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 -0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub -moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray -/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 -1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 -h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto -gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside -{ } def [ -8.2511 -8.2511 -15.6491 -15.6491 /Lineto /lineto load -def 0 setlinejoin false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def -} if () length 0 gt { 1.5 2. CLW mul add dup 1.4 mul exch 0.4 mul -neg add /arrowlength exch def 4 copy /y1 ED /x1 ED /y2 ED /x2 ED /Alpha -y2 y1 sub x2 x1 sub Atan def ArrowA x1 Alpha cos arrowlength mul add -y1 Alpha sin arrowlength mul add /n n 1 sub def n { 4 copy /y1 ED /x1 -ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub Atan -def /ArrowPos 0. def /dArrowPos 0.5 abs def 1. cvi { /ArrowPos ArrowPos -dArrowPos add def x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos -mul add ArrowInside pop pop } repeat }{ /ArrowPos 0. def /dArrowPos -1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos -ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub -ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto -} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 -2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial -28910 18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I)g(I)g(I:2)28910 -18465 y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 -18465 a -tx@Dict begin { 0.0 -56.90549 } PutCoor PutBegin end - 28910 18465 a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S1 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 -w @beginspecial @setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray 0.0 0.0 7.11317 .5 CLW mul -sub 0 360 arc closepath gsave 0.5 setgray 1. .setopacityalpha fill - grestore gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore end - -@endspecial 28910 18465 -a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a 29087 19222 a Fv(I)g(I)g(I:3)28910 18465 -y -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 -a -tx@Dict begin { 56.90549 -56.90549 } PutCoor PutBegin end - 28910 18465 a 28123 18465 a -tx@Dict begin tx@NodeDict begin {7.11317 7.11317 14.22635 7.11317 0.0 -} false /N@S2 16 {InitRnode } /NodeScale {} def NewNode end end - 28123 18465 a 787 w @beginspecial -@setspecial - tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def -/ArrowInside { } def 0.8 SLW 0 setgray [ 7.11317 -7.11317 7.11317 -7.11317 -7.11317 7.11317 -7.11317 -7.11317 /Lineto /lineto load def -0 setlinejoin false NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { -pop pop } repeat }{ n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED -/x0 ED /y1 ED /x1 ED /xx1 x1 def /yy1 y1 def x1 y1 /x1 x0 x1 add 2 -div def /y1 y0 y1 add 2 div def x1 y1 moveto /n n 2 sub def /drawArrows -{ x11 y11 0.5 1 gt { /Alpha y12 y11 sub x12 x11 sub atan def /ArrowPos -0. def /Length x12 x11 sub y12 y11 sub Pyth def /dArrowPos 0.5 abs -def { /ArrowPos ArrowPos dArrowPos add def ArrowPos Length gt { exit -} if x11 Alpha cos ArrowPos mul add y11 Alpha sin ArrowPos mul add -currentdict /ArrowInside known { ArrowInside } if pop pop } loop }{ -/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } -ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x12 x11 sub -ArrowPos mul x11 add y12 y11 sub ArrowPos mul y11 add currentdict /ArrowInside -known { ArrowInside } if pop pop } repeat } ifelse pop pop Lineto } -def n { 4 copy /y11 ED /x11 ED /y12 ED /x12 ED drawArrows } repeat -x1 y1 x0 y0 6 4 roll 2 copy /y11 ED /x11 ED /y12 y0 def /x12 x0 def -drawArrows /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def drawArrows -pop pop closepath } ifelse gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore end - -@endspecial 28910 18465 a -tx@Dict begin { 0.0 -11.38092 } PutCoor PutBegin end - 28910 18465 a -29087 19222 a Fv(I)g(I)g(I:4)28910 18465 y -tx@Dict begin PutEnd end - 28910 18465 -a 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@A1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@F1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@GM1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF1_m_GM1 /N@GF1 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@M1 InitNC { tx@Dict begin -/Lineto /lineto load def 0 setlinejoin false pop end /AngleA -90. -def /AngleB 90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 -sub dup mul add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB -0 def NCAngles } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha - 0 setlinejoin 0 setlinecap stroke grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@GM2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@GF2_m_GM2 /N@GF2 InitNC { NCCoor tx@Dict -begin ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED -x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. - def /Length x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos -ArrowPos dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha -cos ArrowPos mul add y1 Alpha sin ArrowPos mul add ArrowInside pop -pop } loop }{/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div -}{ 0.5 } ifelse def 1. cvi { /ArrowPos ArrowPos dArrowPos add def -x2 x1 sub ArrowPos mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside -pop pop } repeat } ifelse pop pop lineto pop pop end } if end gsave -0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap -stroke grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@A1 /N@C1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@P InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S1 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@S2 InitNC { tx@Dict begin /Lineto -/lineto load def 0 setlinejoin false pop end /AngleA -90. def /AngleB -90. def /ArmA 28.45274 GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul -add sqrt sub def /ArmB 0.0 def /ArmTypeA 0 def /ArmTypeB 0 def NCAngles - } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin -0 setlinecap stroke grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@M1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /ArrowA { moveto } def -/ArrowB { } def /ArrowInside { } def /NCLW CLW def tx@NodeDict begin -0.0 0.0 neg 0.0 0.0 0 0 /N@F1_m_M1 /N@F1 InitNC { NCCoor tx@Dict begin -ArrowA CP 4 2 roll ArrowB 4 copy /y2 ED /x2 ED /y1 ED /x1 ED x1 y1 -0.5 1 gt { /Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length -x2 x1 sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def {/ArrowPos ArrowPos -dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos -mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{/ArrowPos -0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{ 0.5 } ifelse def -1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul -x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } -ifelse pop pop lineto pop pop end } if end gsave 0.8 SLW 0 setgray - 1. .setopacityalpha 0 setlinejoin 0 setlinecap stroke grestore - grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /NCLW CLW def tx@NodeDict -begin 0.0 0.0 neg 19.91682 19.91682 0 0 /N@GF1 /N@GM1 InitNC { tx@Dict -begin /Lineto /lineto load def 0 setlinejoin false pop end 28.45274 -19.91682 NCBox } if end gsave 45. rotate 0.08 SLW 0 0 1 setrgbcolor -0.8 0.0 0.0 LineFill grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /NCLW CLW def tx@NodeDict -begin 0.0 0.0 neg 19.91682 19.91682 0 0 /N@A1 /N@F1 InitNC { tx@Dict -begin /Lineto /lineto load def 0 setlinejoin false pop end 36.98865 -19.91682 NCBox } if end gsave 45. rotate 0.08 SLW 0 0 1 setrgbcolor -0.8 0.0 0.0 LineFill grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /NCLW CLW def tx@NodeDict -begin 0.0 0.0 neg 19.91682 19.91682 0 0 /N@C1 /N@C1 InitNC { tx@Dict -begin /Lineto /lineto load def 0 setlinejoin false pop end 36.98865 -19.91682 NCBox } if end gsave 45. rotate 0.08 SLW 0 0 1 setrgbcolor -0.8 0.0 0.0 LineFill grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin { -113.81097 91.04869 } PutCoor PutBegin end - 28910 18465 -a 0 0 1 TeXcolorrgb 24901 18742 a Fv(Left)369 b(subp)31 -b(edigree)p 0 TeXcolorgray 28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 -a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /NCLW CLW def tx@NodeDict -begin 0.0 0.0 neg 19.91682 19.91682 0 0 /N@GF2 /N@GM2 InitNC { tx@Dict -begin /Lineto /lineto load def 0 setlinejoin false pop end 28.45274 -19.91682 NCBox } if end gsave 45. rotate 0.08 SLW 1 0 0 setrgbcolor -0.8 0.0 0.0 LineFill grestore grestore end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /NCLW CLW def tx@NodeDict -begin 0.0 0.0 neg 19.91682 19.91682 0 0 /N@M1 /N@M1 InitNC { tx@Dict -begin /Lineto /lineto load def 0 setlinejoin false pop end 36.98865 -19.91682 NCBox } if end gsave 45. rotate 0.08 SLW 1 0 0 setrgbcolor -0.8 0.0 0.0 LineFill grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin { 56.90549 91.04869 } PutCoor PutBegin end - 28910 18465 a 1 0 0 TeXcolorrgb 24532 -18742 a Fv(Righ)-31 b(t)370 b(subp)31 b(edigree)p 0 TeXcolorgray -28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } -def /ArrowInside { } def 0.8 SLW 0 setgray /NCLW CLW def tx@NodeDict -begin 0.0 0.0 neg 19.91682 19.91682 0 0 /N@P /N@S2 InitNC { tx@Dict -begin /Lineto /lineto load def 0 setlinejoin false pop end 36.98865 -19.91682 NCBox } if end gsave 45. rotate 0.08 SLW 0 1 0 setrgbcolor -0.8 0.0 0.0 LineFill grestore grestore end - 28910 18465 -a 28910 18465 a -tx@Dict begin { 0.0 -85.35823 } PutCoor PutBegin end - 28910 18465 a 0 1 0 TeXcolorrgb 25241 -18850 a Fv(Do)-31 b(wn)g(w)g(ard)370 b(tree)p 0 TeXcolorgray -28910 18465 a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end - 28910 18465 -a @beginspecial @setspecial - tx@Dict begin STP newpath 0.8 SLW 0 setgray /DS 2.0 2. CLW mul -add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0 0.0] FontDot -/Dot { moveto gsave 1. 1. scale (b) show grestore } bind def 0.0 -0.0 Dot end - -@endspecial 28910 18465 -a -tx@Dict begin PutEnd end - 28910 18465 a 28910 18465 a -tx@Dict begin { 0.0 5.69046 } PutCoor PutBegin end - 28910 18465 a 26410 18850 -a Fv(Lo)31 b(cal)371 b(ro)31 b(ot)28910 18465 y -tx@Dict begin PutEnd end - 28910 -18465 a 0 TeXcolorgray 15033 33499 a Fv(Figure)369 b(11:)p -0 TeXcolorgray 20433 33499 a -SDict begin H.S end - 20433 33499 a 20433 33499 -a -SDict begin H.R end - 20433 33499 a 20433 33499 a -SDict begin [/View [/XYZ H.V]/Dest (figure.11) cvn /DEST pdfmark end - 20433 33499 a 0 TeXcolorgray -Fv(Subp)31 b(edigrees)368 b(and)i(Do)-31 b(wn)g(w)g(ard)371 -b(T)-92 b(ree)p 0 TeXcolorgray 0 TeXcolorgray 6863 37035 -a(case)450 b(when)g(the)h(lo)31 b(cal)451 b(ro)31 b(ot)451 -b(is)f(a)g(marriage)h(no)31 b(de.)736 b(In)449 b(this)h(case)g(w)-31 -b(e)451 b(can)f(t)-31 b(yp)31 b(eset)451 b(the)6863 38364 -y(do)-31 b(wn)g(w)g(ard)339 b(tree)e(using)h(Reingold-Tilford)i -(algorithm.)485 b(The)338 b(sp)31 b(ouses)336 b(do)h(not)h(b)31 -b(elong)338 b(to)6863 39692 y(this)349 b(tree.)485 b(Ho)-31 -b(w)g(ev)g(er,)354 b(eac)-31 b(h)349 b(of)f(them)h(b)31 -b(elongs)348 b(to)h(eac)-31 b(h)349 b(o)-31 b(wn)349 -b(subp)31 b(edigree.)485 b(W)-92 b(e)347 b(will)j(call)6863 -41020 y(them)337 b Fn(left)365 b(subp)-57 b(e)g(digr)g(e)g(e)421 -b Fv(and)336 b Fn(right)366 b(subp)-57 b(e)g(digr)g(e)g(e)p -Fv(.)483 b(W)-92 b(e)335 b(recursiv)-31 b(ely)336 b(apply)h(our)e -(algorithm)6863 42349 y(to)442 b(t)-31 b(yp)31 b(eset)442 -b(left)h(and)f(righ)-31 b(t)442 b(subp)31 b(edigrees.)709 -b(Then)441 b(w)-31 b(e)442 b(mo)-31 b(v)g(e)443 b(the)f(left)g(subp)31 -b(edigree)441 b(to)6863 43677 y(the)351 b(righ)-31 b(t)352 -b(and)g(righ)-31 b(t)352 b(subp)31 b(edigree)350 b(to)i(the)f(left)h -(as)f(far)g(as)g(w)-31 b(e)351 b(can)g(without)i(in)-31 -b(tersection)6863 45005 y(b)31 b(et)-31 b(w)g(een)370 -b(them)g(and)g(the)f(do)-31 b(wn)g(w)g(ard)371 b(tree.)8524 -46334 y(This)329 b(pro)31 b(cess)328 b(is)h(sho)-31 b(wn)329 -b(on)h(Figure)p 0 TeXcolorgray 24170 46334 a -SDict begin H.S end - 24170 46334 -a 0 TeXcolorgray Fv(11)p 0 TeXcolorgray 25276 45620 a -SDict begin H.R end - -25276 45620 a 25276 46334 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.11) cvn H.B /ANN pdfmark end - 25276 46334 a 0 TeXcolorgray -Fv(.)481 b(Ob)-31 b(viously)330 b(this)f(algorithm)j(con)-31 -b(v)g(erges)330 b(and)6863 47662 y(leads)291 b(to)h(t)-31 -b(yp)31 b(esetting)293 b(the)e(p)31 b(edigree)290 b(without)j(in)-31 -b(tersections)292 b(b)31 b(et)-31 b(w)g(een)292 b(the)f(subtrees)f(and) -6863 48990 y(subp)31 b(edigrees.)6863 50874 y -SDict begin H.S end - 6863 50874 -a 6863 50874 a -SDict begin 12 H.A end - 6863 50874 a 6863 50874 a -SDict begin [/View [/XYZ H.V]/Dest (section.7) cvn /DEST pdfmark end - 6863 50874 a -1777 x Fu(7)1793 b(Algorithm)696 b(for)e(Sorting)h(Siblings)g(and)g -(Marriage)9553 54644 y(P)-50 b(artners)6863 57068 y Fv(When)393 -b(w)-31 b(e)394 b(create)f(a)h(marriage)g(no)31 b(de,)400 -b(w)-31 b(e)393 b(w)-31 b(an)g(t)395 b(to)f(put)g(the)f(male)i(to)f -(the)f(left)h(and)g(the)6863 58396 y(female)426 b(to)f(the)g(righ)-31 -b(t.)659 b(When)424 b(w)-31 b(e)425 b(then)g(sort)f(siblings,)440 -b(w)-31 b(e)425 b(w)-31 b(an)g(t)426 b(this)f(male)h(to)f(b)31 -b(e)424 b(the)6863 59725 y(righ)-31 b(tmost,)370 b(and)d(the)g(female)h -(to)g(b)31 b(e)366 b(the)h(leftmost.)494 b(T)-92 b(o)367 -b(do)g(so,)h(w)-31 b(e)367 b(assign)g(to)h(eac)-31 b(h)367 -b(no)31 b(de)6863 61053 y(the)481 b(sp)31 b(ecial)481 -b(quan)-31 b(tit)g(y)483 b Fq(SortOrder)q Fv(.)826 b(Initially)483 -b(all)f(no)31 b(des)480 b(ha)-31 b(v)g(e)481 b Fq(SortOrder)h -Fv(equal)f(to)6863 62381 y(zero,)367 b(unless)e(sp)31 -b(eci\014cally)368 b(set)d(b)-31 b(y)367 b(the)f(user)f(in)h(the)g -(input)h(\014le)f(\(see)f(Section)p 0 TeXcolorgray 39889 -62381 a -SDict begin H.S end - 39889 62381 a 0 TeXcolorgray Fv(4.6)p 0 TeXcolorgray -41302 61668 a -SDict begin H.R end - 41302 61668 a 41302 62381 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.6) cvn H.B /ANN pdfmark end - 41302 62381 -a 0 TeXcolorgray Fv(\).)493 b(Then)6863 63710 y(w)-31 -b(e)370 b(use)e(the)i(follo)-31 b(wing)373 b(rules:)6863 -64368 y -SDict begin H.S end - 6863 64368 a 6863 64368 a -SDict begin 12 H.A end - 6863 64368 a 6863 64368 -a -SDict begin [/View [/XYZ H.V]/Dest (Item.19) cvn /DEST pdfmark end - 6863 64368 a 0 TeXcolorgray 8216 65924 a Fv(1.)p 0 -TeXcolorgray 555 w(When)368 b(creating)j(the)e(the)g(marriage)i(no)31 -b(de:)p 0 TeXcolorgray 25405 70071 a(30)p 0 TeXcolorgray -eop end -%%Page: 31 31 -TeXDict begin 31 30 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.31) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 5867 a -SDict begin H.S end - 6863 5867 a 6863 5867 a -SDict begin 12 H.A end - 6863 -5867 a 6863 5867 a -SDict begin [/View [/XYZ H.V]/Dest (Item.20) cvn /DEST pdfmark end - 6863 5867 a 0 TeXcolorgray 10098 6974 -a Fv(\(a\))p 0 TeXcolorgray 555 w(If)316 b(b)31 b(oth)318 -b(sp)31 b(ouses)315 b(ha)-31 b(v)g(e)318 b(equal)g Fq(SortOrder)g -Fv(\014eld,)328 b(the)317 b(male)h(go)31 b(es)317 b(to)h(the)f(left,) -12066 8302 y(the)369 b(female)i(go)31 b(es)369 b(to)h(the)g(righ)-31 -b(t.)6863 8739 y -SDict begin H.S end - 6863 8739 a 6863 8739 a -SDict begin 12 H.A end - 6863 8739 a -6863 8739 a -SDict begin [/View [/XYZ H.V]/Dest (Item.21) cvn /DEST pdfmark end - 6863 8739 a 0 TeXcolorgray 10036 10073 a -Fv(\(b\))p 0 TeXcolorgray 555 w(Otherwise,)370 b(the)f(sp)31 -b(ouse)369 b(with)h(greater)g Fq(SortOrder)g Fv(go)31 -b(es)369 b(to)h(the)g(left.)6863 10571 y -SDict begin H.S end - 6863 10571 a -6863 10571 a -SDict begin 12 H.A end - 6863 10571 a 6863 10571 a -SDict begin [/View [/XYZ H.V]/Dest (Item.22) cvn /DEST pdfmark end - 6863 10571 a 0 -TeXcolorgray 10159 11844 a Fv(\(c\))p 0 TeXcolorgray -555 w(If)377 b Fq(SortOrder)i Fv(of)f(a)g(sp)31 b(ouse)377 -b(is)h(0,)j(w)-31 b(e)378 b(set)f(it)i(to)f(1)g(\(the)h(sp)31 -b(ouse)377 b(on)h(the)g(left\))12066 13173 y(or)369 b(-1)g(\(the)h(sp) -31 b(ouse)369 b(on)g(the)h(righ)-31 b(t\).)6863 13892 -y -SDict begin H.S end - 6863 13892 a 6863 13892 a -SDict begin 12 H.A end - 6863 13892 a 6863 13892 a -SDict begin [/View [/XYZ H.V]/Dest (Item.23) cvn /DEST pdfmark end - -6863 13892 a 0 TeXcolorgray 8216 15387 a Fv(2.)p 0 TeXcolorgray -555 w(When)368 b(sorting)i(siblings:)6863 16266 y -SDict begin H.S end - 6863 -16266 a 6863 16266 a -SDict begin 12 H.A end - 6863 16266 a 6863 16266 a -SDict begin [/View [/XYZ H.V]/Dest (Item.24) cvn /DEST pdfmark end - 6863 16266 -a 0 TeXcolorgray 10098 17601 a Fv(\(a\))p 0 TeXcolorgray -555 w(The)f(sibling)i(with)f(smaller)g Fq(SortOrder)h -Fv(go)31 b(es)369 b(to)h(the)f(left.)6863 18099 y -SDict begin H.S end - 6863 -18099 a 6863 18099 a -SDict begin 12 H.A end - 6863 18099 a 6863 18099 a -SDict begin [/View [/XYZ H.V]/Dest (Item.25) cvn /DEST pdfmark end - 6863 18099 -a 0 TeXcolorgray 10036 19372 a Fv(\(b\))p 0 TeXcolorgray -555 w(If)345 b(b)31 b(oth)345 b(siblings)h(ha)-31 b(v)g(e)346 -b(the)f(same)g Fq(SortOrder)r Fv(,)350 b(the)345 b(oldest)h(one)f(go)31 -b(es)345 b(to)h(the)12066 20700 y(left.)6863 22368 y -SDict begin H.S end - -6863 22368 a 6863 22368 a -SDict begin 12 H.A end - 6863 22368 a 6863 22368 a -SDict begin [/View [/XYZ H.V]/Dest (section.8) cvn /DEST pdfmark end - 6863 -22368 a 1993 x Fu(8)1793 b(Mo)50 b(di\014cations)598 -b(for)g(Consangunic)h(Unions)6863 26785 y Fv(Consanguinic)500 -b(unions)d(presen)-31 b(t)497 b(a)g(problem)h(for)f(the)h(describ)31 -b(ed)496 b(algorithm,)533 b(b)31 b(ecause)6863 28114 -y(p)g(edigrees)369 b(with)h(them)g(are)f(no)h(longer)g(trees)e(\(see)h -(Figure)p 0 TeXcolorgray 32126 28114 a -SDict begin H.S end - 32126 28114 a -0 TeXcolorgray Fv(10)p 0 TeXcolorgray 33232 27400 a -SDict begin H.R end - 33232 -27400 a 33232 28114 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (figure.10) cvn H.B /ANN pdfmark end - 33232 28114 a 0 TeXcolorgray Fv(\).)8524 -29442 y(In)269 b(this)i(release)e(of)i(the)f(program)h(w)-31 -b(e)271 b(use)e(the)h(follo)-31 b(wing)274 b(hac)-31 -b(k.)460 b(The)271 b(direct)f(lineage)i(of)6863 30770 -y(the)317 b(proband)f(\(or,)328 b(more)316 b(generally)-92 -b(,)329 b(the)316 b(starting)h(no)31 b(de\))317 b(ma)-31 -b(y)317 b(ha)-31 b(v)g(e)318 b(b)31 b(oth)316 b(mothers)h(and)6863 -32099 y(fathers)361 b(in)f(the)h(p)31 b(edigree)361 b(b)31 -b(ecause)360 b(they)h(share)e(genes)i(from)g(the)g(starting)g(no)31 -b(de.)490 b(If)360 b(an)-31 b(y)6863 33427 y(other)401 -b(p)31 b(erson)399 b(has)h(b)31 b(oth)401 b(mother)g(and)g(father)f(in) -h(the)f(c)-31 b(hart,)409 b(his)401 b(or)f(her)f(paren)-31 -b(ts)401 b(b)31 b(oth)6863 34755 y(shared)281 b(their)h(genes)g(with)h -(the)f(starting)h(no)31 b(de.)463 b(Therefore)282 b(they)g(formed)g(a)g -(consanguinic)6863 36084 y(union.)964 b(In)525 b(this)i(case)f(the)g(c) --31 b(hildren)527 b(of)f(this)g(no)31 b(de)526 b(app)31 -b(ear)526 b(in)h(t)-31 b(w)g(o)527 b(subtrees:)806 b(their)6863 -37412 y(mother's)370 b(and)g(their)f(father's.)8524 38741 -y(W)-92 b(e)504 b(delete)j(them)f(from)g(one)g(of)g(the)f(subtrees)g -(\(the)h(one)g(with)h(lo)-31 b(w)g(er)506 b(generation)6863 -40069 y(n)-31 b(um)g(b)31 b(er\),)328 b(connect)316 b(their)h(paren)-31 -b(ts)316 b(with)h(a)f(double)h(line)f(\(consanguinic)j(union\))e(and)f -(put)6863 41397 y(the)370 b(descen)-31 b(t)369 b(line)h(from)g(the)f -(middle)h(of)g(the)f(union)h(to)g(them.)8524 42726 y(There)494 -b(are)g(t)-31 b(w)g(o)497 b(problems)d(with)i(this)f(hac)-31 -b(k)495 b(\(see)g(Section)p 0 TeXcolorgray 34894 42726 -a -SDict begin H.S end - 34894 42726 a 0 TeXcolorgray Fv(4.7)p 0 TeXcolorgray -36307 42012 a -SDict begin H.R end - 36307 42012 a 36307 42726 a -SDict begin [/Color [1 0 0]/H /I/Border [0 0 0]BorderArrayPatch/Subtype -/Link/Dest (subsection.4.7) cvn H.B /ANN pdfmark end - 36307 42726 -a 0 TeXcolorgray Fv(\):)745 b(the)495 b(c)-31 b(hildren)495 -b(of)6863 44054 y(consanguinic)357 b(unions)e(are)g(not)h(cen)-31 -b(tered)355 b(on)g(the)g(diagaram,)361 b(and)355 b(the)g(hac)-31 -b(k)356 b(fails)g(if)g(the)6863 45382 y(starting)371 -b(no)31 b(de)369 b(itself)h(is)f(a)h(descendan)-31 b(t)369 -b(of)h(a)g(consanguinic)h(union.)8524 46711 y(Probably)460 -b(the)f(next)g(releases)f(will)i(emplo)-31 b(y)461 b(b)31 -b(etter)459 b(algorithms)i(for)d(consanguinic)6863 48039 -y(unions.)6863 49707 y -SDict begin H.S end - 6863 49707 a 6863 49707 a -SDict begin 12 H.A end - 6863 -49707 a 6863 49707 a -SDict begin [/View [/XYZ H.V]/Dest (section.9) cvn /DEST pdfmark end - 6863 49707 a 1993 x Fu(9)1793 b(Conclusion)6863 -54124 y Fv(The)532 b(algorithm)j(seems)c(to)i(b)31 b(e)531 -b(e\016cien)-31 b(t)533 b(and)f(pro)31 b(ducing)533 b(nicely)g(t)-31 -b(yp)31 b(eset)532 b(p)31 b(edigrees.)6863 55453 y(Since)508 -b(the)g(input)h(\014le)f(format)i(is)e(simple,)544 b(it)508 -b(ma)-31 b(y)509 b(b)31 b(e)508 b(used)f(b)-31 b(y)508 -b(the)h(p)31 b(eople)508 b(without)6863 56781 y(sp)31 -b(ecial)414 b(skills)f(in)h(L)14932 56554 y Fp(A)15420 -56781 y Fv(T)16034 57019 y(E)16649 56781 y(X.)624 b(On)413 -b(the)g(other)g(hand,)425 b(the)413 b(T)30880 57019 y(E)31496 -56781 y(X)g(\014les)f(pro)31 b(duces)413 b(are)f(easy)h(to)6863 -58109 y(understand)369 b(and)h(edit)g(man)-31 b(ually)371 -b(if)f(the)g(need)e(arises.)p 0 TeXcolorgray 25405 70071 -a(31)p 0 TeXcolorgray eop end -%%Page: 32 32 -TeXDict begin 32 31 bop 0 TeXcolorgray 0 0 a -SDict begin /product where{pop product(Distiller)search{pop pop pop -version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto -closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show -grestore}if}{pop}ifelse}{pop}ifelse}if end - 0 0 a 0 -TeXcolorgray 6752 1660 a -SDict begin H.S end - 6752 1660 a 6752 1660 a -SDict begin H.R end - 6752 -1660 a 6752 1660 a -SDict begin [/View [/XYZ H.V]/Dest (page.32) cvn /DEST pdfmark end - 6752 1660 a 0 TeXcolorgray 0 TeXcolorgray -0 TeXcolorgray 6863 5867 a -SDict begin H.S end - 6863 5867 a 6863 5867 a -SDict begin 12 H.A end - 6863 -5867 a 6863 5867 a -SDict begin [/View [/XYZ H.V]/Dest (section.10) cvn /DEST pdfmark end - 6863 5867 a 1107 x Fu(10)1793 b(Ac)-50 -b(kno)g(wledgemen)g(ts)6863 9398 y Fv(The)495 b(authors)g(are)f -(grateful)i(to)f(Herb)31 b(ert)493 b(V)-92 b(o\031)496 -b(for)e(help)h(with)g Fq(PSTricks)h Fv(co)31 b(de.)868 -b(The)6863 10727 y(supp)31 b(ort)496 b(of)583 b(T)13177 -10965 y(E)13793 10727 y(X)496 b(User)f(Group)g(is)h(gratefully)j(ac)-31 -b(kno)g(wledged.)876 b(One)496 b(of)g(the)h(authors)6863 -12055 y(\(LA\))408 b(w)-31 b(as)408 b(supp)31 b(orted)407 -b(b)-31 b(y)407 b(Russian)g(F)-92 b(oundation)408 b(for)g(F)-92 -b(undamen)-31 b(tal)408 b(Researc)-31 b(h)407 b(\(tra)-31 -b(v)g(el)6863 13383 y(gran)g(t)252 b(06-04-58811\),)279 -b(Russian)250 b(F)-92 b(ederation)251 b(Presiden)-31 -b(t)251 b(Council)h(for)e(Gran)-31 b(ts)250 b(Supp)31 -b(orting)6863 14712 y(Y)-92 b(oung)370 b(Scien)-31 b(tists)370 -b(and)g(Flagship)g(Science)f(Sc)-31 b(ho)31 b(ols)370 -b(\(gran)-31 b(t)371 b(MD-4245.2006.7\))6863 18372 y -SDict begin H.S end - -6863 18372 a 6863 18372 a -SDict begin 18 H.A end - 6863 18372 a 6863 18372 a -SDict begin [/View [/XYZ H.V]/Dest (section*.5) cvn /DEST pdfmark end - 6863 -18372 a Fu(References)6863 19026 y -SDict begin H.S end - 6863 19026 a 6863 -19026 a -SDict begin 12 H.A end - 6863 19026 a 6863 19026 a -SDict begin [/View [/XYZ H.V]/Dest (cite.PedigreeNomenclature95) cvn -/DEST pdfmark end - 6863 19026 a 0 TeXcolorgray -1771 x Fv([1])p 0 TeXcolorgray 555 w(Robin)480 b(L.)f(Bennett,)508 -b(Kathryn)479 b(A.)h(Steinhaus,)507 b(Stefanie)481 b(B.)e(Uhric)-31 -b(h,)507 b(Corrine)480 b(K.)8585 22125 y(O'Sulliv)-61 -b(an,)369 b(Rob)31 b(ert)365 b(G.)h(Resta,)h(Debra)e(Lo)31 -b(c)-31 b(hner-Do)g(yle,)367 b(Dorene)e(S.)h(Mark)-31 -b(ei,)368 b(Vic-)8585 23454 y(toria)392 b(Vincen)-31 -b(t,)398 b(and)391 b(Jan)f(Hamanishi.)558 b(Recommendations)393 -b(for)e(standardized)g(h)-31 b(u-)8585 24782 y(man)370 -b(p)31 b(edigree)369 b(nomenclature.)493 b Fn(A)-28 b(m.)397 -b(J.)f(Hum.)h(Genet.)p Fv(,)371 b(56\(3\):745{752,)k(1995.)6863 -25502 y -SDict begin H.S end - 6863 25502 a 6863 25502 a -SDict begin 12 H.A end - 6863 25502 a 6863 25502 -a -SDict begin [/View [/XYZ H.V]/Dest (cite.pst-pdgr06) cvn /DEST pdfmark -end - 6863 25502 a 0 TeXcolorgray 1494 x Fv([2])p 0 TeXcolorgray -555 w(Boris)1601 b(V)-92 b(eytsman)1601 b(and)g(Leila)h(Akhmadeev)-61 -b(a.)4162 b Fn(Cr)-57 b(e)g(ating)1530 b(Me)-57 b(d-)8585 -28324 y(ic)g(al)1984 b(Pe)-57 b(digr)g(e)g(es)1985 b(with)e(PST)-85 -b(ricks)1984 b(and)f(L)32992 28093 y Fa(A)33493 28324 -y Fn(T)34096 28563 y(E)34706 28324 y(X)p Fv(,)2526 b(July)2095 -b(2007.)p 0 TeXcolorgray 8585 29899 a -SDict begin H.S end - 8585 29899 a 0 -TeXcolorgray -246 x Fq(http://ctan.tug.org/tex-)55 b -(archive/graphics/pstricks/contrib/pedigree/pst-)g(pdgr)p -0 TeXcolorgray 52270 28884 a -SDict begin H.R end - 52270 28884 a 52270 29653 -a -SDict begin [/H /I/Border [0 0 0]BorderArrayPatch/Color [0 1 1]/Action -<>/Subtype -/Link H.B /ANN pdfmark end - 52270 29653 a 0 TeXcolorgray Fv(.)6863 30341 y -SDict begin H.S end - 6863 -30341 a 6863 30341 a -SDict begin 12 H.A end - 6863 30341 a 6863 30341 a -SDict begin [/View [/XYZ H.V]/Dest (cite.PSTricks93) cvn /DEST pdfmark -end - 6863 30341 -a 0 TeXcolorgray 1526 x Fv([3])p 0 TeXcolorgray 555 w(Timoth)-31 -b(y)430 b(V)-92 b(an)428 b(Zandt.)667 b Fn(PST)-85 b(ricks:)618 -b(PostScript)449 b(Macr)-57 b(os)448 b(for)i(Generic)i(T)40796 -32105 y(E)41405 31867 y(X)p Fv(,)443 b(July)8585 33195 -y(2007.)p 0 TeXcolorgray 11397 33441 a -SDict begin H.S end - 11397 33441 a -0 TeXcolorgray -246 x Fq(http://ctan.tug.org/tex-)55 -b(archive/graphics/pstricks/base/doc)p 0 TeXcolorgray -45150 32426 a -SDict begin H.R end - 45150 32426 a 45150 33195 a -SDict begin [/H /I/Border [0 0 0]BorderArrayPatch/Color [0 1 1]/Action -<>/Subtype -/Link H.B /ANN pdfmark end - 45150 33195 -a 0 TeXcolorgray Fv(.)6863 33884 y -SDict begin H.S end - 6863 33884 a 6863 -33884 a -SDict begin 12 H.A end - 6863 33884 a 6863 33884 a -SDict begin [/View [/XYZ H.V]/Dest (cite.GraphDrawing99) cvn /DEST -pdfmark end - 6863 33884 a 0 TeXcolorgray -1525 x Fv([4])p 0 TeXcolorgray 555 w(Giusepp)31 b(e)275 -b(Di)g(Battista,)298 b(P)-31 b(eter)276 b(Eades,)295 -b(Rob)31 b(erto)276 b(T)-92 b(amassia,)296 b(and)276 -b(Ioannis)g(G.)g(T)-92 b(ollis.)8585 36737 y Fn(Gr)-57 -b(aph)301 b(Dr)-57 b(awing:)463 b(A)-28 b(lgortihms)301 -b(for)g(the)g(Visualization)g(of)h(Gr)-57 b(aphs)p Fv(.)323 -b(An)267 b(Alan)g(R.)g(Apt)8585 38066 y(Bo)31 b(ok.)371 -b(Pren)-31 b(tice)370 b(Hall,)h(New)e(Jersey)-92 b(,)369 -b(1999.)p 0 TeXcolorgray 25405 70071 a(32)p 0 TeXcolorgray -eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex index 70b3dad5cb..68adf23835 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/doc/russian.tex @@ -4,10 +4,10 @@ \rput(0, 0){\pnode{F1_m_M1}} \rput(3.3, 0){\pstPerson[female, normal, belowtext={\small I:2}, deceased, abovetext={\scriptsize é×ÁÎÏ×Á ìÀÂÏ×Ø é×ÁÎÏ×ÎÁ}]{M1}} \rput(-3.3, 0){\pstPerson[male, obligatory, belowtext={\small I:1}, deceased, abovetext={\scriptsize é×ÁÎÏ× ðÅÔÒ éÌØÉÞ}]{F1}} -\rput(0, -6.6){\pstPerson[female, normal, belowtext={\small III:2}, abovetext={\scriptsize é×ÁÎÏ×Á äÁÒØÑ óÅÒÇÅÅ×ÎÁ}]{K2}} -\rput(-3.3, -6.6){\pstPerson[male, asymptomatic, belowtext={\small III:1}, abovetext={\scriptsize é×ÁÎÏ× é×ÁÎ óÅÒÇÅÅ×ÉÞ}]{K1}} \rput(1.65, -3.3){\pstPerson[female, normal, belowtext={\small II:2}, abovetext={\scriptsize é×ÁÎÏ×Á áÎÎÁ ðÅÔÒÏ×ÎÁ}]{S1}} \rput(-1.65, -3.3){\pstPerson[male, affected, belowtext={\small II:1}, proband, abovetext={\scriptsize é×ÁÎÏ× óÅÒÇÅÊ ðÅÔÒÏ×ÉÞ}]{P}} +\rput(0, -6.6){\pstPerson[female, normal, belowtext={\small III:2}, abovetext={\scriptsize é×ÁÎÏ×Á äÁÒØÑ óÅÒÇÅÅ×ÎÁ}]{K2}} +\rput(-3.3, -6.6){\pstPerson[male, asymptomatic, belowtext={\small III:1}, abovetext={\scriptsize é×ÁÎÏ× é×ÁÎ óÅÒÇÅÅ×ÉÞ}]{K1}} \pstDescent{F1_m_M1}{P} \pstDescent{F1_m_M1}{S1} \ncline[]{F1_m_M1}{M1} diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 b/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 index adb65ae743..68daf7209f 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -38,27 +38,36 @@ . ds PI \(*p . ds L" `` . ds R" '' +. ds C` +. ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. -.ie \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX .. -. nr % 0 -. rr F -.\} -.el \{\ -. de IX +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" .. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} .\} +.rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. @@ -124,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "pedigree 1" -.TH pedigree 1 "2012-04-14" "perl v5.10.0" "User Contributed Perl Documentation" +.TH pedigree 1 "2021-10-02" "perl v5.18.4" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -168,8 +177,7 @@ Print version information .IP "\fB/etc/pedigree.cfg\fR" 4 .IX Item "/etc/pedigree.cfg" Global configuration file -.ie n .IP "\fB\fB$HOME\fB/.pedigreerc\fR" 4 -.el .IP "\fB\f(CB$HOME\fB/.pedigreerc\fR" 4 +.IP "\fB\f(CB$HOME\fB/.pedigreerc\fR" 4 .IX Item "$HOME/.pedigreerc" User configuration file .SH "SEE ALSO" @@ -177,9 +185,9 @@ User configuration file The manual distributed with this program describes the format of the configuration file and the input file. .PP -The library functions are described in \fIPedigree::Language\fR\|(3), -\&\fIPedigree::Parser\fR\|(3), \fIPedigree::Node\fR\|(3), \fIPedigree::PersonNode\fR\|(3), -\&\fIPedigree::MarriageNode\fR\|(3), \fIPedigree::Area\fR\|(3). +The library functions are described in \fBPedigree::Language\fR\|(3), +\&\fBPedigree::Parser\fR\|(3), \fBPedigree::Node\fR\|(3), \fBPedigree::PersonNode\fR\|(3), +\&\fBPedigree::MarriageNode\fR\|(3), \fBPedigree::Area\fR\|(3). .SH "AUTHOR" .IX Header "AUTHOR" -Boris Veytsman, Leila Akhmadeeva, 2006\-2012 +Boris Veytsman, Leila Akhmadeeva, 2006\-2021 diff --git a/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl b/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl index 209c3131be..d5cc70a4e9 100644 --- a/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl +++ b/graphics/pstricks/contrib/pedigree/pedigree-perl/pedigree.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# Copyright (C) 2006-2012 Boris Veytsman & Leila Akhmadeeva +# Copyright (C) 2006-2021 Boris Veytsman & Leila Akhmadeeva # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -92,7 +92,7 @@ Pedigree::MarriageNode(3), Pedigree::Area(3). =head1 AUTHOR -Boris Veytsman, Leila Akhmadeeva, 2006-2012 +Boris Veytsman, Leila Akhmadeeva, 2006-2021 =cut @@ -105,18 +105,18 @@ Boris Veytsman, Leila Akhmadeeva, 2006-2012 use strict; use vars qw($opt_c $opt_d $opt_o $opt_s $opt_v); -our $TLCONF; # TL config file -our $TLCONFLOCAL; # TL local config file - -BEGIN { - # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root - if (length($TLMaster)) { - unshift @INC, "$TLMaster/texmf-dist/scripts/pedigree-perl"; - $TLCONF = "$TLMaster/texmf-config/pedigree/pedigree.cfg"; - chomp($TLCONFLOCAL = `kpsewhich -var-value=TEXMFLOCAL`); - $TLCONFLOCAL .= "/pedigree/pedigree.cfg"; - } +############################## +# TeXLive compatibility stuff +############################## +my $TLMaster; # Where TeXlive is +my $TLCONF; # TL config file +my $TLCONFLOCAL; # TL local config file +chomp($TLMaster = `kpsewhich -var-value=TEXMFROOT`); +if (length($TLMaster)) { + unshift @INC, "$TLMaster/texmf-dist/scripts/pedigree-perl"; + $TLCONF = "$TLMaster/texmf-config/pedigree/pedigree.cfg"; + chomp($TLCONFLOCAL = `kpsewhich -var-value=TEXMFLOCAL`); + $TLCONFLOCAL .= "/pedigree/pedigree.cfg"; } use Getopt::Std; @@ -129,9 +129,9 @@ use Pedigree; my $USAGE="Usage: $0 [-c configuration_file] [-d] [-o output_file] [-s start_id] input_file\n"; my $COPYRIGHT=<. diff --git a/info/tex-vpat/Makefile b/info/tex-vpat/Makefile new file mode 100644 index 0000000000..1e3a431b93 --- /dev/null +++ b/info/tex-vpat/Makefile @@ -0,0 +1,38 @@ +PACKAGE=tex-vpat + +SRC = texlive-vpat.tex + +PDF = ${SRC:%.tex=%.pdf} + +HTML = ${SRC:%.tex=%.html} ${SRC:%.tex=%.css} + +all: ${PDF} ${HTML} + +%.pdf: %.tex + pdflatex $< + while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \ + do pdflatex $<; done + + +%.html: %.tex + htlatex $< + +%.css: %.tex + htlatex $< + +clean: + $(RM) *.log *.aux \ + *.cfg *.glo *.idx *.toc \ + *.ilg *.ind *.out *.lof \ + *.lot *.bbl *.blg *.gls *.cut *.hd \ + *.dvi *.ps *.thm *.tgz *.zip \ + *.4ht *.4ct *.4tc *.tmp *.idv *.lg *.xref + +distclean: clean + $(RM) ${PDF} ${HTML} + +archive: all clean + COPYFILE_DISABLE=1 tar -czvf ../$(PACKAGE).tgz --exclude '*~' \ + --exclude '*.tgz' --exclude '*.zip' --exclude 2021tug \ + --exclude '.git*' --exclude '*.tar' \ + --transform 's/^./${PACKAGE}/' .; mv ../${PACKAGE}.tgz . diff --git a/info/tex-vpat/README.md b/info/tex-vpat/README.md new file mode 100644 index 0000000000..784b2f6288 --- /dev/null +++ b/info/tex-vpat/README.md @@ -0,0 +1,15 @@ +# TeX VPAT Statement # + +This is the TeX Accessility Conformance Report based on [ITI VPAT(R)](https://www.itic.org/policy/accessibility/vpat) guidelines. + +Currently it covers TeXLive. Other distributions can be added if needed. + +The report is produced by [Tex Users Group](https://tug.org). + +TeX VPAT Statement (c) 2021 by TeX Users Group + +TeX VPAT is licensed under a +Creative Commons Attribution 3.0 Unported License. + +You should have received a copy of the license along with this +work. If not, see [http://creativecommons.org/licenses/by/3.0/](http://creativecommons.org/licenses/by/3.0/). diff --git a/info/tex-vpat/texlive-vpat.css b/info/tex-vpat/texlive-vpat.css new file mode 100644 index 0000000000..e3c7a96a37 --- /dev/null +++ b/info/tex-vpat/texlive-vpat.css @@ -0,0 +1,180 @@ + +/* start css.sty */ +.cmr-7{font-size:70%;} +.cmr-17{font-size:170%;} +.cmr-9{font-size:90%;} +.cmr-12{font-size:120%;} +.cmtt-10{font-family: monospace,monospace;} +.cmbx-10{ font-weight: bold;} +.cmti-10{ font-style: italic;} +p{margin-top:0;margin-bottom:0} +p.indent{text-indent:0;} +p + p{margin-top:1em;} +p + div, p + pre {margin-top:1em;} +div + p, pre + p {margin-top:1em;} +a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +div.par-math-display, div.math-display{text-align:center;} +li p.indent { text-indent: 0em } +li p:first-child{ margin-top:0em; } +li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p:first-child{ margin-bottom:0; } +li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +pre.verbatim {font-family: monospace,monospace; text-align:left; clear:both; } +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.fbox {display:table} +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 0px; margin:0px; } +.hline td, .cline td{ padding: 0; } +.hline hr, .cline hr{border:none;border-top:1px solid black;} +.tabbing-right {text-align:right;} +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.reversemarginpar{float:left;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.bar-css {text-decoration:overline;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;} +.index-item, .index-subitem, .index-subsubitem {display:block} +div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} +div.caption span.id{font-weight: bold; white-space: nowrap; } +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +div.author{white-space: nowrap;} +h1.partHead{text-align: center} +div.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +.abstracttitle{text-align:center;margin-bottom:1em;} +.rotatebox{display: inline-block;} +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 0px; margin:0px; } +.hline td, .cline td{ padding: 0; } +.hline hr, .cline hr{border:none;border-top:1px solid black;} +div.array {text-align:center;} +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +div.longtable{text-align:center;} +table.longtable{margin-left:auto; margin-right: auto;} +tr#TBL-4-1- td{border-top:0.112em solid} +tr#TBL-4-1- td{border-bottom:0.06999em solid} +tr#TBL-4-9- td{border-bottom:0.112em solid} +td#TBL-5-1-1{border-bottom:0.112em solid} +td#TBL-5-3-1{border-bottom:0.06999em solid} +td#TBL-5-6-1{border-bottom:0.112em solid} +td#TBL-6-1-1{border-bottom:0.112em solid} +td#TBL-6-3-1{border-bottom:0.06999em solid} +td#TBL-6-6-1{border-bottom:0.112em solid} +td#TBL-7-1-1{border-bottom:0.112em solid} +td#TBL-7-3-1{border-bottom:0.06999em solid} +td#TBL-7-6-1{border-bottom:0.112em solid} +td#TBL-8-1-1{border-bottom:0.112em solid} +td#TBL-8-3-1{border-bottom:0.06999em solid} +td#TBL-8-6-1{border-bottom:0.112em solid} +td#TBL-9-1-1{border-bottom:0.112em solid} +td#TBL-9-3-1{border-bottom:0.06999em solid} +td#TBL-9-6-1{border-bottom:0.112em solid} +td#TBL-10-1-1{border-bottom:0.112em solid} +td#TBL-10-3-1{border-bottom:0.06999em solid} +td#TBL-10-6-1{border-bottom:0.112em solid} +td#TBL-11-1-1{border-bottom:0.112em solid} +td#TBL-11-3-1{border-bottom:0.06999em solid} +td#TBL-11-6-1{border-bottom:0.112em solid} +td#TBL-12-1-1{border-bottom:0.112em solid} +td#TBL-12-3-1{border-bottom:0.06999em solid} +td#TBL-12-6-1{border-bottom:0.112em solid} +td#TBL-13-1-1{border-bottom:0.112em solid} +td#TBL-13-3-1{border-bottom:0.06999em solid} +td#TBL-13-6-1{border-bottom:0.112em solid} +td#TBL-14-1-1{border-bottom:0.112em solid} +td#TBL-14-3-1{border-bottom:0.06999em solid} +td#TBL-14-6-1{border-bottom:0.112em solid} +td#TBL-15-1-1{border-bottom:0.112em solid} +td#TBL-15-3-1{border-bottom:0.06999em solid} +td#TBL-15-6-1{border-bottom:0.112em solid} +/* end css.sty */ + diff --git a/info/tex-vpat/texlive-vpat.html b/info/tex-vpat/texlive-vpat.html new file mode 100644 index 0000000000..9cc54e51fb --- /dev/null +++ b/info/tex-vpat/texlive-vpat.html @@ -0,0 +1,2755 @@ + + +TeXLive Accessibility Conformance Report +(International Edition) +(Based upon VPAT® version 2.4) + + + + + + + +
    + + + + +

    TeXLive Accessibility Conformance Report
    +(International Edition)
    +(Based upon VPAT® version 2.4)

    +
    TeX Users Group

    +
    Version 1.0, September 2021
    + + + +
    + + + + + + +

    Contents

    + + + + +

    Name of Product/Version

    + +

    TeXLive 2021. +

    +

    Report Date

    + +

    July 2021. +

    +

    Product Description

    + +

    TeXLive is the reference distribution of TeX and related software supported by +TeX Users Group, a membership-based not-for-profit organization dedicated to +support, promotion and advocacy of TeX typesetting system created by Donald +Knuth and maintained by the international community of developers. As of 2021 +TeXLive contains more than 460 programs and more than 7300 software +packages. +

    +

    Contact Information

    + +
    +

    +Website:

    +

    https://tug.org +

    +

    +Address:

    +


    Robin Laakso, executive director,
    TeX Users Group,
    PO Box 2311,
    Portland, OR 97208-2311,
    USA + + + +

    +

    +Phone:

    +

    +1 503-223-9994 +

    +

    +Fax:

    +

    +1 815-301-3568 +

    +

    +Administrative email:

    +

    office@tug.org +

    +

    +Board of directors:

    +

    board@tug.org +

    +

    +President:

    +

    president@tug.org

    +

    + + + +

    Notes

    + +

    TeXLive is a complex software suite, intended to the produce typeset products in +various formats (PDF, HTML, DVI, XML to name a few). In all case it takes an +input code written in a machine-readable form and translates it to an output +format, suitable to publication in the traditional (hard copy) or electronic +form. +

    This document covers only the software used to convert the input code to the +output format. The creation of the input code is outside the scope of this document, +since it is done by third party software. TeXLive software can accept as input +text files created in any authoring tool. TeX Users group is aware about +fully accessible authoring tools, and promotes them on its web pages and +publications. +

    A separate issue is the accessibility of the output documents created with +TeXLive software. The accessibility features of these documents depend on the +settings in the input code and the packages used, and thus is not covered +by this document. TeX Users Group strives to make the creation of full +accessible documents using its tool as simple as possible, and to make the +accessibility features the default settings of our software. This is an ongoing effort, +involving many developers. TeX Users Group welcomes any help in this +work. +

    The tools provided by TeXLive are accompanied by technical documentation, +both included in TeXLive itself, and separate: there are many books, courses and +other materials about TeX. Many of the latter a fully accessible. The main +documentation of TeXLive, supported by TeXLive team, is accessible as well. Most of +the documentation for several thousand software packages in TeXLive is provided in +PDF or text format. By requiring machine readable textual sources of all +documentation provided by TeXLive packages, we ensure a certain level of +accessibility for all documentation. However, the full audit of the documentation for +all 7300+ packages created by many thousands of volunteers is not feasible at this +time. TeX Users group supports the efforts of making all TeX documentation fully +accessible. +

    +

    Evaluation methods used

    + +

    The testing was based on the knowledge of the general product knowledge. +

    +

    Applicable standards and guidelines

    + + + + + + + + + + + + + + + +

    Standard/Guideline

    Included in the report

    Web Content Accessibility Guidelines 2.0

    Level A (Yes)

    Level AA (Yes)

    Level AAA (Yes)

    Web Content Accessibility Guidelines 2.1

    Level A (Yes)

    Level AA (Yes)

    Level AAA (Yes)

    Revised Section 508 standards published + January 18, 2017 and corrected January 22, + 2018

    Yes

    EN 301 549 Accessibility requirements suitable + for public procurement of ICT products and + services in Europe, - V3.1.1 (2019-11)

    Yes

    +

    +

    Terms

    + +

    The terms used in the Conformance Level information are defined as follows: +

    +

    +Supports:

    +

    The functionality of the product has at least one method that meets the + criterion without known defects or meets with equivalent facilitation. +

    +

    +Partially Supports:

    +

    Some functionality of the product does not meet the criterion. +

    +

    +Does Not Support:

    +

    The majority of product functionality does not meet the criterion. +

    +

    +Not Applicable:

    +

    The criterion is not relevant to the product. + + + +

    +

    +Not Evaluated:

    +

    The product has not been evaluated against the criterion. This can be + used only in WCAG 2.0 Level AAA. +

    + + + +

    WCAG 2.x Report

    + +

    Tables 1 and 2 also document conformance with: +

      +
    • +

      EN 301 549: Chapter 9 - Web, Sections 10.1-10.4 of Chapter 10 - Non-Web + documents, and Sections 11.1-11.4 and 11.8.2 of Chapter 11 - Non-Web + Software (open and closed functionality), and Sections 12.1.2 and 12.2.4 + of Chapter 12 – Documentation +

    • +
    • +

      Revised Section 508: Chapter 5 – 501.1 Scope, 504.2 Content Creation or + Editing, and Chapter 6 – 602.3 Electronic Support Documentation.

    +
    +

    +Note:

    +

    When reporting on conformance with the WCAG 2.x Success + Criteria, they are scoped for full pages, complete processes, and + accessibility-supported ways of using technology as documented in the + WCAG 2.0 Conformance Requirements.

    +

    +

    Introduction

    + +

    This section of the report describes the documentation for TeXLive. +

    There are several ways to define “the full documentation for TeX and friends +software”. In one meaning of these words it comprises all books on TeX, LaTeX, +ConTeXt and other systems included in TeXLive, all issues of the journals +published by TeX Users Group and other users produced documentation. +Of course it would be impossible to estimate the accessibility of all this +documentation, comprising hundreds thousands of pages written over three +decades. +

    Another way is to count only the documentation for the packages included in +TeXLive. This includes documentation for 7300+ packages, which makes the full +audit rather impractical. +

    In this document we discuss only the main manual for the system, available with the +installation and at https://tug.org/texlive/doc/texlive-en/texlive-en.html. +We note, however, that documentation for all TeXLive packages is available as source +text files, and thus is highly accessible. + + + +

    In the tables below the success criteria apply to Web and Electronic Docs +paragraphs of VPAT. + + + +

    Table 1: Success Criteria, Level A

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    +

    1.1.1 Non-text Content (Level A)

    +

    Partially + supports

    +

    The figures + describing + GUI do not + have alt + text

    +

    1.2.1 Audio-only and Video only + (Prerecorded) (Level A)

    +

    Not Applicable

    +

    1.2.2 Captions Prerecorded (Level A)

    +

    Not Applicable

    +

    1.2.3 Audio Description or Media + Alternative (Prerecorded)

    +

    Not Applicable

    +

    1.3.1 Info and Relationships (Level A)

    +

    Supports

    +

    1.3.2 Meaningful Sequence (Level A)

    +

    Supports

    +

    1.3.3 Sensory Characteristics (Level A)

    +

    Not Applicable

    +

    1.4.1 Use of Color (Level A)

    +

    Supports

    +

    1.4.2 Audio Control (Level A)

    +

    Not Applicable

    +

    2.1.1 Keyboard (Level A)

    +

    Supports

    +

    2.1.2 No Keyboard Trap (Level A)

    +

    Supports

    +

    2.1.4 Character Key Shortcuts (Level A 2.1 + only)

    +

    Supports

    +

    2.2.1 Timing Adjustable

    +

    Supports

    +

    2.2.2 Pause, Stop, Hide (Level A)

    +

    Supports

    +

    2.3.1 Three Flashes or Below Threshold + (Level A)

    +

    Supports

    +

    2.4.1 Bypass Blocks

    +

    Not Applicable

    +

    2.4.2 Page Titled (Level A)

    +

    Supports

    +

    2.4.3 Focus Order (Level A)

    +

    Supports

    +

    2.4.4 Link Purpose (In Context) (Level A)

    +

    Supports

    +

    2.5.1 Pointer Gestures (Level A 2.1 only)

    +

    Supports

    +

    2.5.2 Pointer Cancellation (Level A 2.1 + only)

    +

    Supports

    +

    2.5.3 Label in Name (Level A 2.1 only)

    +

    Supports

    +

    2.5.4 Motion Actuation (Level A 2.1 only)

    +

    Supports

    +

    3.1.1 Language of Page

    +

    Supports

    +

    3.2.1 On Focus (Level A)

    +

    Supports

    +

    3.2.2 On Input (Level A)

    +

    Supports

    +

    3.3.1 Error Identification (Level A)

    +

    Supports

    +

    3.3.2 Labels or Instructions (Level A)

    +

    Supports

    +

    4.1.1 Parsing (Level A)

    +

    Supports

    +

    4.1.2 Name, Role, Value (Level A)

    +

    Supports

    +

    +

    +

    +
    +

    +

    +

    +

    Table 2: Success Criteria, Level AA

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    +

    1.2.4 Captions (Live) (Level AA)

    +

    Not Applicable

    +

    1.2.5 Audio Description (Prerecorded) + (Level AA)

    +

    Not Applicable

    +

    1.3.4 Orientation (Level AA 2.1 only)

    +

    Supports

    +

    1.3.5 Identify Input Purpose (Level AA 2.1 + only)

    +

    Supports

    +

    1.4.3 Contrast (Minimum) (Level AA)

    +

    Supports

    +

    1.4.4 Resize text (Level AA)

    +

    Supports

    +

    1.4.5 Images of Text (Level AA)

    +

    Supports

    +

    1.4.10 Reflow (Level AA 2.1 only)

    +

    Supports

    +

    1.4.11 Non-text Contrast (Level AA 2.1 only)

    +

    Supports

    +

    1.4.12 Text Spacing (Level AA 2.1 only)

    +

    Supports

    +

    1.4.12 Text Spacing (Level AA 2.1 only)

    +

    Supports

    +

    1.4.13 Content on Hover or Focus + (Level AA 2.1 only)

    +

    Supports

    +

    2.4.5 Multiple Ways (Level AA)

    +

    Supports

    +

    2.4.6 Headings and Labels (Level AA)

    +

    Supports

    +

    2.4.7 Focus Visible (Level AA)

    +

    Supports

    +

    3.1.2 Language of Parts (Level AA)

    +

    Supports

    +

    3.2.3 Consistent Navigation (Level AA)

    +

    Supports

    +

    3.2.4 Consistent Identification (Level AA)

    +

    Supports

    +

    3.3.3 Error Suggestion (Level AA)

    +

    Not Applicable

    +

    3.3.4 Error Prevention (Legal, Financial, Data) + (Level AA)

    +

    Not Applicable

    +

    4.1.3 Status Messages (Level AA 2.1 only)

    +

    Supports

    +

    +

    +

    +
    +

    +

    +

    +

    Table 3: Success Criteria, Level AAA

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    +

    1.2.6 Sign Language (Prerecorded) + (Level AAA)

    +

    Not Applicable

    +

    1.2.7 Extended Audio Description + (Prerecorded) (Level AAA)

    +

    Not Applicable

    +

    1.2.8 Media Alternative (Prerecorded) + (Level AAA)

    +

    Not Applicable

    +

    1.2.9 Audio-only (Live) (Level AAA)

    +

    Not Applicable

    +

    1.3.6 Identify Purpose (Level AAA 2.1 only)

    +

    Supports

    +

    1.4.6 Contrast (Enhanced) (Level AAA)

    +

    Supprts

    +

    1.4.7 Low or No Background Audio + (Level AAA)

    +

    Supports

    +

    1.4.8 Visual Presentation (Level AAA)

    +

    Supports

    +

    1.4.9 Images of Text (No Exception) + (Level AAA)

    +

    Supports

    +

    Images + of GUI + screens + are used + only when + essential + to the + information + being + conveyed.

    +

    2.1.3 Keyboard (No Exception) (Level AAA)

    +

    Supports

    +

    2.2.3 No Timing (Level AAA)

    +

    Supports

    +

    2.2.4 Interruptions (Level AAA)

    +

    Supports

    +

    2.2.5 Re-authenticating (Level AAA)

    +

    Not Applicable

    +

    2.2.6 Timeouts (Level AAA 2.1 only)

    +

    Not Applicable

    +

    2.3.2 Three Flashes (Level AAA)

    +

    Supports

    +

    2.3.3 Animation from Interactions + (Level AAA 2.1 only)

    +

    Supports

    +

    2.4.8 Location (Level AAA)

    +

    Supports

    +

    2.4.9 Link Purpose (Link Only) (Level AAA)

    +

    Supports

    +

    2.4.10 Section Headings (Level AAA)

    +

    Supports

    +

    2.5.5 Target Size (Level AAA 2.1 only)

    +

    Supports

    +

    2.5.6 Concurrent Input Mechanisms + (Level AAA 2.1 only)

    +

    Supports

    +

    3.1.3 Unusual Words (Level AAA)

    +

    Does Not + Support

    +

    3.1.4 Abbreviations (Level AAA)

    +

    Does Not + Support

    +

    3.1.5 Reading Level (Level AAA)

    +

    Does Not + Support

    +

    3.1.6 Pronunciation (Level AAA)

    +

    Not Applicable

    +

    3.2.5 Change on Request (Level AAA)

    +

    Supports

    +

    3.3.5 Help (Level AAA)

    +

    Does Not + Support

    +

    3.3.6 Error Prevention (All) (Level AAA)

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    +
    +

    +Note:

    +

    Neither Revised Section 508 Report nor EN 301 549 Report requiure + AAA level compliance.

    + + + +

    Revised Section 508 Report

    + +

    +

    Chapter 3: Functional Performance Criteria (FPC)

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    +

    302.1 Without Vision

    +

    Supports

    +

    302.2 With Limited Vision

    +

    Supports

    +

    302.3 Without Perception of Color

    +

    Supports

    +

    302.4 Without Hearing

    +

    Supports

    +

    302.5 With Limited Hearing

    +

    Supports

    +

    302.6 Without Speech

    +

    Supports

    +

    302.7 With Limited Manipulation

    +

    Supports

    +

    302.8 With Limited Reach and Strength

    +

    Supports

    +

    302.9 With Limited Language, Cognitive, and + Learning Abilities

    +

    Does Not + Support

    +

    +

    +

    +
    +

    +

    +

    +

    Chapter 4: Hardware

    + +

    Does Not Apply. +

    +

    Chapter 5: Software

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    +

    501.1 Scope—Incorporation of WCAG 2.0 AA

    +

    Supports

    +

    See + Table 2: + Success + Criteria, + Level AA

    502 Interoperability with Assistive Technology
    +
    +

    502.2.1 User Control of Accessibility Features

    +

    Supports

    +

    502.2.2 No Disruption of Accessibility Features

    +

    Supports

    502.3 Accessibility Services
    +
    +

    502.3.1 Object Information

    +

    Supports

    +

    502.3.2 Modification of Object Information

    +

    Supports

    +

    502.3.3 Row, Column, and Headers

    +

    Not Applicable

    +

    502.3.4 Values

    +

    Supports

    +

    502.3.5 Modification of Values

    +

    Supports

    +

    502.3.6 Label Relationships

    +

    Not Applicable

    +

    502.3.7 Hierarchical Relationships

    +

    Not Applicable

    +

    502.3.8 Text

    +

    Supports

    +

    502.3.9 Modification of Text

    +

    Supports

    +

    502.3.10 List of Actions

    +

    Supports

    +

    502.3.11 Actions on Objects

    +

    Supports

    +

    502.3.12 Focus Cursor

    +

    Supports

    +

    502.3.13 Modification of Focus Cursor

    +

    Supports

    +

    502.3.14 Event Notification

    +

    Supports

    +

    502.4 Platform Accessibility Features

    +

    Supports

    503 Applications
    +
    +

    503.2 User Preferences

    +

    Supports

    +

    503.3 Alternative User Interfaces

    +

    Supports

    +

    503.4 User Controls for Captions and Audio + Description

    +

    Not Applicable

    +

    503.4.1 Caption Controls

    +

    Not applicable

    +

    503.4.2 Audio Description Controls

    +

    Not Applicalbe

    504 Authoring Tools
    +
    +

    504.2 Content Creation or Editing (if not + authoring tool, enter “not applicable”)

    +

    Not Applicable

    +

    504.2.1 Preservation of Information Provided + for Accessibility in Format Conversion

    +

    Not Applicable

    +

    504.2.2 PDF Export

    +

    Not Applicable

    +

    504.3 Prompts

    +

    Not Applicable

    +

    504.4 Templates

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    +

    +

    Chapter 6: Support Documentation and Services

    + +
    + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    601.1 Scope
    +
    602 Support Documentation
    +
    +

    602.2 Accessibility and Compatibility Features

    +

    Supports

    +

    602.3 Electronic Support Documentation

    +

    Supports

    +

    See + WCAG 2.x + Report

    +

    602.4 Alternate Formats for Non-Electronic + Support Documentation

    +

    Not Applicable

    603 Support Services
    +
    +

    603.2 Information on Accessibility and + Compatibility Features

    +

    Not Applicable

    +

    603.3 Accommodation of Communication Needs

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    + + + +

    EN 301 549 Report

    + +

    +

    Chapter 4: Functional Performance Statements (FPS)

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    +

    4.2.1 Usage without vision

    +

    Supports

    +

    4.2.2 Usage with limited vision

    +

    Supports

    +

    4.2.3 Usage without perception of colour

    +

    Supports

    +

    4.2.4 Usage without hearing

    +

    Supports

    +

    4.2.5 Usage with limited hearing

    +

    Supports

    +

    4.2.6 Usage with no or limited vocal capability

    +

    Supports

    +

    4.2.7 Usage with limited manipulation or + strength

    +

    Supports

    +

    4.2.8 Usage with limited reach

    +

    Supports

    +

    4.2.9 Minimize photosensitive seizure triggers

    +

    Supports

    +

    4.2.10 Usage with limited cognition, language + or learning

    +

    Does not + support

    +

    4.2.11 Privacy

    +

    Supports

    +

    +

    +

    +
    +

    +

    +

    +

    Chapter 5: Generic Requirements

    + +
    +

    +Note:

    +

    EN 301 549 defines “closed functionality” as “functionality that is limited + by characteristics that prevent a user from attaching, installing or using + assistive technology”. Since TeXLive utilities do not prevent users from + attaching, installing or using assistive technology, most of requirements in + this chapter are not applicable to them.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    5.1 Closed functionality
    +
    5.1.2 General
    +
    +

    5.1.2.1 Closed functionality

    +

    Not Applicable

    +

    5.1.2.2 Assistive technology

    +

    Not Applicable

    5.1.3 Non-visual access
    +
    +

    5.1.3.1 Audio output of visual information

    +

    Not Applicable

    +

    5.1.3.2 Auditory output delivery including + speech

    +

    Not Applicable

    +

    5.1.3.3 Auditory output correlation

    +

    Not Applicable

    +

    5.1.3.4 Speech output user control

    +

    Not Applicable

    +

    5.1.3.5 Speech output automatic interruption

    +

    Not Applicable

    +

    5.1.3.6 Speech output for non-text content

    +

    Not Applicable

    +

    5.1.3.7 Speech output for video information

    +

    Not Applicable

    +

    5.1.3.8 Masked entry

    +

    Not Applicable

    +

    5.1.3.9 Private access to personal data

    +

    Not Applicable

    +

    5.1.3.10 Non-interfering audio output

    +

    Not Applicable

    +

    5.1.3.11 Private listening volume

    +

    Not Applicable

    +

    5.1.3.12 Speaker volume

    +

    Not Applicable

    +

    5.1.3.13 Volume reset

    +

    Not Applicable

    +

    5.1.3.14 Spoken languages

    +

    Not Applicable

    +

    5.1.3.15 Non-visual error identification

    +

    Not Applicable

    +

    5.1.3.16 Receipts, tickets, and transactional + outputs

    +

    Not Applicable

    +

    5.1.4 Functionality closed to text enlargement

    +

    Not Applicable

    +

    5.1.5 Visual output for auditory information

    +

    Not Applicable

    5.1.6 Operation without keyboard interface
    +
    +

    5.1.6.2 Input focus

    +

    Not Applicable

    +

    5.1.7 Access without speech

    +

    Not Applicable

    +

    5.2 Activation of accessibility features

    +

    Not Applicable

    +

    5.3 Biometrics

    +

    Not Applicable

    +

    5.4 Preservation of accessibility information + during conversion

    +

    Not Applicable

    5.5 Operable parts
    +
    +

    5.5.1 Means of operation

    +

    Not Applicable

    +

    5.5.2 Operable parts discernibility

    +

    Not Applicable

    5.6 Locking or toggle controls
    +
    +

    5.6.1 Tactile or auditory status

    +

    Not Applicable

    +

    5.6.2 Visual status

    +

    Not Applicable

    +

    5.7 Key repeat

    +

    Not Applicable

    +

    5.8 Double-strike key acceptance

    +

    Not Applicable

    +

    5.9 Simultaneous user actions

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    + + + +

    +

    Chapter 6: ICT with Two-Way Voice Communication

    + +

    Not Applicable. +

    +

    Chapter 7: ICT with Video Capabilities

    + +

    Not Applicable. +

    +

    Chapter 8: Hardware

    + +

    Not Applicable. +

    +

    Chapter 9: Web

    + +

    See WCAG 2.x Report. +

    +

    Chapter 10: Non-Web Software

    + +
    + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    10.0 General (informative)
    + + + +
    +

    10.1.1.1 through 10.4.1.3

    +

    Supports

    +

    See + WCAG 2.x + Report

    +

    10.5 Caption positioning

    +

    Not Appicable

    +

    10.6 Audio description timing

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    +

    +

    Chapter 11: Software

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    11.0 General (informative)
    + + + +
    +

    11.1.1.1 through 11.4.1.3

    +

    Supports

    +

    See + WCAG 2.x + Report

    11.5 Interoperability with assistive technology
    +
    11.5.1 Closed functionality
    +
    11.5.2 Accessibility services
    +
    +

    11.5.2.1 Platform accessibility service support + for software that provides a user interface

    +

    Supports

    +

    See + information + in 11.5.2.5 + through + 11.5.2.17

    +

    11.5.2.2 Platform accessibility service support + for assistive technologies

    +

    Supports

    +

    See + information + in 11.5.2.5 + through + 11.5.2.17

    +

    11.5.2.3 Use of accessibility services

    +

    Not Applicable

    +

    11.5.2.4 Assistive technology

    +

    Not Applicable

    +

    11.5.2.5 Object information

    +

    Not Applicable

    +

    11.5.2.6 Row, column, and headers

    +

    Not Applicable

    +

    11.5.2.7 Values

    +

    Not Applicable

    +

    11.5.2.8 Label relationships

    +

    Not Applicable

    +

    11.5.2.9 Parent-child relationships

    +

    Not Applicable

    +

    11.5.2.10 Text

    +

    Supports

    +

    11.5.2.11 List of available actions

    +

    Supports

    +

    11.5.2.12 Execution of available actions

    +

    Supports

    +

    11.5.2.13 Tracking of focus and selection + attributes

    +

    Not Applicable

    +

    11.5.2.14 Modification of focus and selection + attributes

    +

    Not Applicable

    +

    11.5.2.15 Change notification

    +

    Supports

    +

    11.5.2.16 Modifications of states and properties

    +

    Supports

    +

    11.5.2.17 Modifications of values and text

    +

    Supports

    11.6 Documented accessibility usage
    +
    +

    11.6.1 User control of accessibility features

    +

    Not Applicable

    +

    11.6.2 No disruption of accessibility features

    +

    Supports

    +

    11.7 User preferences

    +

    Not Applicable

    11.8 Authoring tools
    +
    11.8.1 Content technology
    +
    +

    11.8.2 Accessible content creation

    +

    Not Applicable

    +

    11.8.3 Preservation of accessibility information + in transformations

    +

    Not Applicable

    +

    11.8.4 Repair assistance

    +

    Not Applicable

    +

    11.8.5 Templates

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    +

    +

    Chapter 12: Documentation and Support Services

    + +
    + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Criteria

    +

    Conformance + Level

    +

    Remarks + and + Explanations

    +
    +

    12.1 Product documentation
    +
    +

    12.1.1 Accessibility and compatibility features

    +

    Not Applicable

    +

    12.1.2 Accessible documentation

    +

    Supports

    +

    See + WCAG 2.x + Report

    12.2 Support Services
    +
    +

    12.2.2 Information on accessibility and + compatibility features

    +

    Not Applicable

    +

    12.2.3 Effective communication

    +

    Not Applicable

    +

    12.2.4 Accessible documentation

    +

    Not Applicable

    +

    +

    +

    +
    +

    +

    +

    +

    Chapter 13: ICT Providing Relay or Emergency Service Access

    + +

    Not Applicable. + + + +

    Legal Disclaimer

    + +

    While all efforts were made to provide an accurate description of the software, +TeX Users Group cannot make any guarantee, explicit of implied, of the accuracy of +this report. This report is provided “As Is” and for information purposes +only. + + + + + + diff --git a/info/tex-vpat/texlive-vpat.pdf b/info/tex-vpat/texlive-vpat.pdf new file mode 100644 index 0000000000..5e4ccc8b60 Binary files /dev/null and b/info/tex-vpat/texlive-vpat.pdf differ diff --git a/info/tex-vpat/texlive-vpat.tex b/info/tex-vpat/texlive-vpat.tex new file mode 100644 index 0000000000..e4f762321a --- /dev/null +++ b/info/tex-vpat/texlive-vpat.tex @@ -0,0 +1,729 @@ +\documentclass{report} +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage{longtable} +\usepackage{booktabs} +\usepackage{ragged2e} +\usepackage[colorlinks]{hyperref} +\setcounter{secnumdepth}{-1} +\begin{document} +\title{\TeX Live Accessibility Conformance Report\\ + (International Edition)\\ +(Based upon VPAT\textsuperscript{\textregistered} version~2.4)} +\author{\TeX\ Users Group} +\date{Version 1.0, September 2021} +\maketitle + +\clearpage + +\tableofcontents + +\clearpage + +\section{Name of Product/Version} +\label{sec:name} + +\TeX Live 2021. + + +\section{Report Date} +\label{sec:date} + +July 2021. + + +\section{Product Description} +\label{sec:description} + +\TeX Live is the reference distribution of \TeX\ and related software +supported by \TeX\ Users Group, a membership-based not-for-profit +organization dedicated to support, promotion and advocacy of \TeX\ +typesetting system created by Donald Knuth and maintained by the +international community of developers. As of 2021 \TeX Live contains +more than 460~programs and more than 7300~software packages. + +\section{Contact Information} +\label{sec:contact_info} + + \begin{description} + \item[Website:] \url{https://tug.org} + \item[Address:] \leavevmode\\ + Robin Laakso, executive director,\\ + \TeX\ Users Group,\\ + PO Box 2311,\\ + Portland, OR~97208-2311,\\ + USA + \item[Phone:] +1 503-223-9994 + \item[Fax:] +1 815-301-3568 + \item[Administrative email:] \href{mailto:office@tug.org}{office@tug.org} + \item[Board of directors:] \href{mailto:board@tug.org}{board@tug.org} + \item[President:] \href{mailto:president@tug.org}{president@tug.org} + \end{description} + +\newpage + +\section{Notes} +\label{sec:note} + + +\TeX Live is a complex software suite, intended to the produce typeset +products in various formats (PDF, HTML, DVI, XML to name a few). In +all case it takes an \emph{input code} written in a machine-readable +form and translates it to an \emph{output format,} suitable to +publication in the traditional (hard copy) or electronic form. + +This document covers only the software used to convert the input code +to the output format. The creation of the input code is outside the +scope of this document, since it is done by third party software. +\TeX Live software can accept as input text files created in any +authoring tool. \TeX\ Users group is aware about fully accessible +authoring tools, and promotes them on its web pages and publications. + +A separate issue is the accessibility of the \emph{output documents} +created with \TeX Live software. The accessibility features of these +documents depend on the settings in the input code and the packages +used, and thus is not covered by this document. \TeX\ Users Group +strives to make the creation of full accessible documents using its +tool as simple as possible, and to make the accessibility features the +default settings of our software. This is an ongoing effort, +involving many developers. \TeX\ Users Group welcomes any help in +this work. + +The tools provided by \TeX Live are accompanied by technical +documentation, both included in \TeX Live itself, and separate: there +are many books, courses and other materials about \TeX. Many of the +latter a fully accessible. The main documentation of \TeX Live, +supported by \TeX Live team, is accessible as well. Most of the +documentation for several thousand software packages in \TeX Live is +provided in PDF or text format. By requiring machine readable textual +sources of all documentation provided by \TeX Live packages, we ensure +a certain level of accessibility for all documentation. However, the +full audit of the documentation for all 7300+ packages created by many +thousands of volunteers is not feasible at this time. \TeX\ Users +group supports the efforts of making all \TeX\ documentation fully +accessible. + +\section{Evaluation methods used} +\label{sec:methods} + +The testing was based on the knowledge of the general product +knowledge. + +\section{Applicable standards and guidelines} +\label{sec:standards} + +{\centering +\begin{tabularx}{\textwidth}{Xc} + \toprule + Standard/Guideline & Included in the report\\ + \midrule + \href{http://www.w3.org/TR/2008/REC-WCAG20-20081211}{Web Content + Accessibility Guidelines 2.0} & Level A (Yes) \\ + & Level AA (Yes)\\ + & Level AAA (Yes)\\ + \href{https://www.w3.org/TR/WCAG21}{Web Content Accessibility + Guidelines 2.1} & Level A (Yes) \\ + & Level AA (Yes)\\ + & Level AAA (Yes)\\ + \href{https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-ict-refresh/final-rule/text-of-the-standards-and-guidelines}{Revised Section 508 standards published January 18, 2017 and + corrected January 22, 2018} & Yes\\ + \href{https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.01.01_60/en_301549v030101p.pdf}{EN + 301 549 Accessibility requirements suitable for public procurement + of ICT products and services in Europe, - V3.1.1 (2019-11)} & Yes\\ + \bottomrule +\end{tabularx} +\par} + +\section{Terms} +\label{sec:terms} + +The terms used in the Conformance Level information are defined as follows: +\begin{description} +\item[Supports:] The functionality of the product has at least one + method that meets the criterion without known defects or meets with + equivalent facilitation. +\item[Partially Supports:] Some functionality of the product does not + meet the criterion. +\item[Does Not Support:] The majority of product functionality does + not meet the criterion. +\item[Not Applicable:] The criterion is not relevant to the product. +\item[Not Evaluated:] The product has not been evaluated against the + criterion. This can be used only in WCAG 2.0 Level AAA. + +\end{description} + + +\clearpage +\section{WCAG~2.x Report} +\label{sec:wcag} + +Tables~1 and~2 also document conformance with: +\begin{itemize} +\item EN 301 549: Chapter 9 - Web, Sections 10.1-10.4 of Chapter 10 - Non-Web documents, and Sections 11.1-11.4 and 11.8.2 of Chapter 11 - Non-Web Software (open and closed functionality), and Sections 12.1.2 and 12.2.4 of Chapter 12 – Documentation +\item Revised Section 508: Chapter 5 – 501.1 Scope, 504.2 Content + Creation or Editing, and Chapter 6 – 602.3 Electronic Support + Documentation. +\end{itemize} + +\begin{description} +\item[Note:] When reporting on conformance with the WCAG 2.x Success + Criteria, they are scoped for full pages, complete processes, and + accessibility-supported ways of using technology as documented in + the WCAG 2.0 Conformance Requirements. +\end{description} + +\subsection{Introduction} +\label{sec:wcag-intro} + +This section of the report describes the documentation for \TeX Live. + +There are several ways to define ``the full documentation for \TeX\ +and friends software''. In one meaning of these words it comprises +all books on \TeX, \LaTeX, Con\TeX t and other systems included in +\TeX Live, all issues of the journals published by \TeX\ Users Group +and other users produced documentation. Of course it would be +impossible to estimate the accessibility of all this documentation, +comprising hundreds thousands of pages written over three decades. + +Another way is to count only the documentation for the packages +included in \TeX Live. This includes documentation for 7300+ +packages, which makes the full audit rather impractical. + +In this document we discuss only the main manual for the system, +available with the installation and at +\url{https://tug.org/texlive/doc/texlive-en/texlive-en.html}. We +note, however, that documentation for all \TeX Live packages is +available as source text files, and thus is highly accessible. + + +In the tables below the success criteria apply to \emph{Web} and +\emph{Electronic Docs} paragraphs of VPAT. + +\clearpage +\subsection{Table~1: Success Criteria, Level A} +\label{sec:WCAG-A} +\begin{longtable}{p{0.55\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \href{https://www.w3.org/TR/WCAG20/#text-equiv-all}{1.1.1 + Non-text Content} (Level~A) & Partially supports & The figures + describing GUI do + not have alt + text\\ + \href{https://www.w3.org/TR/WCAG20/#media-equiv-av-only-alt}{1.2.1 + Audio-only and Video only (Prerecorded)} (Level~A) & Not Applicable\\ + \href{https://www.w3.org/TR/WCAG20/#media-equiv-captions}{1.2.2 + Captions Prerecorded} (Level~A) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#media-equiv-audio-desc}{1.2.3 + Audio Description or Media + Alternative (Prerecorded)} + & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic}{1.3.1 + Info and Relationships} (Level~A) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic}{1.3.2 + Meaningful Sequence} (Level~A) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#content-structure-separation-understanding}{1.3.3 + Sensory Characteristics} (Level~A) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-without-color}{1.4.1 + Use of Color} (Level~A) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-dis-audio}{1.4.2 + Audio Control} (Level~A) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#keyboard-operation-keyboard-operable}{2.1.1 + Keyboard} (Level~A) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#keyboard-operation-trapping}{2.1.2 + No Keyboard Trap} (Level~A) & Supports \\ + \href{https://www.w3.org/TR/WCAG21/#character-key-shortcuts}{2.1.4 + Character Key Shortcuts} (Level~A~2.1 only) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#time-limits-required-behaviors}{2.2.1 + Timing Adjustable} & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#time-limits-pause}{2.2.2 Pause, Stop, + Hide} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#seizure-does-not-violate}{2.3.1 + Three Flashes or Below Threshold} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-skip}{2.4.1 + Bypass Blocks} & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-title}{2.4.2 Page Titled} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-order}{2.4.3 Focus Order} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-refs}{2.4.4 Link Purpose (In Context)} (Level~A) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#pointer-gestures}{2.5.1 Pointer Gestures} (Level~A~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#pointer-cancellation}{2.5.2 + Pointer Cancellation} (Level~A~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#label-in-name}{2.5.3 Label in Name} (Level~A~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#motion-actuation}{2.5.4 Motion Actuation} (Level~A~2.1 only) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#meaning-doc-lang-id}{3.1.1 Language of Page} & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#consistent-behavior-receive-focus}{3.2.1 On Focus} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#consistent-behavior-unpredictable-change}{3.2.2 On Input} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#minimize-error-identified}{3.3.1 Error Identification} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#minimize-error-cues}{3.3.2 Labels or Instructions} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#ensure-compat-parses}{4.1.1 Parsing} (Level~A) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#ensure-compat-rsv}{4.1.2 Name, + Role, Value} (Level~A) & Supports\\ +\end{longtable} + +\subsection{Table~2: Success Criteria, Level~AA} +\label{sec:WCAG-AA} +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \href{http://www.w3.org/TR/WCAG20/#media-equiv-real-time-captions}{1.2.4 + Captions (Live)} (Level~AA) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#media-equiv-audio-desc-only}{1.2.5 + Audio Description (Prerecorded)} (Level~AA) & Not Applicable\\ + \href{https://www.w3.org/TR/WCAG21/#orientation}{1.3.4 Orientation} + (Level~AA~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#identify-input-purpose}{1.3.5 + Identify Input Purpose} (Level~AA~2.1 only) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast}{1.4.3 + Contrast (Minimum)} (Level~AA) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#resize-text}{1.4.4 Resize text} + (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-presentation}{1.4.5 + Images of Text} (Level~AA) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#reflow}{1.4.10 Reflow} (Level~AA + 2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#non-text-contrast}{1.4.11 + Non-text Contrast} (Level~AA~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#text-spacing}{1.4.12 Text + Spacing} (Level~AA~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#text-spacing}{1.4.12 Text + Spacing} (Level~AA~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#content-on-hover-or-focus}{1.4.13 + Content on Hover or Focus} (Level~AA~2.1 only) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-mult-loc}{2.4.5 + Multiple Ways} (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-descriptive}{2.4.6 + Headings and Labels} (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-visible}{2.4.7 + Focus Visible} (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#meaning-other-lang-id}{3.1.2 + Language of Parts} (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-locations}{3.2.3 + Consistent Navigation} (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-functionality}{3.2.4 + Consistent Identification} (Level~AA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#minimize-error-suggestions}{3.3.3 + Error Suggestion} (Level~AA) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#minimize-error-reversible}{3.3.4 + Error Prevention (Legal, Financial, Data)} (Level~AA) & Not + Applicable\\ + \href{https://www.w3.org/TR/WCAG21/#status-messages}{4.1.3 Status + Messages} (Level~AA~2.1 only) & Supports\\ +\end{longtable} + +\subsection{Table~3: Success Criteria, Level~AAA} +\label{sec:WCAG-AAA} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \href{http://www.w3.org/TR/WCAG20/#media-equiv-sign}{1.2.6 Sign + Language (Prerecorded)} (Level~AAA) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#media-equiv-extended-ad}{1.2.7 + Extended Audio Description (Prerecorded)} (Level~AAA) & Not + Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#media-equiv-text-doc}{1.2.8 Media + Alternative (Prerecorded)} (Level~AAA) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#media-equiv-live-audio-only}{1.2.9 + Audio-only (Live)} (Level~AAA) & Not Applicable\\ + \href{https://www.w3.org/TR/WCAG21/#identify-purpose}{1.3.6 Identify + Purpose} (Level~AAA~2.1 only) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast7}{1.4.6 + Contrast (Enhanced)} (Level~AAA) & Supprts\\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-noaudio}{1.4.7 + Low or No Background Audio} (Level~AAA) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-visual-presentation}{1.4.8 + Visual Presentation} (Level~AAA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-images}{1.4.9 + Images of Text (No Exception)} (Level~AAA) & Supports & Images of + GUI screens are used + only when + essential to + the information being conveyed.\\ + \href{http://www.w3.org/TR/WCAG20/#keyboard-operation-all-funcs}{2.1.3 + Keyboard (No Exception)} (Level~AAA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#time-limits-no-exceptions}{2.2.3 + No Timing} (Level~AAA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#time-limits-postponed}{2.2.4 + Interruptions} (Level~AAA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#time-limits-server-timeout}{2.2.5 + Re-authenticating} (Level~AAA) & Not Applicable \\ + \href{https://www.w3.org/TR/WCAG21/#timeouts}{2.2.6 Timeouts} + (Level~AAA~2.1 only) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#seizure-three-times}{2.3.2 Three + Flashes} (Level~AAA) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#animation-from-interactions}{2.3.3 + Animation from Interactions} (Level~AAA~2.1 only) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-location}{2.4.8 + Location} (Level~AAA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-link}{2.4.9 + Link Purpose (Link Only)} (Level~AAA) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#navigation-mechanisms-headings}{2.4.10 + Section Headings} (Level~AAA) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#target-size}{2.5.5 Target Size} + (Level~AAA~2.1 only) & Supports\\ + \href{https://www.w3.org/TR/WCAG21/#concurrent-input-mechanisms}{2.5.6 + Concurrent Input Mechanisms} (Level~AAA~2.1 only) & Supports\\ + \href{http://www.w3.org/TR/WCAG20/#meaning-idioms}{3.1.3 Unusual + Words} (Level~AAA) & Does Not Support\\ + \href{http://www.w3.org/TR/WCAG20/#meaning-located}{3.1.4 + Abbreviations} (Level~AAA) & Does Not Support\\ + \href{http://www.w3.org/TR/WCAG20/#meaning-supplements}{3.1.5 + Reading Level} (Level~AAA) & Does Not Support\\ + \href{http://www.w3.org/TR/WCAG20/#meaning-pronunciation}{3.1.6 + Pronunciation} (Level~AAA) & Not Applicable\\ + \href{http://www.w3.org/TR/WCAG20/#consistent-behavior-no-extreme-changes-context}{3.2.5 + Change on Request} (Level~AAA) & Supports \\ + \href{http://www.w3.org/TR/WCAG20/#minimize-error-context-help}{3.3.5 + Help} (Level~AAA) & Does Not Support\\ + \href{http://www.w3.org/TR/WCAG20/#minimize-error-reversible-all}{3.3.6 + Error Prevention (All)} (Level~AAA) & Not Applicable\\ +\end{longtable} + +\begin{description} +\item[Note:] Neither \nameref{sec:sec508} nor \nameref{sec:EN301} requiure + AAA~level compliance. +\end{description} + +\clearpage +\section{Revised Section~508 Report} +\label{sec:sec508} + +\subsection{Chapter 3: Functional Performance Criteria (FPC)} +\label{sec:508-3} + + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + 302.1 Without Vision + & Supports \\ + 302.2 With Limited Vision & Supports\\ + 302.3 Without Perception of Color & Supports\\ + 302.4 Without Hearing & Supports\\ + 302.5 With Limited Hearing & Supports\\ + 302.6 Without Speech & Supports\\ + 302.7 With Limited Manipulation & Supports\\ + 302.8 With Limited Reach and Strength & Supports\\ + 302.9 With Limited Language, Cognitive, and Learning Abilities + & + Does Not Support\\ +\end{longtable} + + +\subsection{Chapter 4: Hardware} +\label{sec:508-4} + + +Does Not Apply. + +\subsection{Chapter 5: Software} +\label{sec:508-5} + + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + 501.1 Scope---Incorporation of WCAG 2.0 AA & Supports & See + \nameref{sec:WCAG-AA}\\ + \multicolumn{3}{c}{\bfseries + 502 Interoperability with Assistive Technology}\\* + 502.2.1 User Control of Accessibility Features & Supports\\ + 502.2.2 No Disruption of Accessibility Features & Supports\\ + \multicolumn{3}{c}{\bfseries 502.3 Accessibility Services}\\* + 502.3.1 Object Information & Supports\\ + 502.3.2 Modification of Object Information & Supports\\ + 502.3.3 Row, Column, and Headers & Not Applicable\\ + 502.3.4 Values & Supports\\ + 502.3.5 Modification of Values & Supports\\ + 502.3.6 Label Relationships & Not Applicable\\ + 502.3.7 Hierarchical Relationships & Not Applicable\\ + 502.3.8 Text & Supports\\ + 502.3.9 Modification of Text & Supports\\ + 502.3.10 List of Actions & Supports\\ + 502.3.11 Actions on Objects & Supports\\ + 502.3.12 Focus Cursor & Supports\\ + 502.3.13 Modification of Focus Cursor & Supports\\ + 502.3.14 Event Notification & Supports\\ + 502.4 Platform Accessibility Features & Supports\\ + \multicolumn{3}{c}{\bfseries 503 Applications}\\* + 503.2 User Preferences & Supports\\ + 503.3 Alternative User Interfaces & Supports\\ + 503.4 User Controls for Captions and Audio Description & Not + Applicable\\ + 503.4.1 Caption Controls & Not applicable\\ + 503.4.2 Audio Description Controls & Not Applicalbe\\ + \multicolumn{3}{c}{\bfseries 504 Authoring Tools}\\* + 504.2 Content Creation or Editing (if not authoring tool, enter + ``not applicable'') & Not Applicable\\ + 504.2.1 Preservation of Information Provided for Accessibility in + Format Conversion & Not Applicable\\ + 504.2.2 PDF Export & Not Applicable\\ + 504.3 Prompts & Not Applicable\\ + 504.4 Templates & Not Applicable\\ +\end{longtable} + +\subsection{Chapter 6: Support Documentation and Services} +\label{sec:508-6} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot +\multicolumn{3}{c}{\bfseries 601.1 Scope}\\* + \multicolumn{3}{c}{\itshape 602 Support Documentation}\\* + 602.2 Accessibility and Compatibility Features & Supports\\ + 602.3 Electronic Support Documentation & Supports & See + \nameref{sec:wcag} \\ + 602.4 Alternate Formats for Non-Electronic Support Documentation & + Not + Applicable + \\ + \multicolumn{3}{c}{\itshape 603 Support Services}\\* + 603.2 Information on Accessibility and Compatibility Features & Not + Applicable\\ + 603.3 Accommodation of Communication Needs & Not Applicable\\ +\end{longtable} + + +\clearpage +\section{EN 301 549 Report} +\label{sec:EN301} + +\subsection{Chapter 4: Functional Performance Statements (FPS)} +\label{sec:EN301-3} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + 4.2.1 Usage without vision & Supports\\ + 4.2.2 Usage with limited vision & Supports\\ + 4.2.3 Usage without perception of colour & Supports\\ + 4.2.4 Usage without hearing & Supports \\ + 4.2.5 Usage with limited hearing & Supports\\ + 4.2.6 Usage with no or limited vocal capability & Supports \\ + 4.2.7 Usage with limited manipulation or strength & Supports \\ + 4.2.8 Usage with limited reach & Supports \\ + 4.2.9 Minimize photosensitive seizure triggers & Supports \\ + 4.2.10 Usage with limited cognition, language or learning & Does not + support \\ + 4.2.11 Privacy & Supports\\ +\end{longtable} + +\subsection{Chapter~5: Generic Requirements} +\label{sec:EN301-5} + +\begin{description} +\item[Note:] EN~301~549 defines ``closed functionality'' as + ``functionality that is limited by characteristics that prevent a + user from attaching, installing or using assistive technology''. + Since \TeX Live utilities do not prevent users from attaching, + installing or using assistive technology, most of requirements in + this chapter are not applicable to them. +\end{description} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \multicolumn{3}{c}{\bfseries 5.1 Closed functionality}\\* + \multicolumn{3}{c}{\itshape 5.1.2 General}\\* + 5.1.2.1 Closed functionality & Not Applicable\\ + 5.1.2.2 Assistive technology & Not Applicable \\ + \multicolumn{3}{c}{\itshape 5.1.3 Non-visual access}\\* + 5.1.3.1 Audio output of visual information & Not Applicable\\ + 5.1.3.2 Auditory output delivery including speech & Not Applicable\\ + 5.1.3.3 Auditory output correlation & Not Applicable\\ + 5.1.3.4 Speech output user control & Not Applicable\\ + 5.1.3.5 Speech output automatic interruption & Not Applicable\\ + 5.1.3.6 Speech output for non-text content & Not Applicable\\ + 5.1.3.7 Speech output for video information & Not Applicable\\ + 5.1.3.8 Masked entry & Not Applicable\\ + 5.1.3.9 Private access to personal data & Not Applicable\\ + 5.1.3.10 Non-interfering audio output & Not Applicable\\ + 5.1.3.11 Private listening volume & Not Applicable\\ + 5.1.3.12 Speaker volume & Not Applicable\\ + 5.1.3.13 Volume reset & Not Applicable\\ + 5.1.3.14 Spoken languages & Not Applicable\\ + 5.1.3.15 Non-visual error identification & Not Applicable\\ + 5.1.3.16 Receipts, tickets, and transactional outputs & Not Applicable\\ + 5.1.4 Functionality closed to text enlargement & Not Applicable\\ + 5.1.5 Visual output for auditory information & Not Applicable\\ + \multicolumn{3}{c}{\itshape 5.1.6 Operation without keyboard + interface}\\* + 5.1.6.2 Input focus & Not Applicable\\ + 5.1.7 Access without speech & Not Applicable\\ + 5.2 Activation of accessibility features & Not Applicable\\ + 5.3 Biometrics & Not Applicable\\ + 5.4 Preservation of accessibility information during conversion & + Not Applicable\\ + \multicolumn{3}{c}{\bfseries 5.5 Operable parts}\\* + 5.5.1 Means of operation & Not Applicable\\ + 5.5.2 Operable parts discernibility & Not Applicable\\ + \multicolumn{3}{c}{\bfseries 5.6 Locking or toggle controls}\\* + 5.6.1 Tactile or auditory status & Not Applicable\\ + 5.6.2 Visual status & Not Applicable\\ + 5.7 Key repeat & Not Applicable\\ + 5.8 Double-strike key acceptance & Not Applicable\\ + 5.9 Simultaneous user actions & Not Applicable\\ +\end{longtable} + +\subsection{Chapter~6: ICT with Two-Way Voice Communication } +\label{sec:EN301-6} + +Not Applicable. + +\subsection{Chapter~7: ICT with Video Capabilities } +\label{sec:EN301-7} + +Not Applicable. + + +\subsection{Chapter~8: Hardware} +\label{sec:EN301-8} + +Not Applicable. + +\subsection{Chapter 9: Web} +\label{sec:EN301-9} + +See \nameref{sec:wcag}. + +\subsection{Chapter~10: Non-Web Software} +\label{sec:EN301-10} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \multicolumn{3}{c}{\bfseries 10.0 General (informative)}\\* + 10.1.1.1 through 10.4.1.3 & Supports & See \nameref{sec:wcag}\\ + 10.5 Caption positioning & Not Appicable\\ + 10.6 Audio description timing & Not Applicable\\ +\end{longtable} + +\subsection{Chapter~11: Software} +\label{sec:EN301-11} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \multicolumn{3}{c}{\bfseries 11.0 General (informative)}\\* + 11.1.1.1 through 11.4.1.3 & Supports & See \nameref{sec:wcag}\\ + \multicolumn{3}{c}{\bfseries 11.5 Interoperability with assistive + technology} \\* + \multicolumn{3}{c}{\itshape 11.5.1 Closed functionality}\\* + \multicolumn{3}{c}{\itshape 11.5.2 Accessibility services}\\* + 11.5.2.1 Platform accessibility service support for software that + provides a user interface & Supports & See information in 11.5.2.5 + through 11.5.2.17\\ + 11.5.2.2 Platform accessibility service support for assistive + technologies & Supports & See information in 11.5.2.5 through 11.5.2.17\\ + 11.5.2.3 Use of accessibility services & Not Applicable\\ + 11.5.2.4 Assistive technology & Not Applicable\\ + 11.5.2.5 Object information & Not Applicable\\ + 11.5.2.6 Row, column, and headers & Not Applicable \\ + 11.5.2.7 Values & Not Applicable\\ + 11.5.2.8 Label relationships & Not Applicable \\ + 11.5.2.9 Parent-child relationships & Not Applicable\\ + 11.5.2.10 Text & Supports \\ + 11.5.2.11 List of available actions & Supports \\ + 11.5.2.12 Execution of available actions & Supports\\ + 11.5.2.13 Tracking of focus and selection attributes & Not + Applicable \\ + 11.5.2.14 Modification of focus and selection attributes & Not + Applicable \\ + 11.5.2.15 Change notification & Supports\\ + 11.5.2.16 Modifications of states and properties & Supports\\ + 11.5.2.17 Modifications of values and text & Supports\\ + \multicolumn{3}{c}{\bfseries 11.6 Documented accessibility usage}\\* + 11.6.1 User control of accessibility features & Not Applicable\\ + 11.6.2 No disruption of accessibility features & Supports\\ + 11.7 User preferences & Not Applicable\\ + \multicolumn{3}{c}{\bfseries 11.8 Authoring tools}\\* + \multicolumn{3}{c}{\itshape 11.8.1 Content technology}\\* + 11.8.2 Accessible content creation & Not Applicable\\ + 11.8.3 Preservation of accessibility information in transformations + & Not Applicable\\ + 11.8.4 Repair assistance & Not Applicable\\ + 11.8.5 Templates & Not Applicable\\ +\end{longtable} + +\subsection{Chapter~12: Documentation and Support Services} +\label{sec:EN301-12} + +\begin{longtable}{p{0.6\textwidth}<{\RaggedRight}p{0.2\textwidth}<{\RaggedRight}p{0.15\textwidth}<{\RaggedRight}} + \toprule + Criteria & Conformance Level & Remarks and Explanations \\ + \midrule + \endhead + \bottomrule + \endfoot + \multicolumn{3}{c}{\bfseries 12.1 Product documentation}\\* + 12.1.1 Accessibility and compatibility features & Not Applicable\\ + 12.1.2 Accessible documentation & Supports & See \nameref{sec:wcag}\\ + \multicolumn{3}{c}{\bfseries 12.2 Support Services}\\* + 12.2.2 Information on accessibility and compatibility features & Not Applicable\\ + 12.2.3 Effective communication & Not Applicable\\ + 12.2.4 Accessible documentation & Not Applicable\\ +\end{longtable} + +\subsection{Chapter~13: ICT Providing Relay or Emergency Service + Access} +\label{sec:EN301-13} + +Not Applicable. + + +\clearpage + +\section{Legal Disclaimer} +\label{sec:legal} + +While all efforts were made to provide an accurate description of the +software, \TeX\ Users Group cannot make any guarantee, explicit of +implied, of the accuracy of this report. This report is provided ``As +Is'' and for information purposes only. + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/macros/luatex/latex/truthtable/README.md b/macros/luatex/latex/truthtable/README.md new file mode 100644 index 0000000000..18baedb858 --- /dev/null +++ b/macros/luatex/latex/truthtable/README.md @@ -0,0 +1,26 @@ +# truthtable + +*Copyright (C) Dominic Flück (K-Trout) 2021* + +truthtable 2021/10/01 v0.0.1 + +--- + +The package is distributed under the **LaTeX Public Project License v1.3c** or later. + +Details: [www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt) + +--- + +## Info + +A small LaTeX package for generating truth tables automatically. + +## Provided files + +- README.md (This file) +- [truthtable.sty](truthtable.sty) The package file +- [truthtable.pdf](truthtable.pdf) The compiled package documentation +- [truthtable.tex](truthtable.tex) The package documentation file +- [res/exampletable.tex](res/exampletable.tex) Sample usage code +- [res/exampletableoutput.tex](res/exampletableoutput.tex) Sample usage code output \ No newline at end of file diff --git a/macros/luatex/latex/truthtable/res/exampletable.tex b/macros/luatex/latex/truthtable/res/exampletable.tex new file mode 100644 index 0000000000..aabfc488c3 --- /dev/null +++ b/macros/luatex/latex/truthtable/res/exampletable.tex @@ -0,0 +1,9 @@ +\begin{table}[h] + \centering + \begin{tabular}{c|c||c|c|c|c|c} + + % Content of table is generated using this single command. + \truthtable{A,B}{$A$,$B$}{!A, A & B, A | B, >>(A; B), __(A; B)}{$\lnot A$, $A \land B$, $A \lor B$, $A \rightarrow B$, $A \leftrightarrow B$}{$T$}{$F$} + + \end{tabular} +\end{table} \ No newline at end of file diff --git a/macros/luatex/latex/truthtable/res/exampletableoutput.tex b/macros/luatex/latex/truthtable/res/exampletableoutput.tex new file mode 100644 index 0000000000..507049ca14 --- /dev/null +++ b/macros/luatex/latex/truthtable/res/exampletableoutput.tex @@ -0,0 +1,5 @@ +$A$ & $B$ & $\lnot A$ & $A \land B$ & $A \lor B$ & $A \rightarrow B$ & $A \leftrightarrow B$ \\ \hline +$T$ & $T$ & $F$ & $T$ & $T$ & $T$ & $T$ \\ +$T$ & $F$ & $F$ & $F$ & $T$ & $F$ & $F$ \\ +$F$ & $T$ & $T$ & $F$ & $T$ & $T$ & $F$ \\ +$F$ & $F$ & $T$ & $F$ & $F$ & $T$ & $T$ \\ \ No newline at end of file diff --git a/macros/luatex/latex/truthtable/truthtable.pdf b/macros/luatex/latex/truthtable/truthtable.pdf new file mode 100644 index 0000000000..bd2c8df7d4 Binary files /dev/null and b/macros/luatex/latex/truthtable/truthtable.pdf differ diff --git a/macros/luatex/latex/truthtable/truthtable.sty b/macros/luatex/latex/truthtable/truthtable.sty new file mode 100644 index 0000000000..94403911ad --- /dev/null +++ b/macros/luatex/latex/truthtable/truthtable.sty @@ -0,0 +1,148 @@ +% truthtable.sty +%% Copyright 2021 D. Flück +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status “author-maintainedâ€. +% +% The Current Maintainer of this work is D. Flück. +% +% This work consists of the file truthtable.sty. +\NeedsTeXFormat{LaTeX2e}[1994/06/01] +\ProvidesPackage{truthtable}[2021/10/01 0.0.1 Package for generating truth tables automatically using LuaTeX] + +\ProcessOptions\relax +\@ifpackageloaded{luacode}{ + \PackageWarningNoLine{truthtable}{Package luacode was already loaded} +}{ + \RequirePackage{luacode} +} + +\begin{luacode*} + +function Impl(a,b) + return (not a or b); +end + +function Equiv(a,b) + return ((a and b) or ((not a) and (not b))); +end + +function ComputeRows(header) + return 2^header +end + +function Split(s, delimiter) + local result = {}; + for match in (s..delimiter):gmatch("(.-)"..delimiter) do + table.insert(result, match); + end + return result; +end + +function EvaluateFormula(formula) + local parsedFormula = "function res() return( " .. string.gsub(string.gsub(string.gsub(string.gsub(string.gsub(string.gsub(string.gsub(formula, " ", ""),">>","Impl"),"__","Equiv"),"!","not "),"&" ," and "),"|"," or "),";",",") .. " ) end"; + + chunk = load(parsedFormula); + chunk(); + local result = res(); + return result; +end + +function toBits(num) + local t = "" -- will contain the bits + while num>0 do + local rest = math.fmod(num,2) + if (rest == 1) then + t = "1" .. t + else + t = "0" .. t + end + + num=(num-rest)/2 + end + return t; +end + +function printTruthValue(expr, dTrue, dFalse) + + local returnVal = "" + + if (expr) then + returnVal = dTrue; + else + returnVal = dFalse; + end + + return returnVal; +end + +function parse(commaSepVariables, commaSepDisplayVariables, commaSepResultRows, commaSepResultDisplayRows, displayTrue, displayFalse) + local vrbls = Split(commaSepVariables, ","); + local numberOfColumns = #(vrbls); + local rows = ComputeRows(numberOfColumns); + local dVrbls = Split(commaSepDisplayVariables, ","); + local resRows = Split(commaSepResultRows, ","); + local dResRows = Split(commaSepResultDisplayRows, ","); + + local dHeader = string.gsub(commaSepDisplayVariables, ",", " & ") .. " & " .. string.gsub(commaSepResultDisplayRows, ",", " & ") .. " \\\\ \\hline"; + + if (not (numberOfColumns == #(vrbls) and numberOfColumns == #(dVrbls))) then + return("error"); + end + + local tableContent = dHeader; + + for i = (rows - 1),0,-1 + do + local bitString = toBits(i); + + while #bitString < numberOfColumns do + bitString = "0" .. bitString + end + + local wVrbls = commaSepVariables; + local wCommaSepRows = commaSepResultRows + for ii = 1,numberOfColumns + do + wVrbls = string.gsub(wVrbls, vrbls[ii], (string.sub(bitString,ii,ii) == "1" ) and "+" or "-" ) + wCommaSepRows = string.gsub(wCommaSepRows, vrbls[ii], (string.sub(bitString,ii,ii) == "1" ) and "+" or "-" ) + end + + local aWVrbls = Split(string.gsub(string.gsub(wVrbls, "+", "true"),"-", "false"), ","); + + local aWCommaSepRows = Split(string.gsub(string.gsub(wCommaSepRows, "+", "true"),"-", "false"), ","); + + local row = ""; + + for c = 1,#(aWVrbls) + do + row = row .. printTruthValue(EvaluateFormula(aWVrbls[c]), displayTrue, displayFalse) .. " & "; + end + + for c = 1,#(aWCommaSepRows) + do + row = row .. printTruthValue(EvaluateFormula(aWCommaSepRows[c]), displayTrue, displayFalse) .. " & "; + end + + row = string.sub(row, 1, #row - 2) .. "\\\\" + + tableContent = tableContent .. "\n" .. row + end + + tex.print(tableContent); +end + +\end{luacode*} + +\newcommand{\truthtable}[6]{ + \luadirect{parse("#1", "\luaescapestring{#2}", "\luaescapestring{#3}", "\luaescapestring{#4}", "\luaescapestring{#5}","\luaescapestring{#6}")} +} + +\endinput \ No newline at end of file diff --git a/macros/luatex/latex/truthtable/truthtable.tex b/macros/luatex/latex/truthtable/truthtable.tex new file mode 100644 index 0000000000..a6d62fc606 --- /dev/null +++ b/macros/luatex/latex/truthtable/truthtable.tex @@ -0,0 +1,192 @@ +\documentclass[a4paper]{article} +\usepackage[in]{fullpage} + +\usepackage{listings} +\usepackage{xcolor} +\usepackage{caption} +\lstset{ + basicstyle=\footnotesize\ttfamily, % Default font + numbers=none, % left % Location of line numbers + numberstyle=\tiny, % Style of line numbers + % stepnumber=2, % Margin between line numbers + numbersep=0pt, %5pt, % Margin between line numbers and text + tabsize=1, % Size of tabs + extendedchars=true, + breaklines=true, % Lines will be wrapped + % keywordstyle=\color{red}\textbf, + commentstyle=\color{purple}, + identifierstyle=\color{blue}, + frame=tlrb, + keywordstyle={[1]\color{red}\textbf}, + keywordstyle={[2]\color{blue}\textbf}, + keywordstyle={[3]\color{green}}, + keywordstyle={[4]\textbf}, + stringstyle=\color{purple}\ttfamily, % Color of strings + showspaces=false, + showtabs=false, + xleftmargin=5.5pt,%17pt, + framexleftmargin=2pt,%17pt, + framexrightmargin=2.5pt, + framexbottommargin=2pt, + backgroundcolor=\color[HTML]{E6E7E7}, + showstringspaces=false, +} +\lstloadlanguages{ % Check documentation for further languages ... + [LaTeX]TeX +} +\DeclareCaptionFont{blue}{\color{blue}} + +\captionsetup[lstlisting]{singlelinecheck=false, labelfont={blue}, textfont={blue}} + +\DeclareCaptionFont{white}{\color{white}} +\DeclareCaptionFormat{listing}{\colorbox[cmyk]{1, 0.33, 0,0.4}{\parbox{\textwidth}{\hspace{3pt}#1#2#3}}} +\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}} + +\usepackage[colorlinks]{hyperref} +\hypersetup{ + bookmarksopen=true, + bookmarksnumbered=true, + pdftitle={truthtable}, + pdfauthor={Dominic Flück }, + pdfsubject={truth LaTeX package}, + pdfkeywords={truthtable,LuaLaTeX, package, documentation, LaTeX}, + pdfdisplaydoctitle=true, + pdflang={en-GB}, + pdfcreator={LuaHBTeX}, + pdfproducer={LuaHBTeX, Version 1.13.2}} + +\usepackage{truthtable} + +\usepackage{bxtexlogo} +\usepackage[ukenglish]{babel} + +\title{\texttt{truthtable}\textbf{: \LaTeX\ Package\\for automatically generated Truth Tables}} +\author{Dominic Flück } +\date{0.0.1 2021/10/01} + +\begin{document} + \maketitle + + \begin{abstract} + \noindent \texttt{truthtable} is a \LaTeX\ package for creating automatically generating truth tables given a table header. It supports a number of logical operations which can be combined as needed. It's built upon the package \href{https://ctan.org/pkg/luacode}{\texttt{luacode}} and therefor has to be used with the \LuaLaTeX\ compiler. + \end{abstract} + + \tableofcontents + + \section{Introduction} + Tables in \LaTeX\ have the reputation of being a bit tedious. When creating a table with many cells, such as a truth table, they are not only tedious to build, but also not very readable. + + To help this situation when creating a truth table for a document, this package provides a macro, which allows simply for the variables and the columns of a truth table to be defined. The package then takes care of the rest. + + \section{Dependencies} + + \texttt{truthtable} uses the package \href{https://ctan.org/pkg/luacode}{\texttt{luacode}} to run, as the heavy lifting of the processing is done in \emph{Lua}. The package checks if \href{https://ctan.org/pkg/luacode}{\texttt{luacode}} is already loaded, and if not, does so. \LuaLaTeX is required to compile the resulting documents. + + \section{Usage} + + The \texttt{truthtable} package provides as of this version a single command:\\ \texttt{\textbackslash truthtable\{\emph{comma separated variables}\}\{\emph{comma separated display variables}\}\\\{\emph{comma separated statements}\}\{\emph{comma separated display statements}\}\\\{\emph{display true value}\}\{\emph{display false value}\}} + + This command is placed in the normal table boilerplate. This leads to the redundant practice of defining the column count twice, once for the table environment as the column layout and once in the command by defining the variables and statements.\footnote{See \autoref{lst:exampletable} for example} + + This is intentional to allow for more flexibility in customising the column layout as well as pre- and appending of further rows to the table. + + \subsection{Comma separated variables} + + The basic variables, for which every combination of \emph{true} and \emph{false} a row of table will be generated. The variables should be relatively simple, as they are not used for the formatting the table but simply to calculate the answers. The variables should be separated using commas. Don't use variables, which contain another variable, i.e., don't do this: \emph{\{n,An\}}. + + \subsection{Comma separated display variables} + + These are the display values corresponding to the \emph{Comma separated variables}. Fancy variable formatting can be applied. At least normal text and math mode seem to work.\footnote{More testing needs to be done} + The same number of display variables as variables is required. The comma cannot be used as a display character, as it is used as delimiter. + + \subsection{Comma separated statements} + + The statements using the \emph{Comma separated variables} which are used to evaluate the statements for any given combination of variables. Parentheses can be used in the normal fashion to indicate the order of combined statements. The notation for the different operations is as follows: + + \subsubsection{\texttt{NOT} / Negation} + + To negate a variable or statement, the exclamation point \texttt{!} is used. + \begin{itemize} + \item $\lnot A$: \texttt{!A} + \item $\lnot (\lnot A)$: \texttt{!(!A)} + \end{itemize} + + \subsubsection{\texttt{AND} / Conjunction} + + For the conjunction of two variables or statements the and symbol \texttt{\&} is used. \textbf{The \& must not be escaped for the comma separated statements!} + \begin{itemize} + \item $A \land B$: \texttt{A \& B} + \item $A \land (A \land B)$: \texttt{A \& (A \& B)} + \end{itemize} + + \subsubsection{\texttt{OR} / Disjunction} + + For the Disjunction of two variables or statements the vertical line character \texttt{|} is used. + + \begin{itemize} + \item $A \lor B$: \texttt{A | B} + \item $A \lor (A \lor B)$: \texttt{A | (A | B)} + \end{itemize} + + \subsubsection{$\rightarrow$ / Implication} + + The implication can also be expressed. \textbf{Note that the delimiter used is the semicolon \texttt{;} and not the comma \texttt{;} ! This is because the statements are separated using the comma.} + + \begin{itemize} + \item $A \rightarrow B$: \texttt{>>(A; B)} + \item $A \rightarrow (A \lor B)$: \texttt{>>(A; (A | B))} + \item $A \land (A \rightarrow B)$: \texttt{A \& >>(A; B)} + \end{itemize} + + \subsubsection{$\leftrightarrow$ / Equality} + + The equality can also be expressed. \textbf{Note that the delimiter used is the semicolon \texttt{;} and not the comma \texttt{;} ! This is because the statements are separated using the comma.} \textbf{The \texttt{\_\_} must not be escaped for the comma separated statements!} + + \begin{itemize} + \item $A \leftrightarrow B$: \texttt{\_\_(A; B)} + \item $A \leftrightarrow (A \lor B)$: \texttt{\_\_(A; (A | B))} + \item $A \land (A \leftrightarrow B)$: \texttt{A \& \_\_(A; B)} + \end{itemize} + + \subsection{Comma separated display statements} + + Display statements are defined the same way as the \emph{comma separated display variables}. The comma cannot be used as a display character, as it is used as delimiter. + + \subsection{Display true value} + + The displaying string which will be used in the table body for \emph{true}.Normal text and math mode can be used. + + \subsection{Display false value} + + The displaying string which will be used in the table body for \emph{false}.Normal text and math mode can be used. + + \newpage + + \section{Example of use} + + The code snippet seen in \autoref{lst:exampletable} is the entirety of code required to produce the truth table seen in \autoref{tab:sampletable}.\footnote{The captioning setup was omitted in the listing.} + + The command generates the code seen in \autoref{lst:exampletableoutput}. + + \lstinputlisting[language={[LaTeX]TeX}, label=lst:exampletable, caption=Code for an sample truth table]{res/exampletable.tex} + + \lstinputlisting[language={[LaTeX]TeX}, label=lst:exampletableoutput, caption=Code generated by \textbackslash truthtable]{res/exampletableoutput.tex} + + \begin{table}[h] + \centering + \begin{tabular}{c|c||c|c|c|c|c} + \truthtable{A,B}{$A$,$B$}{!A, A & B, A | B, >>(A; B), __(A; B)}{$\lnot A$, $A \land B$, $A \lor B$, $A \rightarrow B$, $A \leftrightarrow B$}{$T$}{$F$} + \end{tabular} + \caption{Sample truth table} + \label{tab:sampletable} + \end{table} + + \section{Known issues and bugs} + + \begin{description} + \item[Stability] The Lua code of the macro is not yet error resistant. Either a table is produced or not, warnings and errors are not yet implemented. Future versions of the package will probably address this. + \item[Display formatting] Whilst normal text and math mode work for both headers and truth values, other text formatting such as \texttt{\textbackslash textbf} does not. It is not yet clear if this will be addressed in future versions. + \item[Operations] For the moment only four operations are defined. Further operations\footnote{\emph{NAND}, \emph{XOR}, \emph{etc.}} may be added in future versions. + \end{description} + +\end{document} \ No newline at end of file diff --git a/support/crossrefware/Makefile b/support/crossrefware/Makefile index 8181d382e3..c8caf35d60 100644 --- a/support/crossrefware/Makefile +++ b/support/crossrefware/Makefile @@ -1,8 +1,10 @@ +# Makefile for the (La)TeX crossrefware package. Public domain. + SCRIPTS = \ ltx2crossrefxml.pl \ bibdoiadd.pl \ - bibzbladd.pl \ bibmradd.pl \ + bibzbladd.pl \ biburl2doi.pl \ bbl2bib.pl @@ -15,17 +17,16 @@ PDF = crossrefware.pdf all: ${MAN1} ${PDF} chmod a+x ${SCRIPTS} - +check: + ./ltx2crossrefxml.pl --help + ./ltx2crossrefxml.pl --version %.1: %.pl - pod2man -c "CROSSREF LIBRARY" -n $* -s 1 -r "" $< > $@ - - + pod2man -c "LATEX CROSSREFWARE" -n $* -s 1 -r "" $< > $@ clean: - $(RM) *.aux *.toc *.log *.tex *.idx *.ilg *.ind *.out *.zip *.tgz \ - *~ + $(RM) *.aux *.toc *.log *.tex *.idx *.ilg *.ind *.out *.zip *.tgz *~ distclean: clean $(RM) *.pdf *.1 *.3 @@ -42,4 +43,7 @@ crossrefware.tex: ${SCRIPTS} pod2latex -modify -full -prefile head.ltx -out $@ $+ archive: all clean - COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE); mv ../$(PACKAGE).tgz . + COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' \ + --exclude '*.tgz' --exclude '*.zip' --exclude CVS \ + --exclude '.git*' $(PACKAGE) + mv ../$(PACKAGE).tgz . diff --git a/support/crossrefware/README b/support/crossrefware/README index 882bdb31e0..1682b98fe3 100644 --- a/support/crossrefware/README +++ b/support/crossrefware/README @@ -1,55 +1,61 @@ Crossrefware Bundle - version 2017/11/26 - + version 2021-10-02 Scripts useful for working with Crossref, MathSciNet and Zentralblatt MATH. -This work was commissioned by The Saint Lois University and The -Princeton University (Mathematics Department) - bibdoiadd.pl - add DOI numbers to papers in a given bib file bibzbladd.pl - add Zbl numbers to papers in a given bib file bibmradd.pl - add MR numbers to papers in a given bib file bbl2bib.pl - convert `thebibliography' environment to a bib file biburl2doi.pl - convert urls pointing to doi.org to dois -ltx2crossrefxml.pl - a tool for creation of XML files for submitting to crossref.org +ltx2crossrefxml.pl - create XML files for submission to crossref.org -The scripts use bibtexperllibs libraries from CTAN +Bug reports, source code: https://github.com/borisveytsman/crossrefware +Releases: https://ctan.org/pkg/crossrefware -Installation: +These scripts rely on the bibtexperllibs libraries (replace +/crossrefware with /bibtexperllibs in the above urls). -1. Move *.pl files to the binaries directory in your system. +For an example of using ltx2crossrefxml and associated code, see the +TUGboat processing at +https://github.com/TeXUsersGroup/tugboat/tree/trunk/capsules/crossref. +Installation: +1. Move *.pl files to the binaries directory in your system. 2. Use *.cfg files as configuration files samples. - 3. Move *.1 to the man pages directory in your system. +This work was commissioned by The Saint Louis University and +Princeton University (Mathematics Department). Thank you! Changes: - 2018/04/15 - Fixed a bug in bibzbladd - - Work around a bug in mathscinet +2021-10-02 - changed TEXSELFAUTOPARENT to TEXMFROOT + +2021-01-18 - all conversions moved from ltx2crossrefxml to LaTeX::ToUnicode. + - config file can provide a hook for processing. + +2018/04/15 - Fixed a bug in bibzbladd + - Work around a bug in mathscinet - 2017/11/26: - Switched to date-based versioning for the - bundle. - - bbl2bib now converts urls starting with - http(s)://(dx.)doi.org to dois. This functionality - is also provided by a separate script biburl2doi - - bibadddoi now has the option to (not) canonize - names +2017/11/26 - Switched to date-based versioning for the bundle. + - bbl2bib now converts urls starting with + http(s)://(dx.)doi.org to dois. This functionality + is also provided by a separate script biburl2doi + - bibadddoi now has the option to (not) canonize names - Version 2.2: We now treat absent CA permissively. - New debug options for bbl2bib +Version 2.2: We now treat absent CA permissively. + New debug options for bbl2bib - Version 2.1a: Bug in bbl2bib corrected +Version 2.1a: Bug in bbl2bib corrected - Version 2.1: New options to add empty doi and zbl when doi or zbl - are not found to prevent repeated searches. - Added bibmradd.pl - Added bbl2bib.pl +Version 2.1: New options to add empty doi and zbl when doi or zbl + are not found to prevent repeated searches. + Added bibmradd.pl + Added bbl2bib.pl - Version 2.0: Moved to BibTeX::Parser suite. - Now we use new Zbmath interface. - Now we use bibtexperllibs libraries +Version 2.0: Moved to BibTeX::Parser suite. + Now we use new Zbmath interface. + Now we use bibtexperllibs libraries - Version 1.1: workaround for a bug with macrons in TeX::Encode \ No newline at end of file +Version 1.1: workaround for a bug with macrons in TeX::Encode diff --git a/support/crossrefware/bbl2bib.1 b/support/crossrefware/bbl2bib.1 index e41fb401cd..8cec0f740e 100644 --- a/support/crossrefware/bbl2bib.1 +++ b/support/crossrefware/bbl2bib.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bbl2bib 1" -.TH bbl2bib 1 "2018-04-29" "" "CROSSREF LIBRARY" +.TH bbl2bib 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -158,7 +158,7 @@ Do not clean \s-1URL\s0 fields. .Sp Normally \f(CW\*(C`bbl2bib\*(C'\fR recognizes \s-1URL\s0 fields of the kind \&\f(CW\*(C`http://dx.doi.org\*(C'\fR and their variants and converts them to \s-1DOI\s0 -fields (see also \fIbiburl2doi\fR\|(1) script). The switch \fB\-u\fR +fields (see also \fBbiburl2doi\fR\|(1) script). The switch \fB\-u\fR suppresses this cleanup. .SH "DESCRIPTION" .IX Header "DESCRIPTION" @@ -205,7 +205,7 @@ Each bibliography item starts from the line Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/support/crossrefware/bbl2bib.pl b/support/crossrefware/bbl2bib.pl index 397e52a6af..2e3df9b685 100755 --- a/support/crossrefware/bbl2bib.pl +++ b/support/crossrefware/bbl2bib.pl @@ -86,7 +86,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014-2017 Boris Veytsman +Copyright (C) 2014-2021 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -98,7 +98,7 @@ extent permitted by law. use strict; BEGIN { # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + chomp(my $TLMaster = `kpsewhich -var-value=TEXMFROOT`); # TL root if (length($TLMaster)) { unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; } diff --git a/support/crossrefware/bibdoiadd.1 b/support/crossrefware/bibdoiadd.1 index 0c01604bd6..7c3e4ea3d0 100644 --- a/support/crossrefware/bibdoiadd.1 +++ b/support/crossrefware/bibdoiadd.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bibdoiadd 1" -.TH bibdoiadd 1 "2017-11-26" "" "CROSSREF LIBRARY" +.TH bibdoiadd 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -168,7 +168,7 @@ output file is formed by adding \f(CW\*(C`_doi\*(C'\fR to the input file .IX Header "DESCRIPTION" The script reads a BibTeX file. It checks whether the entries have DOIs. If not, it tries to contact http://www.crossref.org to get the -corresponding \s-1DOI. \s0 The result is a BibTeX file with the fields +corresponding \s-1DOI.\s0 The result is a BibTeX file with the fields \&\f(CW\*(C`doi=...\*(C'\fR added. .PP The name of the output file is either set by the \fB\-o\fR option or @@ -206,7 +206,7 @@ members. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/support/crossrefware/bibdoiadd.pl b/support/crossrefware/bibdoiadd.pl index 219896bf40..bace84c000 100755 --- a/support/crossrefware/bibdoiadd.pl +++ b/support/crossrefware/bibdoiadd.pl @@ -85,7 +85,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014-2017 Boris Veytsman +Copyright (C) 2014-2021 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -97,7 +97,7 @@ extent permitted by law. use strict; BEGIN { # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + chomp(my $TLMaster = `kpsewhich -var-value=TEXMFROOT`); # TL root if (length($TLMaster)) { unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; } diff --git a/support/crossrefware/bibmradd.1 b/support/crossrefware/bibmradd.1 index 6906820fc2..2544d30900 100644 --- a/support/crossrefware/bibmradd.1 +++ b/support/crossrefware/bibmradd.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bibmradd 1" -.TH bibmradd 1 "2017-11-18" "" "CROSSREF LIBRARY" +.TH bibmradd 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -174,7 +174,7 @@ is derived by adding the suffix \f(CW\*(C`_mr\*(C'\fR to the output file. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/support/crossrefware/bibmradd.pl b/support/crossrefware/bibmradd.pl index 10f36113f6..5f6ae053d9 100755 --- a/support/crossrefware/bibmradd.pl +++ b/support/crossrefware/bibmradd.pl @@ -52,7 +52,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014-2017 Boris Veytsman +Copyright (C) 2014-2021 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -64,7 +64,7 @@ extent permitted by law. use strict; BEGIN { # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + chomp(my $TLMaster = `kpsewhich -var-value=TEXMFROOT`); # TL root if (length($TLMaster)) { unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; } diff --git a/support/crossrefware/biburl2doi.1 b/support/crossrefware/biburl2doi.1 index 5eee6a2cb3..8222c42693 100644 --- a/support/crossrefware/biburl2doi.1 +++ b/support/crossrefware/biburl2doi.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "biburl2doi 1" -.TH biburl2doi 1 "2017-11-26" "" "CROSSREF LIBRARY" +.TH biburl2doi 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -162,7 +162,7 @@ fields. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2017 Boris Veytsman +Copyright (C) 2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/support/crossrefware/biburl2doi.pl b/support/crossrefware/biburl2doi.pl index 76d1842bf9..33f7c67490 100755 --- a/support/crossrefware/biburl2doi.pl +++ b/support/crossrefware/biburl2doi.pl @@ -39,7 +39,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2017 Boris Veytsman +Copyright (C) 2021 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -51,7 +51,7 @@ extent permitted by law. use strict; BEGIN { # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + chomp(my $TLMaster = `kpsewhich -var-value=TEXMFROOT`); # TL root if (length($TLMaster)) { unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; } diff --git a/support/crossrefware/bibzbladd.1 b/support/crossrefware/bibzbladd.1 index 67c4bcc17d..5894f1677a 100644 --- a/support/crossrefware/bibzbladd.1 +++ b/support/crossrefware/bibzbladd.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "bibzbladd 1" -.TH bibzbladd 1 "2018-04-15" "" "CROSSREF LIBRARY" +.TH bibzbladd 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -174,7 +174,7 @@ is derived by adding the suffix \f(CW\*(C`_zbl\*(C'\fR to the output file. Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2014\-2017 Boris Veytsman +Copyright (C) 2014\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License diff --git a/support/crossrefware/bibzbladd.pl b/support/crossrefware/bibzbladd.pl index 7516862baf..c05a1137f7 100755 --- a/support/crossrefware/bibzbladd.pl +++ b/support/crossrefware/bibzbladd.pl @@ -52,7 +52,7 @@ Boris Veytsman =head1 COPYRIGHT AND LICENSE -Copyright (C) 2014-2017 Boris Veytsman +Copyright (C) 2014-2021 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License @@ -64,7 +64,7 @@ extent permitted by law. use strict; BEGIN { # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + chomp(my $TLMaster = `kpsewhich -var-value=TEXMFROOT`); # TL root if (length($TLMaster)) { unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; } diff --git a/support/crossrefware/crossrefware.pdf b/support/crossrefware/crossrefware.pdf index 87d5bac969..c40afb1dee 100644 Binary files a/support/crossrefware/crossrefware.pdf and b/support/crossrefware/crossrefware.pdf differ diff --git a/support/crossrefware/head.ltx b/support/crossrefware/head.ltx index 16391486bf..72ae89028e 100644 --- a/support/crossrefware/head.ltx +++ b/support/crossrefware/head.ltx @@ -1,39 +1,50 @@ -\documentclass{article} -\usepackage{makeidx} -\usepackage[osf]{mathpazo} +\documentclass[11pt]{article} +\usepackage{makeidx,fullpage} \usepackage[hidelinks]{hyperref} \makeindex \begin{document} \sloppy \title{Crossrefware documentation\thanks{This work was commissioned by - The Saint Lois University and The Princeton University (Mathematics - Department)}} + Saint Louis University and Princeton University (Mathematics Department)}} \author{Boris Veytsman\thanks{borisv@lk.net, boris@varphi.com}} \maketitle \tableofcontents \section{Introduction} -These scripts can be used to submit files to Crossref, check and add -doi numbers, MathSciNet numbers and ZbMath numbers to papers, and to -convert `bbl' files to `bib' files. +These scripts can be used to create files for submission to Crossref, +check and add doi numbers, MathSciNet numbers and ZbMath numbers to +papers, and to convert `bbl' files to `bib' files. -I am grateful to Josko Plazonic from Princeton Math Dept whose -(unpublished) Python script was an inspiration for this suite. +Development sources and issue tracker are on github: +\url{https://github.com/borisveytsman/crossrefware}. +Releases are made on CTAN: +\url{https://ctan.org/pkg/crossrefware} +and from there included in \TeX\ Live and other distributions. + +The script \path{ltx2crossrefxml} extracts information from \path{.rpi} +files and (if present) \path{.bbl} files and generates an XML file +suitable for submission to crossref.org. (Crossref is the organization +that handles DOI numbers for scholarly papers.) It does not actually +upload the submission, just outputs XML. -The script \path{ltx2crossrefxml} is used to extract the information -from a \LaTeX\ file and generate an XML file suitable for submission -to Crossref (the organization that keeps DOI numbering system). +This \path{.rpi} file is a plain text representation of the metadata for +one article. It is written by the \path{resphilosophica} package +(\url{https://ctan.org/pkg/resphilosophica}). It can also be created by +hand. -Several scripts, \path{bibdoiadd}, \path{bibmradd} and \path{bibmradd} +Several scripts, \path{bibdoiadd}, \path{bibmradd} and \path{bibzbladd} take a \path{bib} file, and add to each entry a DOI, MR or ZBL number correspondingly, if they can find this entry in the corresponding database. -Script \path{bbl2bib} tries to reconstruct a \path{bib} file from the +The \path{bbl2bib} script tries to reconstruct a \path{bib} file from the corresponding \path{thebibliography} environment. One can argue that -this operation is akin to reconstructing a cow from the steak. The -way the script does it is searching for the entry in the MR database, +this operation is akin to reconstructing the cow from a steak. The +way the script does it is by searching for the entry in the MR database, and creating the corresponding Bib\TeX\ fields. -Below are manual pages for these scripts. +I am grateful to Josko Plazonic from Princeton Math Dept whose +(unpublished) Python script was an inspiration for this suite. + +Following are manual pages for these scripts. diff --git a/support/crossrefware/ltx2crossrefxml.1 b/support/crossrefware/ltx2crossrefxml.1 index a938c22130..cb8343aa60 100644 --- a/support/crossrefware/ltx2crossrefxml.1 +++ b/support/crossrefware/ltx2crossrefxml.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== @@ -46,7 +46,7 @@ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" -.\" If the F register is turned on, we'll generate index entries on stderr for +.\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. @@ -56,12 +56,12 @@ .. .nr rF 0 .if \n(.g .if rF .nr rF 1 -.if (\n(rF:(\n(.g==0)) \{ -. if \nF \{ +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. -. if !\nF==2 \{ +. if !\nF==2 \{\ . nr % 0 . nr F 2 . \} @@ -133,57 +133,253 @@ .\" ======================================================================== .\" .IX Title "ltx2crossrefxml 1" -.TH ltx2crossrefxml 1 "2017-11-18" "" "CROSSREF LIBRARY" +.TH ltx2crossrefxml 1 "2021-10-02" "" "LATEX CROSSREFWARE" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" -ltx2crossrefxml.pl \- a tool for creation of XML files for submitting to crossref. +ltx2crossrefxml.pl \- create XML files for submitting to crossref.org .SH "SYNOPSIS" .IX Header "SYNOPSIS" -ltx2crossrefxml [\fB\-c\fR \fIconfig_file\fR] [\fB\-o\fR \fIoutput\fR] \fIlatex_file\fR \fIlatex_file\fR ... +ltx2crossrefxml [\fB\-c\fR \fIconfig_file\fR] [\fB\-o\fR \fIoutput_file\fR] [\fB\-input\-is\-xml\fR] + \fIlatex_file1\fR \fIlatex_file2\fR ... .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-c\fR \fIconfig_file\fR" 4 .IX Item "-c config_file" -Configuration file. If this file is absent, some defaults are used. +Configuration file. If this file is absent, defaults are used. See below for its format. -.IP "\fB\-o\fR \fIoutput\fR" 4 -.IX Item "-o output" +.IP "\fB\-o\fR \fIoutput_file\fR" 4 +.IX Item "-o output_file" Output file. If this option is not used, the \s-1XML\s0 is output to stdout. +.IP "\fB\-rpi\-is\-xml\fR" 4 +.IX Item "-rpi-is-xml" +Do not transform author and title input strings, assume they are valid \s-1XML.\s0 +.PP +The usual \f(CW\*(C`\-\-help\*(C'\fR and \f(CW\*(C`\-\-version\*(C'\fR options are also supported. Options +can begin with either \f(CW\*(C`\-\*(C'\fR or \f(CW\*(C`\-\-\*(C'\fR, and ordered arbitrarily. .SH "DESCRIPTION" .IX Header "DESCRIPTION" -The script takes a number of latex files and produces an \s-1XML\s0 file -ready for submission to Crossref. Each file must be previously processed -by LaTeX with the newest \f(CW\*(C`resphilosophica\*(C'\fR package: the package creates -the file \f(CW\*(C`.rti\*(C'\fR wtih the information about the bibliography. +For each given \fIlatex_file\fR, this script reads \f(CW\*(C`.rpi\*(C'\fR and (if they +exist) \f(CW\*(C`.bbl\*(C'\fR files and outputs corresponding \s-1XML\s0 that can be uploaded +to Crossref (). Any extension of \fIlatex_file\fR is +ignored, and \fIlatex_file\fR itself is not read (and need not even exist). +.PP +Each \f(CW\*(C`.rpi\*(C'\fR file specifies the metadata for a single article to be +uploaded to Crossref (a \f(CW\*(C`journal_article\*(C'\fR element in their schema); an +example is below. These files are output by the \f(CW\*(C`resphilosophica\*(C'\fR +package (), but (as always) can +also be created by hand or by whatever other method you implement. +.PP +Any \f(CW\*(C`.bbl\*(C'\fR files present are used for the citation information in the +output \s-1XML.\s0 See the \s-1CITATIONS\s0 section below. .PP -The processing of reference list is at present rather limited: only so -called unstructured references are produced. +Unless \f(CW\*(C`\-\-rpi\-is\-xml\*(C'\fR is specified, for all text (authors, title, +citations), standard TeX control sequences are replaced with plain text +or \s-1UTF\-8\s0 or eliminated, as appropriate. The \f(CW\*(C`LaTeX::ToUnicode::convert\*(C'\fR +routine is used for this (). +Tricky TeX control sequences will almost surely not be handled +correctly. If \f(CW\*(C`\-\-rpi\-is\-xml\*(C'\fR is given, the author and title strings +from the rpi files are output as-is, assuming they are valid \s-1XML\s0; no +checking is done. Citation text from \f(CW\*(C`.bbl\*(C'\fR files is always converted +from LaTeX to plain text. +.PP +This script just writes an \s-1XML\s0 file. It's up to you to actually do the +uploading to Crossref; for example, you can use their Java tool +\&\f(CW\*(C`crossref\-upload\-tool.jar\*(C'\fR +(). +For the definition of their schema, see + +(this is the schema version currently followed by this script). .SH "CONFIGURATION FILE FORMAT" .IX Header "CONFIGURATION FILE FORMAT" -The configuration file is mostly self-explanatory: it has comments -(starting with \f(CW\*(C`#\*(C'\fR) and assginments in the form +The configuration file is read as Perl code. Thus, comment lines +starting with \f(CW\*(C`#\*(C'\fR and blank lines are ignored. The other lines are +typically assignments in the form (spaces are optional): .PP .Vb 1 -\& $field = value ; +\& $variable = value ; +.Ve +.PP +Usually the value is a \f(CW"string"\fR enclosed in \s-1ASCII\s0 double-quote or +single-quote characters, per Perl syntax. The idea is to specify the +user-specific and journal-specific values needed for the Crossref +upload. The variables which are used are these: +.PP +.Vb 7 +\& $depositorName = "Depositor Name"; +\& $depositorEmail = \*(Aqdepositor@example.org\*(Aq; +\& $registrant = \*(AqRegistrant\*(Aq; # organization name +\& $fullTitle = "FULL TITLE"; # journal name +\& $issn = "1234\-5678"; # required +\& $abbrevTitle = "ABBR. TTL."; # optional +\& $coden = "CODEN"; # optional +.Ve +.PP +For a given run, all \f(CW\*(C`.rpi\*(C'\fR data read is assumed to belong to the +journal that is specified in the configuration file. More precisely, the +configuration data is written as a \f(CW\*(C`journal_metadata\*(C'\fR element, with +given \f(CW\*(C`full_title\*(C'\fR, \f(CW\*(C`issn\*(C'\fR, etc., and then each \f(CW\*(C`.rpi\*(C'\fR is written as +\&\f(CW\*(C`journal_issue\*(C'\fR plus \f(CW\*(C`journal_article\*(C'\fR elements. +.PP +The configuration file can also define one Perl function: +\&\f(CW\*(C`LaTeX_ToUnicode_convert_hook\*(C'\fR. If it is defined, it is called at the +beginning of the procedure that converts LaTeX text to Unicode, which is +done with the LaTeX::ToUnicode module, from the \f(CW\*(C`bibtexperllibs\*(C'\fR +package (). The function must +accept one string (the LaTeX text), and return one string (presumably +the transformed string). The standard conversions are then applied to +the returned string, so the configured function need only handle special +cases, such as control sequences particular to the journal at hand. +.SH "RPI FILE FORMAT" +.IX Header "RPI FILE FORMAT" +Here's the (relevant part of the) \f(CW\*(C`.rpi\*(C'\fR file corresponding to the +\&\f(CW\*(C`rpsample.tex\*(C'\fR example in the \f(CW\*(C`resphilosophica\*(C'\fR package +(): +.PP +.Vb 10 +\& %authors=Boris Veytsman\eand A. U. Th{\eo }r\eand C. O. R\e"espondent +\& %title=A Sample Paper:\e\e \eemph {A Template} +\& %year=2012 +\& %volume=90 +\& %issue=1\-\-2 +\& %startpage=1 +\& %endpage=1 +\& %doi=10.11612/resphil.A31245 +\& %paperUrl=http://borisv.lk.net/paper12 +\& %publicationType=full_text +.Ve +.PP +Other lines, some not beginning with %, are ignored (and not shown). +For more details on processing, see the code. +.PP +The \f(CW%paperUrl\fR value is what will be associated with the given \f(CW%doi\fR +(output as the \f(CW\*(C`resource\*(C'\fR element). Crossref strongly recommends that +the url be for a so-called landing page, and not directly for a pdf +(). +Special case: if the url is not specified, +and the journal is \fIRes\ Philosophica\fR, +a special-purpose search url using pdcnet.org is returned. +Any other journal must always specify this. +.PP +The \f(CW%authors\fR field is split at \f(CW\*(C`\eand\*(C'\fR (ignoring whitespace before +and after), and output as the \f(CW\*(C`contributors\*(C'\fR element, using +\&\f(CW\*(C`sequence="first"\*(C'\fR for the first listed, \f(CW\*(C`sequence="additional"\*(C'\fR for +the remainder. +.PP +If the \f(CW%publicationType\fR is not specified, it defaults to +\&\f(CW\*(C`full_text\*(C'\fR, since that has historically been the case; \f(CW\*(C`full_text\*(C'\fR +can also be given explicitly. The other values allowed by the Crossref +schema are \f(CW\*(C`abstract_only\*(C'\fR and \f(CW\*(C`bibliographic_record\*(C'\fR. Finally, if the +value is \f(CW\*(C`omit\*(C'\fR, the \f(CW\*(C`publication_type\*(C'\fR attribute is omitted entirely +from the given \f(CW\*(C`journal_article\*(C'\fR element. +.PP +Each \f(CW\*(C`.rpi\*(C'\fR must contain information for only one article, but multiple +files can be read in a single run. It would not be difficult to support +multiple articles in a single \f(CW\*(C`.rpi\*(C'\fR file, but it makes debugging and +error correction easier when each uploaded \s-1XML\s0 contains a single +article. +.SS "\s-1MORE ABOUT AUTHOR NAMES\s0" +.IX Subsection "MORE ABOUT AUTHOR NAMES" +The three formats for names recognized are (not coincidentally) the same +as BibTeX: +.PP +.Vb 3 +\& First von Last +\& von Last, First +\& von Last, Jr., First .Ve +.PP +The forms can be freely intermixed within a single \f(CW%authors\fR line, +separated with \f(CW\*(C`\eand\*(C'\fR (including the backslash). Commas as name +separators are not supported, unlike BibTeX. +.PP +In short, you may almost always use the first form; you shouldn't if +either there's a Jr part, or the Last part has multiple tokens but +there's no von part. See the \f(CW\*(C`btxdoc\*(C'\fR (``BibTeXing'' by Oren Patashnik) +document for details. +.PP +In the \f(CW%authors\fR line of a \f(CW\*(C`.rpi\*(C'\fR file, some secondary directives are +recognized, indicated by \f(CW\*(C`|\*(C'\fR characters. Easiest to explain with an +example: +.PP +.Vb 1 +\& %authors=|organization|\eLaTeX\e Project Team \eand Alex Brown|orcid=123 +.Ve +.PP +Thus: 1) if \f(CW\*(C`|organization|\*(C'\fR is specified, the author name will be output +as an \f(CW\*(C`organization\*(C'\fR contributor, instead of the usual \f(CW\*(C`person_name\*(C'\fR, +as the Crossref schema requires. +.PP +2) If \f(CW\*(C`|orcid=\f(CIvalue\f(CW|\*(C'\fR is specified, the \fIvalue\fR is output as an +\&\f(CW\*(C`ORCID\*(C'\fR element for that \f(CW\*(C`person_name\*(C'\fR. +.PP +These two directives, \f(CW\*(C`|organization\*(C'\fR| and \f(CW\*(C`|orcid|\*(C'\fR are mutually +exclusive, because that's how the Crossref schema defines them. The \f(CW\*(C`=\*(C'\fR +sign after \f(CW\*(C`orcid\*(C'\fR is required, while all spaces after the \f(CW\*(C`orcid\*(C'\fR +keyword are ignored. Other than that, the \s-1ORCID\s0 value is output +literally. (E.g., the \s-1ORCID\s0 value of \f(CW123\fR above is clearly invalid, +but it would be output anyway, with no warning.) +.PP +Extra \f(CW\*(C`|\*(C'\fR characters, at the beginning or end of the entire \f(CW%authors\fR +string, or doubled in the middle, are accepted and ignored. Whitespace +is ignored around all \f(CW\*(C`|\*(C'\fR characters. +.SH "CITATIONS" +.IX Header "CITATIONS" +Each \f(CW\*(C`.bbl\*(C'\fR file corresponding to an input \f(CW\*(C`.rpi\*(C'\fR file is read and +used to output a \f(CW\*(C`citation_list\*(C'\fR element for that \f(CW\*(C`journal_article\*(C'\fR in +the output \s-1XML.\s0 If no \f(CW\*(C`.bbl\*(C'\fR file exists for a given \f(CW\*(C`.rpi\*(C'\fR, +no \f(CW\*(C`citation_list\*(C'\fR is output for that article. +.PP +The \f(CW\*(C`.bbl\*(C'\fR processing is rudimentary: only so-called +\&\f(CW\*(C`unstructured_citation\*(C'\fR references are produced for Crossref, that is, +the contents of the citation (each paragraph in the \f(CW\*(C`.bbl\*(C'\fR) is dumped +as a single flat string without markup. +.PP +Bibliography text is unconditionally converted from TeX to \s-1XML,\s0 via the +method described above. It is not unusual for the conversion to be +incomplete or incorrect. It is up to you to check for this; e.g., if +any backslashes remain in the output, it is most likely an error. +.PP +Furthermore, it is assumed that the \f(CW\*(C`.bbl\*(C'\fR file contains a sequence of +references, each starting with \f(CW\*(C`\ebibitem{\f(CIKEY\f(CW}\*(C'\fR (which itself must be +at the beginning of a line, preceded only by whitespace), and the whole +bibliography ending with \f(CW\*(C`\eend{thebibliography}\*(C'\fR (similarly at the +beginning of a line). A bibliography not following this format will not +produce useful results. Bibliographies can be created by hand, or with +BibTeX, or any other method. +.PP +The \f(CW\*(C`key\*(C'\fR attribute for the \f(CW\*(C`citation\*(C'\fR element is taken as the \fI\s-1KEY\s0\fR +argument to the \f(CW\*(C`\ebibitem\*(C'\fR command. The sequential number of the +citation (1, 2, ...) is appended. The argument to \f(CW\*(C`\ebibitem\*(C'\fR can be +empty (\f(CW\*(C`\ebibitem{}\*(C'\fR, and the sequence number will be used on its own. +Although TeX will not handle empty \f(CW\*(C`\ebibitem\*(C'\fR keys, it can be +convenient when creating a \f(CW\*(C`.bbl\*(C'\fR purely for Crossref. +.PP +The \f(CW\*(C`.rpi\*(C'\fR file is also checked for the bibliography information, in +this same format. +.PP +Feature request: if anyone is interested in figuring out how to generate +structured citations +() +instead of these flat text dumps, that would be great. .SH "EXAMPLES" .IX Header "EXAMPLES" -.Vb 1 -\& ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex \-o result.xml +.Vb 2 +\& ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex \e +\& \-o result.xml \& -\& ltx2crossrefxml.pl \-c myconfig.cnf paper.tex \-o paper.xml +\& ltx2crossrefxml.pl \-c myconfig.cfg paper.tex \-o paper.xml .Ve .SH "AUTHOR" .IX Header "AUTHOR" -Boris Veytsman +Boris Veytsman .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" -Copyright (C) 2012\-2016 Boris Veytsman +Copyright (C) 2012\-2021 Boris Veytsman .PP This is free software. You may redistribute copies of it under the terms of the \s-1GNU\s0 General Public License -. There is \s-1NO WARRANTY,\s0 to the +. There is \s-1NO WARRANTY,\s0 to the extent permitted by law. diff --git a/support/crossrefware/ltx2crossrefxml.cfg b/support/crossrefware/ltx2crossrefxml.cfg index e6a1459e18..c85497a3db 100644 --- a/support/crossrefware/ltx2crossrefxml.cfg +++ b/support/crossrefware/ltx2crossrefxml.cfg @@ -1,22 +1,21 @@ -# # Configuration file for ltx2crossrefxml.pl -# # Name of the depositor -$depositorName='NAME'; +$depositorName = 'NAME'; -# Email -$depositorEmail='EMAIL'; +# Email of the depositor +$depositorEmail = 'EMAIL'; # Organization -$registrant='ORGANIZATION'; +$registrant = 'ORGANIZATION'; -# The rest is self-evident -$fullTitle = "TITLE"; -$abbrevTitle = "TTL"; -$issn = "NNNN-NNNNNN"; -$coden = "CODEN"; +# Journal-specific information. +$fullTitle = 'JOURNAL TITLE'; +$issn = 'NNNN-NNNNNN'; +# These two are optional. Uncomment and specify if your journal uses them. +#$abbrevTitle = 'ABBR. TTL.'; +#$coden = 'CODEN'; # The last line must be 1; -1; \ No newline at end of file +1; diff --git a/support/crossrefware/ltx2crossrefxml.pl b/support/crossrefware/ltx2crossrefxml.pl index 105611a7dc..02f841361c 100755 --- a/support/crossrefware/ltx2crossrefxml.pl +++ b/support/crossrefware/ltx2crossrefxml.pl @@ -4,12 +4,12 @@ =head1 NAME -ltx2crossrefxml.pl - a tool for creation of XML files for submitting to crossref. +ltx2crossrefxml.pl - create XML files for submitting to crossref.org =head1 SYNOPSIS -ltx2crossrefxml [B<-c> I] [B<-o> I] I I ... - +ltx2crossrefxml [B<-c> I] [B<-o> I] [B<-input-is-xml>] + I I ... =head1 OPTIONS @@ -17,89 +17,326 @@ ltx2crossrefxml [B<-c> I] [B<-o> I] I I I -Configuration file. If this file is absent, some defaults are used. +Configuration file. If this file is absent, defaults are used. See below for its format. - -=item B<-o> I +=item B<-o> I Output file. If this option is not used, the XML is output to stdout. +=item B<-rpi-is-xml> + +Do not transform author and title input strings, assume they are valid XML. + =back -=head1 DESCRIPTION +The usual C<--help> and C<--version> options are also supported. Options +can begin with either C<-> or C<-->, and ordered arbitrarily. -The script takes a number of latex files and produces an XML file -ready for submission to Crossref. Each file must be previously processed -by LaTeX with the newest C package: the package creates -the file C<.rti> wtih the information about the bibliography. +=head1 DESCRIPTION -The processing of reference list is at present rather limited: only so -called unstructured references are produced. +For each given I, this script reads C<.rpi> and (if they +exist) C<.bbl> files and outputs corresponding XML that can be uploaded +to Crossref (L). Any extension of I is +ignored, and I itself is not read (and need not even exist). + +Each C<.rpi> file specifies the metadata for a single article to be +uploaded to Crossref (a C element in their schema); an +example is below. These files are output by the C +package (L), but (as always) can +also be created by hand or by whatever other method you implement. + +Any C<.bbl> files present are used for the citation information in the +output XML. See the L section below. + +Unless C<--rpi-is-xml> is specified, for all text (authors, title, +citations), standard TeX control sequences are replaced with plain text +or UTF-8 or eliminated, as appropriate. The C +routine is used for this (L). +Tricky TeX control sequences will almost surely not be handled +correctly. If C<--rpi-is-xml> is given, the author and title strings +from the rpi files are output as-is, assuming they are valid XML; no +checking is done. Citation text from C<.bbl> files is always converted +from LaTeX to plain text. + +This script just writes an XML file. It's up to you to actually do the +uploading to Crossref; for example, you can use their Java tool +C +(L). +For the definition of their schema, see +L +(this is the schema version currently followed by this script). =head1 CONFIGURATION FILE FORMAT -The configuration file is mostly self-explanatory: it has comments -(starting with C<#>) and assginments in the form - - $field = value ; +The configuration file is read as Perl code. Thus, comment lines +starting with C<#> and blank lines are ignored. The other lines are +typically assignments in the form (spaces are optional): + + $variable = value ; + +Usually the value is a C<"string"> enclosed in ASCII double-quote or +single-quote characters, per Perl syntax. The idea is to specify the +user-specific and journal-specific values needed for the Crossref +upload. The variables which are used are these: + + $depositorName = "Depositor Name"; + $depositorEmail = 'depositor@example.org'; + $registrant = 'Registrant'; # organization name + $fullTitle = "FULL TITLE"; # journal name + $issn = "1234-5678"; # required + $abbrevTitle = "ABBR. TTL."; # optional + $coden = "CODEN"; # optional + + +For a given run, all C<.rpi> data read is assumed to belong to the +journal that is specified in the configuration file. More precisely, the +configuration data is written as a C element, with +given C, C, etc., and then each C<.rpi> is written as +C plus C elements. + +The configuration file can also define one Perl function: +C. If it is defined, it is called at the +beginning of the procedure that converts LaTeX text to Unicode, which is +done with the L module, from the C +package (L). The function must +accept one string (the LaTeX text), and return one string (presumably +the transformed string). The standard conversions are then applied to +the returned string, so the configured function need only handle special +cases, such as control sequences particular to the journal at hand. + +=head1 RPI FILE FORMAT + +Here's the (relevant part of the) C<.rpi> file corresponding to the +C example in the C package +(L): + + %authors=Boris Veytsman\and A. U. Th{\o }r\and C. O. R\"espondent + %title=A Sample Paper:\\ \emph {A Template} + %year=2012 + %volume=90 + %issue=1--2 + %startpage=1 + %endpage=1 + %doi=10.11612/resphil.A31245 + %paperUrl=http://borisv.lk.net/paper12 + %publicationType=full_text + +Other lines, some not beginning with %, are ignored (and not shown). +For more details on processing, see the code. + +The C<%paperUrl> value is what will be associated with the given C<%doi> +(output as the C element). Crossref strongly recommends that +the url be for a so-called landing page, and not directly for a pdf +(L). +Special case: if the url is not specified, +and the journal is I>, +a special-purpose search url using L is returned. +Any other journal must always specify this. + +The C<%authors> field is split at C<\and> (ignoring whitespace before +and after), and output as the C element, using +C for the first listed, C for +the remainder. + +If the C<%publicationType> is not specified, it defaults to +C, since that has historically been the case; C +can also be given explicitly. The other values allowed by the Crossref +schema are C and C. Finally, if the +value is C, the C attribute is omitted entirely +from the given C element. + +Each C<.rpi> must contain information for only one article, but multiple +files can be read in a single run. It would not be difficult to support +multiple articles in a single C<.rpi> file, but it makes debugging and +error correction easier when each uploaded XML contains a single +article. + +=head2 MORE ABOUT AUTHOR NAMES + +The three formats for names recognized are (not coincidentally) the same +as BibTeX: + + First von Last + von Last, First + von Last, Jr., First + +The forms can be freely intermixed within a single C<%authors> line, +separated with C<\and> (including the backslash). Commas as name +separators are not supported, unlike BibTeX. + +In short, you may almost always use the first form; you shouldn't if +either there's a Jr part, or the Last part has multiple tokens but +there's no von part. See the C (``BibTeXing'' by Oren Patashnik) +document for details. + +In the C<%authors> line of a C<.rpi> file, some secondary directives are +recognized, indicated by C<|> characters. Easiest to explain with an +example: + + %authors=|organization|\LaTeX\ Project Team \and Alex Brown|orcid=123 + +Thus: 1) if C<|organization|> is specified, the author name will be output +as an C contributor, instead of the usual C, +as the Crossref schema requires. + +2) If C<|orcid=I|> is specified, the I is output as an +C element for that C. + +These two directives, C<|organization>| and C<|orcid|> are mutually +exclusive, because that's how the Crossref schema defines them. The C<=> +sign after C is required, while all spaces after the C +keyword are ignored. Other than that, the ORCID value is output +literally. (E.g., the ORCID value of C<123> above is clearly invalid, +but it would be output anyway, with no warning.) + +Extra C<|> characters, at the beginning or end of the entire C<%authors> +string, or doubled in the middle, are accepted and ignored. Whitespace +is ignored around all C<|> characters. + +=head1 CITATIONS + +Each C<.bbl> file corresponding to an input C<.rpi> file is read and +used to output a C element for that C in +the output XML. If no C<.bbl> file exists for a given C<.rpi>, +no C is output for that article. + +The C<.bbl> processing is rudimentary: only so-called +C references are produced for Crossref, that is, +the contents of the citation (each paragraph in the C<.bbl>) is dumped +as a single flat string without markup. + +Bibliography text is unconditionally converted from TeX to XML, via the +method described above. It is not unusual for the conversion to be +incomplete or incorrect. It is up to you to check for this; e.g., if +any backslashes remain in the output, it is most likely an error. + +Furthermore, it is assumed that the C<.bbl> file contains a sequence of +references, each starting with C<\bibitem{I}> (which itself must be +at the beginning of a line, preceded only by whitespace), and the whole +bibliography ending with C<\end{thebibliography}> (similarly at the +beginning of a line). A bibliography not following this format will not +produce useful results. Bibliographies can be created by hand, or with +BibTeX, or any other method. + +The C attribute for the C element is taken as the I +argument to the C<\bibitem> command. The sequential number of the +citation (1, 2, ...) is appended. The argument to C<\bibitem> can be +empty (C<\bibitem{}>, and the sequence number will be used on its own. +Although TeX will not handle empty C<\bibitem> keys, it can be +convenient when creating a C<.bbl> purely for Crossref. + +The C<.rpi> file is also checked for the bibliography information, in +this same format. + +Feature request: if anyone is interested in figuring out how to generate +structured citations +(L) +instead of these flat text dumps, that would be great. =head1 EXAMPLES - ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex -o result.xml + ltx2crossrefxml.pl ../paper1/paper1.tex ../paper2/paper2.tex \ + -o result.xml - ltx2crossrefxml.pl -c myconfig.cnf paper.tex -o paper.xml + ltx2crossrefxml.pl -c myconfig.cfg paper.tex -o paper.xml =head1 AUTHOR -Boris Veytsman +Boris Veytsman L =head1 COPYRIGHT AND LICENSE -Copyright (C) 2012-2016 Boris Veytsman +Copyright (C) 2012-2021 Boris Veytsman This is free software. You may redistribute copies of it under the terms of the GNU General Public License -L. There is NO WARRANTY, to the +L. There is NO WARRANTY, to the extent permitted by law. - =cut use strict; + use warnings; + + use Cwd; + use File::Basename; + use File::Spec; BEGIN { # find files relative to our installed location within TeX Live - chomp(my $TLMaster = `kpsewhich -var-value=SELFAUTOPARENT`); # TL root + chomp(my $TLMaster = `kpsewhich -var-value=TEXMFROOT`); # TL root if (length($TLMaster)) { unshift @INC, "$TLMaster/texmf-dist/scripts/bibtexperllibs"; } + # find development bibtexperllibs in sibling checkout to this script, + # even if $0 is a symlink. All irrelevant when using from an installation. + my $real0 = Cwd::abs_path($0); + my $scriptdir = File::Basename::dirname($real0); + my $dev_btxperllibs = Cwd::abs_path("$scriptdir/../bibtexperllibs"); + # we need the lib/ subdirectories inside ... + unshift (@INC, glob ("$dev_btxperllibs/*/lib")) if -d $dev_btxperllibs; } + use POSIX qw(strftime); + use BibTeX::Parser::Author; - use LaTeX::ToUnicode qw (convert); - use File::Basename; - use File::Spec; - my $USAGE="USAGE: $0 [-c config] [-o output] file1 file2 ...\n"; -my $VERSION = < \($opts{c}), + "output|o=s" => \($opts{o}), + "rpi-is-xml!"=> \($opts{xi}), + "version|V" => \($opts{V}), + "help|?" => \($opts{h})) || pod2usage(1); + + if ($opts{h}) { print "$USAGE\n$VERSION"; exit 0; } + if ($opts{V}) { print $VERSION; exit 0; } + use utf8; binmode(STDOUT, ":utf8"); -if ($opts{h} || $opts{V}){ - print $VERSION; - exit 0; -} - ################################################################ # Defaults and parameters ################################################################ @@ -107,32 +344,36 @@ if ($opts{h} || $opts{V}){ *OUT=*STDOUT; if (defined($opts{o})) { - open (OUT, ">$opts{o}") or die "Cannot open file $opts{o} for writing\n"; + open (OUT, ">$opts{o}") or die "open($opts{o}) for writing failed: $!\n"; binmode(OUT, ":utf8") } - our $depositorName='DEPOSITOR_NAME'; - our $depositorEmail='DEPOSITOR_EMAIL'; - our $registrant='REGISTRANT'; + our $depositorName = 'DEPOSITOR_NAME'; + our $depositorEmail = 'DEPOSITOR_EMAIL'; + our $registrant = 'REGISTRANT'; our $fullTitle = "FULL TITLE"; - our $abbrevTitle = "ABBR. Title."; - our $issn = "1234-5678"; + our $abbrevTitle = "ABBR. TTL."; + our $issn = "0000-0000"; our $coden = "CODEN"; - our $batchId="ltx2crossref$$"; - our $timestamp=strftime("%Y%m%d%H%M%S", gmtime); + our $timestamp = strftime("%Y%m%d%H%M%S", gmtime); + # use timestamp in batchid, since the value is supposed to be unique + # for every submission to crossref by a given publisher. + # https://data.crossref.org/reports/help/schema_doc/4.4.2/schema_4_4_2.html#doi_batch_id + our $batchId="ltx2crossref-$timestamp-$$"; if ($opts{c}) { if (-r $opts{c}) { - require $opts{c}; + # if config arg is absolute, fine; if not, prepend "./" as slightly + # less troublesome than putting "." in the @INC path. + my $rel = (File::Spec->file_name_is_absolute($opts{c}) ? "" : "./"); + require "$rel$opts{c}"; } else { - die "Cannot read options $opts{c}. $USAGE"; + die "Cannot read config file $opts{c}. Goodbye."; } } - - PrintHead(); # @@ -154,117 +395,159 @@ if ($opts{h} || $opts{V}){ } } } - } PrintTail(); - exit(0); ##################################################### # Printing the head and the tail ##################################################### - sub PrintHead { - - + # do not output the or if the journal doesn't + # have them. + my $indent = " "; + my $coden_out = $coden ne "CODEN" ? "\n$indent$coden" : ""; + my $abbrev_title_out = $abbrevTitle ne "ABBR. TTL." + ? "\n$indent$abbrevTitle" + : ""; + + # as of schema version 4.3.4, crossref renamed the element + # inside to . Sigh. Something to take + # into account with older schemas. + # https://www.crossref.org/education/content-registration/crossrefs-metadata-deposit-schema/schema-versions/ print OUT < + $batchId $timestamp - $depositorName + $depositorName $depositorEmail $registrant - - - - $fullTitle - $abbrevTitle - $issn - $coden - + + + $fullTitle$abbrev_title_out + $issn$coden_out + END - } sub PrintTail { print OUT < - + END -return; + return; } ####################################################### -# Adding one paper +# Adding one paper from $file.rpi and .bbl to global %papers. ####################################################### - sub AddPaper { my $file = shift; my ($name,$path,$suffix) = fileparse($file, '\.[^\.]*$'); my $rpifile = File::Spec->catfile($path, "$name.rpi"); - open (RPI, $rpifile) or die - "Cannot find $rpifile. Did you process $file?\n"; + open (RPI, $rpifile) + or die "open($rpifile) failed: $! (did you process $file?)\n"; my %data; while () { chomp; if (/^%([^=]*)\s*=\s*(.*)\s*$/) { - $data{$1}=$2; + if (exists $data{$1}) { + warn "$rpifile:$.: already saw data{$1}=$data{$1};" + . " an .rpi file should have data for only one article," + . " but overwriting with `$2' anyway.\n"; + } + $data{$1} = $2; } } close RPI; + + # look for bibliographies in both the .rpi and any .bbl file. my @bibliography; foreach my $bibfile ($file, File::Spec->catfile($path, "$name.bbl")) { - @bibliography = (@bibliography, - AddBibliography($bibfile)); + @bibliography = (@bibliography, AddBibliography($bibfile)); + } + $data{'bibliography'} = \@bibliography; + + # Die if the fields we use unconditionally are empty. Not all of + # them are required by the schema, but we can wait to generalize. + foreach my $field (qw(title year volume issue startpage endpage doi)) { + if (! $data{$field}) { + die ("$0: field must not be empty: $field\n " + . &debug_hash_as_string("whole hash", %data)); + } } - $data{'bibliography'}=\@bibliography; + push @{$papers{$data{year}}->{$data{volume}}->{$data{issue}}}, \%data; } ############################################################## -# Reading a list of papers and adding it to the -# bibliography +# Reading a list of papers from BIBFILE and adding it to the +# bibliography. Each item is assumed to start with +# \bibitem{KEY} and the whole bib to end with \end{thebibliography}. +# +# We return a list of hashes, each hash with a single key, the citation +# key, and its value a flat string of the entry. +# +# No conversion of the text is done here. ############################################################## - sub AddBibliography { my $bibfile = shift; open (BIB, $bibfile) or return; + my $insidebibliography = 0; - my $currpaper=""; + my $currpaper = ""; # that is, the current bib entry + my $bibno = 0; my @result; my $key; while () { chomp; - if (/^\s*\\bibitem(?:\[.*\])?+\{(.+)\}/) { + next if /^\s*%/; # TeX comment line + s/[ \t]%.*//; # remove TeX comment + # + # allow empty \bibitem key for the sake of handwritten bbls. + # Similarly, might be more stuff on the line when handwritten. + if (s/^\s*\\bibitem(?:\[.*?\])?+\s*\{(.*?)\}//) { + my $newkey = $1; if ($insidebibliography) { if ($currpaper) { - my %paperhash; - $paperhash{$key}=$currpaper; + # Append the current sequence number for this citation, + # since that's what Crossref recommends (sort of). + # For prettiness, if the key is otherwise empty, + # don't include a dash beforehand. + $bibno++; + $key .= ($key ? "-" : "") . $bibno; + # + my %paperhash; + $paperhash{$key} = $currpaper; push @result, \%paperhash; } } - $key = $1; - $currpaper=""; - $insidebibliography=1; + # The citation key (required by schema) starts as the bibitem key. + $key = $newkey; + + $currpaper = $_; + $insidebibliography = 1; next; } if (/^\s*\\end\{thebibliography\}/) { if ($currpaper) { - my %paperhash; - $paperhash{$key}=$currpaper; - push @result, \%paperhash; + $bibno++; + $key .= ($key ? "-" : "") . $bibno; + # + my %paperhash; + $paperhash{$key} = $currpaper; + push @result, \%paperhash; } - $currpaper=""; - $insidebibliography=0; + $currpaper = ""; + $insidebibliography = 0; next; } if ($insidebibliography) { @@ -272,25 +555,30 @@ sub AddBibliography { } } close BIB; + + # We look in the .rpi files too, which will generally have none. + if (@result == 0 && $bibfile =~ /\.bbl$/) { + warn "$0: no \\bibitems found in: $bibfile\n"; + } elsif ($insidebibliography) { + warn "$0: no \\end{thebibliography} found in: $bibfile\n"; + warn "$0: so the last bib entry is missing.\n"; + } return @result; } ################################################################# # Printing information about one issue ################################################################# - sub PrintIssueHead { my ($year, $volume, $issue) = @_; print OUT < - - $year - - - $volume - - $issue - + + + $year + + $volume + $issue + END } @@ -299,127 +587,206 @@ END ############################################################### sub PrintPaper { my $paper = shift; - my $title=convert($paper->{title}); - my $url=GetURL($paper); + my $title = SanitizeText($paper->{title}); + my $url = GetURL($paper); + my $publication_type = GetPublicationType($paper->{publicationType}); + + &TitleCheck($title); print OUT < - - - $title - - - + + + $title + + END -my @authors = split /\s*\\and\s*/, $paper->{authors}; - my $seq='first'; + my @authors = split /\s*\\and\s*/, $paper->{authors}; + my $seq = 'first'; foreach my $author (@authors) { - print OUT < -END -$seq='additional'; - PrintAuthor($author); - print OUT < -END - + PrintAuthor($author, $seq); + $seq = 'additional'; } print OUT < - - $paper->{year} - - - $paper->{startpage} - $paper->{endpage} - - - $paper->{doi} - $timestamp - $url - + + + $paper->{year} + + + $paper->{startpage} + $paper->{endpage} + + + $paper->{doi} + $timestamp + $url + END -if (scalar(@{$paper->{bibliography}})) { + if (scalar(@{$paper->{bibliography}})) { print OUT < + END foreach my $citation (@{$paper->{bibliography}}) { PrintCitation($citation); } print OUT < + END -} + } print OUT < + END +} -} +############################################################### +# Crossref strings can contain a few so-called "face" HTML +# commands. Complain if they have anything anything else. +# schema doc: https://data.crossref.org/reports/help/schema_doc/4.4.2/schema_4_4_2.html#title +# face doc: https://www.crossref.org/education/content-registration/crossrefs-metadata-deposit-schema/face-markup/ +# mathml doc: https://www.crossref.org/education/content-registration/crossrefs-metadata-deposit-schema/including-mathml-in-deposits/ +# +# We don't technically validate the string, e.g., mismatched tags will +# go unnoticed here. The real validator at Crossref will catch whatever. +############################################################### +sub TitleCheck { + my $title = shift; + my $orig_title = $title; + + foreach my $tag (qw(b em i ovl scp strong sub sup tt u)) { + $title =~ s,<\s*/?$tag\s*>,,g; # eradicate <tag> and </tag> + } + + # <font> can (maybe?) take lots of extra attributes: + $title =~ s,<\s*/?font.*?>,,g; + # MathML is too complex; just wipe it all out. If there are + # problems, the real validator at Crossref will complain. + $title =~ s,<\s*mml:math.*/mml:math\s*>,,g; + + # No tags should remain. + if ($title =~ /</) { + die "$0: invalid tags remaining in: $title (original: $orig_title)\n"; + } +} ############################################################### -# Sanitization of a text string +# Simplistic TeX-to-html +# (no-op for rpi text if --input-is-xml was given). ############################################################### sub SanitizeText { my $string = shift; - $string = convert($string); - $string =~ s/\\newblock//g; - $string =~ s/\\bgroup//g; - $string =~ s/\\egroup//g; - $string =~ s/\\scshape//g; - $string =~ s/\\urlprefix//g; - $string =~ s/\\emph//g; - $string =~ s/\\textbf//g; - $string =~ s/\\enquote//g; - $string =~ s/\\url/URL: /g; - $string =~ s/\\doi/DOI: /g; - $string =~ s/\\\\/ /g; - $string =~ s/\$//g; - $string =~ s/\\checkcomma/,/g; - $string =~ s/~/ /g; - $string =~ s/[\{\}]//g; + return $string if $opts{xi}; # do nothing if --rpi-is-xml + return SanitizeTextAlways($string); +} + +# Split into two functions so we can sanitize bbl but not rpi. +sub SanitizeTextAlways { + my $string = shift; + + # pass user hook subroutine if defined. + my @hook = (defined(&{"LaTeX_ToUnicode_convert_hook"})) + ? ("hook" => \&LaTeX_ToUnicode_convert_hook) + : (); + + # conversion of accented control sequences to characters, etc. + # Let's use &#uuuu; entities instead of literal UTF-8; Crossref + # recommends it, and it's easier for postprocessing. + $string = LaTeX::ToUnicode::convert($string, entities => 1, @hook); + return $string; } ################################################################ -# Printing one author +# Printing one author in arg ORIG_AUTHOR, in sequence SEQ. ################################################################ sub PrintAuthor { - my $author=shift; + my ($orig_author,$seq) = @_; + + # recognize extra directives, either |organization| + # or |orcid=<value>|. + my $organization = 0; + my $orcid = 0; + my $author = ""; + my @name_parts = split (/\|/, $orig_author); + foreach my $np (@name_parts) { + $np =~ s/^\s*(.*)\s*$/$1/s; # remove leading and trailing whitespace + if ($np eq "organization") { + $organization = 1; + } elsif ($np =~ /^orcid/) { + ($orcid = $np) =~ s/^orcid\s*=//; + $orcid =~ s/\s//g; # remove all whitespace from value + if (! $orcid) { + warn "$0: ignoring empty orcid specified in: $orig_author\n"; + } + } elsif (! $np) { + # silently ignore empty part, as in || + } else { + if ($author) { + die ("$0: already saw author name `$author', should not" + . " have second: $np\n"); + } + $author = $np; + } + } + + if ($organization && $orcid) { + die ("$0: orcid and organization cannot both be present in:" + . " $orig_author\n"); + } + + # for organizations, nothing to do but output it. + if ($organization) { + my $line = SanitizeText($author); + print OUT <<END; + <organization>$line</organization> +END + return; + } + + # what's left is the common case of a person, not an organization. + print OUT <<END; + <person_name sequence="$seq" contributor_role="author"> +END + my $person=new BibTeX::Parser::Author ($author); if ($person->first) { - my $line = $person->first; - $line = SanitizeText($line); - print OUT <<END; - <given_name>$line</given_name> + my $line = $person->first; + $line = SanitizeText($line); + print OUT <<END; + <given_name>$line</given_name> END - } if ($person->last) { - my $line = SanitizeText($person->last); - if ($person->von) { - $line = SanitizeText($person->von)." $line"; - } - print OUT <<END; - <surname>$line</surname> + my $line = SanitizeText($person->last); + if ($person->von) { + $line = SanitizeText($person->von)." $line"; + } + print OUT <<END; + <surname>$line</surname> END - } if ($person->jr) { - my $line = SanitizeText($person->jr); - print OUT <<END; - <suffix>$line</suffix> + my $line = SanitizeText($person->jr); + print OUT <<END; + <suffix>$line</suffix> END + } + if ($orcid) { + print OUT <<END; + <ORCID>https://orcid.org/$orcid</ORCID> +END } + print OUT <<END; + </person_name> +END } ############################################################# @@ -427,35 +794,92 @@ END ############################################################# sub PrintCitation { my $paperhash=shift; + foreach my $key (keys (%{$paperhash})) { - my $citation=$paperhash->{$key}; - $citation=SanitizeText($citation); + my $citation = $paperhash->{$key}; + $citation = SanitizeTextAlways($citation); print OUT <<END; - <citation key="$key"> - <unstructured_citation> - $citation - </unstructured_citation> - </citation> + <citation key="$key"><unstructured_citation> + $citation + </unstructured_citation></citation> END + } } +############################################################## +# Return publication_type attribute for <journal_article>, given $PUBTYPE. +# https://data.crossref.org/reports/help/schema_doc/4.4.2/schema_4_4_2.html#publication_type.atts +# +# If not specified in input, return " publication_type=full_text" since +# it was hardwired that way before. If set to "omit", return empty +# string. Else return " publication_type=$PUBTYPE>, if the value +# is valid. If not, die. (Leading space is so result can be directly used.) +############################################################## +sub GetPublicationType { + my $pubtype = shift; + my $ret; + + if (! $pubtype) { + $ret = "full_text"; + } elsif ($pubtype eq "omit") { + $ret = ""; + } elsif ($pubtype =~ /^(abstract_only|full_text|bibliographic_record)$/) { + $ret = $pubtype; + } else { + die "$0: invalid publication_type: $pubtype\n"; + } + + $ret = " publication_type=\"$ret\"" if $ret; + return $ret; } ############################################################## -# Calculating URL +# Calculating URL. Res Philosophica gets special treatment. ############################################################## - sub GetURL { my $paper = shift; my $result; if ($paper->{paperUrl}) { - $result= $paper->{paperUrl} + $result = $paper->{paperUrl} + + } elsif ($paper->{doi} =~ m,^10\.11612/resphil,) { + my $doi = $paper->{doi}; + $result = 'http://www.pdcnet.org/oom/service?url_ver=Z39.88-2004&rft_val_fmt=&rft.imuse_synonym=resphilosophica&rft.DOI='.$doi.'&svc_id=info:www.pdcnet.org/collection'; + } else { - my $doi=$paper->{doi}; - $result= 'http://www.pdcnet.org/oom/service?url_ver=Z39.88-2004&rft_val_fmt=&rft.imuse_synonym=resphilosophica&rft.DOI='.$doi.'&svc_id=info:www.pdcnet.org/collection'; + die ("$0: paperUrl field is required\n " + . &debug_hash_as_string("whole hash", $paper)); } - $result =~ s/&/&/g; + + $result =~ s/&/&/g; # amp(ersand) return $result; } + + +############################################################## +# debug_hash_as_string($LABEL, HASH) +# +# Return LABEL followed by HASH elements, followed by a newline, as a +# single string. If HASH is a reference, it is followed (but no recursive +# derefencing). +############################################################### +sub debug_hash_as_string { + my ($label) = shift; + my (%hash) = (ref $_[0] && $_[0] =~ /.*HASH.*/) ? %{$_[0]} : @_; + + my $str = "$label: {"; + my @items = (); + for my $key (sort keys %hash) { + my $val = $hash{$key}; + $val = ".undef" if ! defined $val; + $key =~ s/\n/\\n/g; + $val =~ s/\n/\\n/g; + push (@items, "$key:$val"); + } + $str .= join (",", @items); + $str .= "}"; + + return "$str\n"; +} diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl index 4e8b8d1ac0..da7dbe9b6c 100644 --- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl @@ -49,7 +49,6 @@ $mirrors = { 'http://ftp.ktug.org/tex-archive/' => 1, 'https://cran.asia/tex/' => 1, 'https://ftp.harukasan.org/CTAN/' => 1, - 'https://ftp.kaist.ac.kr/pub/tex-archive/' => 1, 'https://mirror.kakao.com/CTAN/' => 1, 'https://mirror.navercorp.com/CTAN/' => 1, 'https://mirror.yongbok.net/ctan/' => 1, @@ -115,6 +114,7 @@ $mirrors = { 'https://packages.oth-regensburg.de/ctan/' => 1, }, 'Greece' => { + 'http://ftp.ntua.gr/mirror/ctan/' => 1, 'https://ftp.cc.uoc.gr/mirrors/CTAN/' => 1, }, 'Hungary' => { @@ -157,6 +157,7 @@ $mirrors = { 'https://ctan.ijs.si/tex-archive/' => 1, }, 'Spain' => { + 'https://ctan.javinator9889.com/' => 1, 'https://osl.ugr.es/CTAN/' => 1, }, 'Sweden' => { diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb index 2f12a6cf30..3073158f4a 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb @@ -26,11 +26,11 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2021 -depend revision/60676 +depend revision/60681 name 00texlive.image category TLCore -revision 60655 +revision 60682 shortdesc TeX Live files only in the source repository longdesc The files here are not copied by the installer and containers longdesc are not built for them; they exist only in the source @@ -4092,6 +4092,7 @@ runfiles size=12493 tlpkg/tlpsrc/trivfloat.tlpsrc tlpkg/tlpsrc/trsym.tlpsrc tlpkg/tlpsrc/truncate.tlpsrc + tlpkg/tlpsrc/truthtable.tlpsrc tlpkg/tlpsrc/tsemlines.tlpsrc tlpkg/tlpsrc/ttfutils.tlpsrc tlpkg/tlpsrc/tucv.tlpsrc @@ -4465,7 +4466,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd name 00texlive.installer category TLCore -revision 60665 +revision 60678 shortdesc TeX Live standalone installer package longdesc This package defines the files to go into the installer longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the @@ -68956,7 +68957,7 @@ containerchecksum f763ff9a6832abce7a148bc5e8b9e5860f883ce0a56ad2119d9e18e7fb4dad name collection-luatex category Collection -revision 60602 +revision 60681 shortdesc LuaTeX packages relocated 1 longdesc Packages for LuaTeX, a Unicode-aware extension of pdfTeX, using @@ -69027,11 +69028,12 @@ depend pyluatex depend selnolig depend spelling depend stricttex +depend truthtable depend typewriter depend uninormalize depend yamlvars -containersize 756 -containerchecksum 61a4ecd989f0d8ab7205f4a2e9e3ff029991615e9db25f643bfb18045bfa5198e4a2162a9667f87ad7f2396e8ead7d904f0074384e27ee11c8e7326ec3027bd1 +containersize 764 +containerchecksum 8ae9dbb4a9f357a337c23f63adbb20066eb7c34584e55936c73f9a12701e835e0d8f42d9b87c67faf3de55fe900f83b19cf493736c2112c4b8a08b1a422ef028 name collection-mathscience category Collection @@ -295303,7 +295305,7 @@ docfiles size=376 name texlive-scripts category TLCore -revision 60665 +revision 60678 shortdesc TeX Live infrastructure programs longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for longdesc tlmgr to run but still ours. Not included in tlcritical. @@ -295311,10 +295313,10 @@ depend texlive-scripts.ARCH depend texlive.infra execute addMap mathpple.map postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat -containersize 108292 -containerchecksum 2e923166eefec604948d17a8af8f7c5a8b61f561feb49eb556cfc76007e680c0f82081d65d4003a3366aa4d4e2b37ef5a821d3498e1643e2585192cc0789230f -doccontainersize 400432 -doccontainerchecksum 6c8ffa9154b1680e3a189aae9b869f6b125f73e9706fd5b47de6f17eb7931fc4d328d6961e22027e8b13398f8e35a0ece6a6c2c9105975c3738171be5fcd9e67 +containersize 108308 +containerchecksum 0541be1defd912c227b8dde1d89d8f956ac22105a602686fbff8f35e80fd71e11825c6697818a41fffd390a17f783b3108dd7c51e23e76be45751f7e8e33f56b +doccontainersize 400388 +doccontainerchecksum 0fce9d2fc6533e1a1a9050c6ee90143b56ae88a2851b9e8c79da2e381e5dab014828ff2cfbfca0a3cf3a9b9bd1ead4ec53d143497186580907b3b9c68732e30e docfiles size=496 doc.html texmf-dist/doc/man/man1/fmtutil-sys.1 @@ -310501,6 +310503,34 @@ catalogue-license pd catalogue-topics layout catalogue-version 3.6 +name truthtable +category Package +revision 60681 +shortdesc Automatically generate truth tables for given variables and statements +relocated 1 +longdesc This LuaLaTeX package permits to automatically generate truth +longdesc tables given a table header. It supports a number of logical +longdesc operations which can be combined as needed. It is built upon +longdesc the luacode package. +containersize 2036 +containerchecksum 46b48d27c8f6a61c3fec3ce32b337bdc3e3bf52090101d2a7953cbf088408d532bed47bfa8b74206571cc7823da6ef2fecd4e4b4cf602eedb60f8d650db3da92 +doccontainersize 105816 +doccontainerchecksum 0ce1368b7c88a1835f3fb4b27f58f5d47baf017f303e8b38494dbe8cfde0dc60bb13bf89041ac99f2e1a8e43350c8bd77609870b9147e8e09ec7c1201a305443 +docfiles size=33 + RELOC/doc/lualatex/truthtable/README.md details="Readme" + RELOC/doc/lualatex/truthtable/res/exampletable.tex + RELOC/doc/lualatex/truthtable/res/exampletableoutput.tex + RELOC/doc/lualatex/truthtable/truthtable.pdf details="Package documentation" + RELOC/doc/lualatex/truthtable/truthtable.tex +runfiles size=1 + RELOC/tex/lualatex/truthtable/truthtable.sty +catalogue-contact-bugs https://github.com/K-Trout/truthtable/issues +catalogue-contact-repository https://github.com/K-Trout/truthtable +catalogue-ctan /macros/luatex/latex/truthtable +catalogue-license lppl1.3c +catalogue-topics maths logic luatex +catalogue-version 0.0.1 + name tsemlines category Package revision 23440 @@ -328283,7 +328313,7 @@ catalogue-topics biblatex name wintools.win32 category TLCore -revision 58783 +revision 60682 shortdesc utilities provided only for Windows longdesc Common utilities, mainly from the w32tex distribution. postaction filetype name="TL.PSViewer.view" cmd='"TEXDIR/bin/win32/psviewer.exe" "%1"' @@ -328298,11 +328328,11 @@ postaction progid extension=.png filetype="TL.bitmap2eps.convert" postaction progid extension=.ps filetype="TL.PSViewer.view" postaction progid extension=.tif filetype="TL.bitmap2eps.convert" postaction progid extension=.tiff filetype="TL.bitmap2eps.convert" -containersize 5338756 -containerchecksum c7a0f2956f8c3c2fd0b24c886486f7bde527f8efb35fe44262162d917bfffe3f944db665e3b18e9b423baf88f95953ef048ae17fb33de0e7951c157d4dfc3b05 -doccontainersize 998704 -doccontainerchecksum b7309f3cdb9a6f5bc4a0c3de6cb8356c319f4ae6e1333c9eaaef514d5393e02423c7097b51eebd5f304e561482a18ed384caa77511fac43dd795e0ce60a29145 -docfiles size=342 +containersize 5120404 +containerchecksum 2f6870ff7c84f7c5ebc220aea653a59ef37ead291b15e6c3d015882123ef9bb0013e87131e4b848f027903007976a6f578aa4dd4a309a8673ddf556cd5f3ece1 +doccontainersize 983380 +doccontainerchecksum ca0ed770221cf122843765ee7e21148744bc57895beb62b6fbe10d2000b21bab844ba7894fa7244091969e177d0f71660b3054d52aff3c72c28b61aabda80c17 +docfiles size=334 texmf-dist/doc/psviewer/psviewer.README texmf-dist/doc/psviewer/psviewer.ico texmf-dist/doc/psviewer/psviewer.svg @@ -328330,7 +328360,6 @@ docfiles size=342 texmf-dist/doc/support/wintools/pdfimages.pdf texmf-dist/doc/support/wintools/pdfinfo.pdf texmf-dist/doc/support/wintools/pdfseparate.pdf - texmf-dist/doc/support/wintools/pdfsig.pdf texmf-dist/doc/support/wintools/pdftocairo.pdf texmf-dist/doc/support/wintools/pdftohtml.pdf texmf-dist/doc/support/wintools/pdftoppm.pdf @@ -328344,7 +328373,7 @@ runfiles size=4 texmf-dist/scripts/psviewer/psviewer.vbs texmf-dist/scripts/tlaunch/tlaunchmode.pl texmf-dist/web2c/tlaunch.ini -binfiles arch=win32 size=8660 +binfiles arch=win32 size=8141 bin/win32/aftopl.exe bin/win32/bitmap2eps.exe bin/win32/bmeps.exe @@ -328360,7 +328389,6 @@ binfiles arch=win32 size=8660 bin/win32/pdfimages.exe bin/win32/pdfinfo.exe bin/win32/pdfseparate.exe - bin/win32/pdfsig.exe bin/win32/pdftocairo.exe bin/win32/pdftohtml.exe bin/win32/pdftoppm.exe diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 index f9734d1c99..9c86603b3e 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 @@ -1 +1 @@ -b30bf1e67d43ce6264ed89a96c4bd266 texlive.tlpdb +86c2fd0087e1ef4feb1e028988bb092f texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 index 4b11fdb195..a72ee7fa70 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 @@ -1 +1 @@ -be4b6623150a88cbdf0883fb011484a08629eda60c9f8dc9260ab8d073f81bb4a1a3941443faad2893bd504ec2ae1eb0efef9fdc99384aef231352377161f28e texlive.tlpdb +f97aca42fd334ff53b99f13092156de0bd2694b38a18cdd3bc33d178259a08d0e46e3be5cf022773f0424eed2d91ac5d7c9ed376b360bbf00b5c91339ce721d6 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc index 0e9e04a89b..f4964777f9 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc @@ -1,10 +1,10 @@ -----BEGIN PGP SIGNATURE----- -iQEcBAEBCgAGBQJhV6BRAAoJEEzhh34ZQ4xwsXwH/26OwRNGIq6k4+bA2iTNPMhp -y05CFft7OEL36cIc14vdba3AhVQgNPLvNxFTT6EvjiKPOso95Us10y3FFt5iz7L7 -ftkbv4a4SUWgBAcc/iRHtKXJI2U/KuYTuBUiFLJ4ZJbBOIGzonmXCsBL0WoLcVYe -tQsceLXK+5CVwvqK4J2CXHcMUJ1JIFO6YLSk1yeAdXyK2svnaR3WQBCtbEu41LU0 -iiZCkTlFHjhEzkanKyN6o4QIcrSzsYn2xgiQHK2RIHXBISKGIcuJxWytQKfXRVZX -jOVMG6jMNiqWdbnXxxnAty9u2m0MRYE/+b5uB8jD9/MduKBQpBcyf5EMa7JR3j0= -=06pQ +iQEcBAEBCgAGBQJhWPGOAAoJEEzhh34ZQ4xwfvUH/2y5w6ePvlTZy8mOnsRRhQlO +TyhWkJFR0MAIfLNqbyh38KKFHKkgQWru8VjZ1L/MzqHR3aNnzkfVT5zycsFsfhCz +lFnOT3QSVwHunFzZhAoOFMzuMkBKdjocH+uhmOnEIeHDQU4MpY1D/2SnQ8rn6Xhn +jgNWJYv+YpNav2eoxjHspKIkx7zCWy16jPrVYXtQaV5MkRgADZ2D8zl4eDTI3wiH +PJRrtBlcfNRqBY82IVkVrWQPZQ8K4Xor02Mn6H/gSNedHlWSuZ56JtlAf2SasZAz +xWTrAksVIbvLtqkvch2femqA+bd9wEwNwJJswdY2u6m2Pd4T3Yvdqy4CcbGiCA8= +=mhyN -----END PGP SIGNATURE----- diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz index 43f7c6072f..46766010de 100644 Binary files a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz and b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz differ diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini index d375d85ef1..db9545ff1b 100644 --- a/systems/win32/miktex/tm/packages/next/pr.ini +++ b/systems/win32/miktex/tm/packages/next/pr.ini @@ -1,13 +1,13 @@ [repository] -date=1633119366 +date=1633205734 lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9 -lstdigest=3c5620f1f90f305114a8cfdf8abb7f07 +lstdigest=b8920c3a38d68c11c3e691ef0d2b30f1 numpkg=4816 relstate=next -version=7944 +version=7945 ;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows. ;;;;-----BEGIN MIKTEX SIGNATURE----- -;;;; signature/miktex: emuH9AqCQboFyMNKggeRZnm6Pk3Uj85AFT1GpOosfImWdXlRH1OAX0t1BW3ubKg3w0esC7YOqy3Sqz5EL5lpfWn6oaIpaHYOFnHuM5ZsHevy5EdQ2RlDbGaK3GpdNpmlfH2Ml9XN6+m4nPaMRtZ1Ug0Bwm+ZxqKQ1IjEIA7BajCMB2u9wpxIgNjoEUJFonzvqtWW+pSqksIu0WfKdPWIFXKsvss3uxm53avSjBa6vMzU9OPertynwI8FxyyqO9pQ9jhZ/EpimOFwFh6kE+6USGYTxOTdeWa9AuFWMNM9TLZQk6cSqVeyoYITdnoV71vsB5QYBnLUDaFnX9iQgBowkQ== +;;;; signature/miktex: IQGpCsvR5Rzvxr6SQaxpAs8lDYIk10VY37zqWDKoPoYG3VWgMEsAZpNrMOmMI9pZdCXvbbf9fbaRfgQKX98Y414030t6gzomhefODdzmVLkM7rfQaLVFygnSYnVKsiVQYzZ2eStwD41XJ+bXBZEtXwndY1nBB+bhRIMxYvjwaPh5Y1SNTzno4xQjUfIF+Eyl3OE/Rg01Ew4VK5FSb288DDGtsgMLRIAfuZrgBX9knFfL0CC2fCtZNFZYjrelic4BTNy8Y+xN3bmmMJQJ2PAnJQZ4YJky9G0Ee0vBxMIo6X1zkGv4qjyeNkg6+v/OVJkOduGy6v+qh5yEkYBpVrE6CQ== ;;;;-----END MIKTEX SIGNATURE----- diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini index db8e283ed1..130fd1faee 100644 --- a/systems/win32/miktex/tm/packages/pr.ini +++ b/systems/win32/miktex/tm/packages/pr.ini @@ -1,13 +1,13 @@ [repository] -date=1633119092 +date=1633205482 lastupd=clicks clicks__doc clicks__source dtk-bibliography dtk-bibliography__source exesheet exesheet__doc exesheet__source expkv-def expkv-def__doc expkv-def__source light-latex-make light-latex-make__doc light-latex-make__source luakeys luakeys__doc luakeys__source luatexja luatexja__doc luatexja__source -lstdigest=5f7ec07daea262d5fd50f537a884e26b +lstdigest=b64bd2293c1542c5c30a52e8d1c72c45 numpkg=4816 relstate=stable -version=7944 +version=7945 ;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows. ;;;;-----BEGIN MIKTEX SIGNATURE----- -;;;; signature/miktex: kdbge4R3EXirYAyNX/ojG4fYNpYU3jIhlnvR6sb08LrXmip7ZkRUO7kBiCArC2xiaCelLn/wFJiMk+ohX7yzLLUYNwMwgGD+6l5TQz0NNODbJrpNEO1G6bNYWDsQW2t90FAZp9wNM8Y/KlQUQDFDXvIagTyvimM5ri2eR/gRCP3vkaFttGreQANW0tzNE+5HeNQZPxTAHq1Wav5maOivfjr6xTLMfhV/erUQu0Lrht5H9BlOnf0X6zFIXOFVmpJjCxDJgA3T4jA2VVzLPcdjBmYNV/FM4UdK2+8rtxt1JN+3jsQpVUn2L6l0K8k2ndJKezQG4dQpvR9YPImzH2Gn0Q== +;;;; signature/miktex: xKCmcsrGYGZs+SRmki1WqrD3l/89lE/22/vHlFuOePQs4+sBUigOlOmCgTKNv43V5nLoLBdRMxKtf8HKBwROvI63+PN1ehQXFfRyKLeXdbbdiG5X0ESFxVYiZ/kEAuIW/zYoLdiAwD4N5yVZyXN56Jzv8naLHa+FymP/QyZNMTrixdnQk1hlASEKDIkfsPPzVzzzWhA71wLyo1mnHrrIWfzaGWUCzBf48hTNN824OqCpgYA6Asjqxp+s58gjzWJ2jOeZN+CxgdrbSLbr82oqf/m05YgUD+9qne/PS5LxDrQcq05bZ6OpR6zbjl5+NJj6t8Rj7AcuQAKmTPRfPj3exQ== ;;;;-----END MIKTEX SIGNATURE----- diff --git a/timestamp b/timestamp index 867a9da113..61e0654dfa 100644 --- a/timestamp +++ b/timestamp @@ -2,4 +2,4 @@ # The source CTAN of this site's material: dante.ctan.org # The year-month-day-hour-minute of this site's material: -2021-10-02-02-02 +2021-10-03-02-02 -- cgit v1.2.3